AlkantarClanX12
Current Path : /home/thanudqk/www/wp-content/plugins/LayerSlider/assets/wp/ |
Current File : /home/thanudqk/www/wp-content/plugins/LayerSlider/assets/wp/activation.php |
<?php // Prevent direct file access defined( 'LS_ROOT_FILE' ) || exit; // Activation events add_action('admin_init', 'layerslider_v7_redirect'); add_action('admin_init', 'layerslider_activation_redirect'); // Activation and de-activation hooks add_action('init', 'layerslider_activation_routine'); register_activation_hook(LS_ROOT_FILE, 'layerslider_activation'); register_deactivation_hook(LS_ROOT_FILE, 'layerslider_deactivation_scripts'); register_uninstall_hook(LS_ROOT_FILE, 'layerslider_uninstall_scripts'); // Update handler $oldVersion = get_option( 'ls-plugin-version', '1.0.0' ); if( $oldVersion !== LS_PLUGIN_VERSION ) { update_option( 'ls-plugin-version', LS_PLUGIN_VERSION ); add_action('init', function() use ( $oldVersion ) { layerslider_update_scripts( $oldVersion, LS_PLUGIN_VERSION ); }); } function layerslider_v7_redirect() { if( ! empty( $_GET['page'] ) && $_GET['page'] === 'layerslider' ) { $capability = get_option('layerslider_custom_capability', 'manage_options'); if( is_admin() && current_user_can( $capability ) ) { $lastWelcome = get_user_meta( get_current_user_id(), 'ls-v7-welcome-screen-date', true ); if( ! $lastWelcome ) { update_user_meta( get_current_user_id(), 'ls-v7-welcome-screen-date', time() ); wp_redirect( admin_url( 'admin.php?page=layerslider§ion=about' ) ); exit; } } } } // Redirect to LayerSlider's main admin page after plugin activation. // Should not trigger on multisite bulk activation or after upgrading // the plugin to a newer versions. function layerslider_activation_redirect() { if( get_option( 'layerslider_do_activation_redirect', false ) ) { delete_option( 'layerslider_do_activation_redirect' ); if( isset( $_GET['activate'] ) && ! isset( $_GET['activate-multi'] ) ) { wp_redirect( admin_url( 'admin.php?page=layerslider§ion=about' ) ); exit; } } } function layerslider_activation( ) { // Plugin activation routines should take care of this, but // call DB scripts anyway to avoid user intervention issues // like partially removing the plugin by only deleting the // database table. layerslider_create_db_table(); // Call "activated" hook if( has_action('layerslider_activated') ) { do_action('layerslider_activated'); } // Redirect to LS's admin page after activation update_option('layerslider_do_activation_redirect', 1); } function layerslider_activation_routine( ) { // Bail out early if everything is up-to-date // and there is nothing to be done. if( ! version_compare( get_option('ls-db-version', '1.0.0'), LS_DB_VERSION, '<' ) ) { return; } // Update database layerslider_create_db_table(); update_option('ls-db-version', LS_DB_VERSION); // Install date if( ! get_option('ls-date-installed', 0) ) { // Subtracting a few seconds to offset some timing // issues that may occur in rare situations. update_option('ls-date-installed', time()-500 ); } // Fresh installation if( ! get_option('ls-installed', false ) ) { update_option('ls-installed', 1); // Try to auto register license $GLOBALS['LS_AutoUpdate']->attemptAutoActivation(); // Call "installed" hook if(has_action('layerslider_installed')) { do_action('layerslider_installed'); } } } function layerslider_update_scripts( $oldVersion, $currentVersion ) { // Make sure database is up-to-date, // perform any changes that might be // required by an update. layerslider_activation_routine(); // Make sure to empty all caches due // to any potential data handling changes // introduced in an update. if( function_exists( 'layerslider_delete_caches' ) ) { layerslider_delete_caches(); } // Run our any update function we may // provide for the affected versions. layerslider_run_upgrade_scripts( $oldVersion ); // Attempt to empty all 3rd party plugin // caches when it's enabled. It can help // when there are changes in the markup // or plugin files. if( get_option('ls_clear_3rd_party_caches', true ) ) { ls_empty_3rd_party_caches(); } // Update remote data such as the quick release log // displayed on LayerSlider's main screen to make sure // the new version already has an entry there. LS_RemoteData::update(); // Trigger 'layerslider_updated' action // hook, so 3rd parties can run their own // updates scripts (if any). if( has_action( 'layerslider_updated' ) ) { do_action( 'layerslider_updated' ); } } function layerslider_run_upgrade_scripts( $oldVersion ) { include LS_ROOT_PATH.'/wp/upgrades.php'; foreach( $upgrades as $upgradeVersion => $upgradeCallback ) { if( version_compare( $oldVersion, $upgradeVersion, '<' ) ) { $upgradeCallback(); } } } function layerslider_create_db_table() { global $wpdb; $charset_collate = ''; // Get DB collate if( ! empty($wpdb->charset) ) { $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; } if( ! empty($wpdb->collate) ) { $charset_collate .= " COLLATE $wpdb->collate"; } require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); // Table for Sliders dbDelta("CREATE TABLE {$wpdb->prefix}layerslider ( id int(10) NOT NULL AUTO_INCREMENT, group_id int(10), author int(10) NOT NULL DEFAULT 0, name varchar(100) DEFAULT '', slug varchar(100) DEFAULT '', data mediumtext NOT NULL, date_c int(10) NOT NULL, date_m int(10) NOT NULL, schedule_start int(10) NOT NULL DEFAULT 0, schedule_end int(10) NOT NULL DEFAULT 0, flag_dirty tinyint(1) NOT NULL DEFAULT 0, flag_hidden tinyint(1) NOT NULL DEFAULT 0, flag_deleted tinyint(1) NOT NULL DEFAULT 0, flag_popup tinyint(1) NOT NULL DEFAULT 0, flag_group tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (id) ) $charset_collate;"); // Table for Slider Drafts dbDelta("CREATE TABLE {$wpdb->prefix}layerslider_drafts ( id int(10) NOT NULL AUTO_INCREMENT, slider_id int(10) NOT NULL, author int(10) NOT NULL DEFAULT 0, data mediumtext NOT NULL, date_c int(10) NOT NULL, date_m int(10) NOT NULL, PRIMARY KEY (id), UNIQUE KEY slider_id (slider_id) ) $charset_collate;"); // Table for Slider Revisions dbDelta("CREATE TABLE {$wpdb->prefix}layerslider_revisions ( id int(10) NOT NULL AUTO_INCREMENT, slider_id int(10) NOT NULL, author int(10) NOT NULL DEFAULT 0, data mediumtext NOT NULL, date_c int(10) NOT NULL, PRIMARY KEY (id) ) $charset_collate;"); } // Utility function to verify database tables. // Returns true if no issues were detected. function layerslider_verify_db_tables() { global $wpdb; // Step 1: Check DB version if( version_compare( get_option('ls-db-version', '1.0.0'), LS_DB_VERSION, '<' ) ) { return false; } // Step 2: Verify that the DB tables exist $layerslider = $wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}layerslider'"); $layerslider_revisions = $wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}layerslider_revisions'"); if( empty( $layerslider ) || empty( $layerslider_revisions ) ) { return false; } // Step 3: Some hand picked things to look for $popup = $wpdb->get_var("SHOW COLUMNS FROM `{$wpdb->prefix}layerslider` LIKE 'flag_group'"); if( empty( $popup ) ) { return false; } // No error, just return true return true; } function layerslider_deactivation_scripts() { // Remove capability option, so a user can restore // his access to the plugin if set the wrong capability // delete_option('layerslider_custom_capability'); // Call user hooks if(has_action('layerslider_deactivated')) { do_action('layerslider_deactivated'); } } function layerslider_uninstall_scripts() { // Call user hooks update_option('ls-installed', 0); if(has_action('layerslider_uninstalled')) { do_action('layerslider_uninstalled'); } } ?>