* @since 1.0.0 * @version 1.0.0 * @copyright 2015-2018 Eoxia * @package EO_Framework\EO_Update_Manager\Action */ namespace eoxia; if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Classe de gestion des "actions" pour le module de mise à jour des données suite aux différentes version de l'extension */ class Update_Manager_Action { /** * Définition du namespace courant pour le module de mise à jour. * * @var string */ protected $current_plugin_slug = null; /** * Instanciation de la classe de gestions des mises à jour des données suite aux différentes versions de l'extension * * @since 1.0.0 * @version 1.0.0 */ public function __construct() { $element_namespace = new \ReflectionClass( get_called_class() ); $this->current_plugin_slug = str_replace( '_', '-', $element_namespace->getNamespaceName() ); add_action( 'admin_enqueue_scripts', array( $this, 'callback_admin_scripts' ) ); } /** * Charges le CSS et le JS de WPEO_Update_Manager * * @since 1.0.0 * @version 1.0.0 */ public function callback_admin_scripts() { wp_enqueue_style( 'wpeo_update_manager_style', \eoxia\Config_Util::$init['eo-framework']->wpeo_update_manager->url . '/assets/css/style' . ( WP_DEBUG ? '' : '.min' ) . '.css', array() ); wp_enqueue_script( 'wpeo_update_manager_script', \eoxia\Config_Util::$init['eo-framework']->wpeo_update_manager->url . '/assets/js/wpeo-update-manager.js', array( 'jquery', 'jquery-form' ), \eoxia\Config_Util::$init['eo-framework']->wpeo_update_manager->version ); } /** * On récupère la version actuelle de l'extension principale pour savoir si une mise à jour est nécessaire * On regarde également si des mises à jour n'ont pas été faite suite à un suivi des mises à jours non régulier * * @since 1.0.0 * @version 1.0.0 */ public function automatic_update_redirect() { $waiting_updates = get_option( Config_Util::$init[ $this->current_plugin_slug ]->key_waiting_updates, array() ); if ( ! strpos( $_SERVER['REQUEST_URI'], 'admin-ajax.php' ) ) { $current_version_to_check = (int) str_replace( '.', '', Config_Util::$init[ $this->current_plugin_slug ]->version ); $last_version_done = (int) get_option( Config_Util::$init[ $this->current_plugin_slug ]->key_last_update_version, Config_Util::$init[ $this->current_plugin_slug ]->update_manager->first_version ); if ( 3 === strlen( $current_version_to_check ) ) { $current_version_to_check *= 10; } if ( $last_version_done !== $current_version_to_check ) { $update_data_path = Config_Util::$init[ $this->current_plugin_slug ]->update_manager->path . 'data/'; for ( $i = ( (int) substr( $last_version_done, 0, 4 ) + 1 ); $i <= $current_version_to_check; $i++ ) { if ( is_file( $update_data_path . 'update-' . $i . '-data.php' ) ) { require_once $update_data_path . 'update-' . $i . '-data.php'; $waiting_updates[ $i ] = $datas; update_option( Config_Util::$init[ $this->current_plugin_slug ]->key_waiting_updates, $waiting_updates ); } } } } } /** * Ajoutes une page invisible qui vas permettre la gestion des mises à jour. * * @return void * * @since 1.0.0 * @version 1.0.0 */ public function callback_admin_menu() { $element_namespace = new \ReflectionClass( get_called_class() ); $current_plugin_update_manager = '\\' . $element_namespace->getNamespaceName() . '\Update_Manager'; add_submenu_page( 'eo-update-manager-' . $this->current_plugin_slug, __( 'Update Manager', 'eoxia' ), __( 'Update Manager', 'eoxia' ), 'manage_options', Config_Util::$init[ $this->current_plugin_slug ]->update_page_url, array( $current_plugin_update_manager::g(), 'display' ) ); } }