_version = $version; $this->_token = AWWLM_TOKEN; $this->file = $file; $this->dir = dirname( $this->file ); $this->assets_dir = trailingslashit( $this->dir ) . 'assets'; $this->assets_url = esc_url( trailingslashit( plugins_url( '/assets/', $this->file ) ) ); $this->script_suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; if ($this->check_woocommerce_active()) { //reg activation hook register_activation_hook( $this->file, array( $this, 'install' ) ); //reg admin menu add_action( 'admin_menu', array( $this, 'register_root_page' ) ); //enqueue scripts & styles add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 10, 1 ); add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_styles' ), 10, 1 ); $plugin = plugin_basename($this->file); //add action links to link to link list display on the plugins page add_filter( "plugin_action_links_$plugin", array( $this, 'add_settings_link' ) ); // deactivation form add_action('admin_footer', array($this, 'awwlm_deactivation_form')); } } /** * * * Ensures only one instance of AWWLM is loaded or can be loaded. * * @return Main AWWLM instance * @see WordPress_Plugin_Template() * @since 1.0.0 * @static */ public static function instance($file = '', $version = '1.0.0') { if (is_null(self::$_instance)) { self::$_instance = new self($file, $version); } return self::$_instance; } /** * Creating admin pages */ public function register_root_page() { $this->hook_suffix[] = add_menu_page( __('Wishlist For WooCommerce', 'aco-wishlist-for-woocommerce'), __('Wishlist', 'aco-wishlist-for-woocommerce'), 'manage_woocommerce', AWWLM_TOKEN.'_admin_ui', array($this, 'admin_ui'), esc_url($this->assets_url) . '/images/icon.png', 25); // $this->hook_suffix[] = add_submenu_page( AWWLM_TOKEN.'_admin_ui', __('Settings', 'aco-wishlist-for-woocommerce'), __('Settings', 'aco-wishlist-for-woocommerce'), 'manage_woocommerce', AWWLM_TOKEN.'_settings_ui', array($this, 'admin_ui_settings')); } public function check_woocommerce_active() { if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) { return true; } if (is_multisite()) { $plugins = get_site_option('active_sitewide_plugins'); if (isset($plugins['woocommerce/woocommerce.php'])) return true; } return false; } /** * Calling view function for admin page components */ public function admin_ui() { AWWLM_Backend::view('admin-root', []); } /** * Adding new link(Configure) in plugin listing page section */ public function add_settings_link($links) { $settings = '' . __( 'Settings', 'aco-wishlist-for-woocommerce' ) . ''; array_push( $links, $settings ); return $links; } /** * Including View templates */ static function view( $view, $data = array() ) { //extract( $data ); include( plugin_dir_path(__FILE__) . 'views/' . $view . '.php' ); } /** * Load admin CSS. * @access public * @return void * @since 1.0.0 */ public function admin_enqueue_styles($hook = '') { $currentScreen = get_current_screen(); $screenID = $currentScreen->id; // if (strpos($screenID, 'awwlm_') !== false) { wp_register_style($this->_token . '-admin', esc_url($this->assets_url) . 'css/backend.css', array(), $this->_version); wp_enqueue_style($this->_token . '-admin'); } } /** * Load admin Javascript. * @access public * @return void * @since 1.0.0 */ public function admin_enqueue_scripts($hook = '') { if (!isset($this->hook_suffix) || empty($this->hook_suffix)) { return; } wp_enqueue_media(); // Page List $WpPageList = get_pages( array('exclude' => array(wc_get_page_id( 'myaccount' )) ) ); $WpPageList = array_map(function ($v) { return ['id' => $v->ID, 'name' => $v->post_title]; }, $WpPageList); $screen = get_current_screen(); wp_enqueue_script('jquery'); // deactivation form js if ( $screen->id == 'plugins' ) { wp_enqueue_script($this->_token . '-deactivation-message', esc_url($this->assets_url).'js/message.js', array()); } if ( in_array( $screen->id, $this->hook_suffix ) ) { if ( !wp_script_is( 'wp-i18n', 'registered' ) ) { wp_register_script( 'wp-i18n', esc_url( $this->assets_url ) . 'js/i18n.min.js', array('jquery'), $this->_version, true ); } wp_enqueue_script( $this->_token . '-backend', esc_url( $this->assets_url ) . 'js/backend.js', array('wp-i18n'), $this->_version, true ); wp_localize_script( $this->_token . '-backend', 'awwlm_object', array( 'api_nonce' => wp_create_nonce('wp_rest'), 'root' => rest_url('awwlm/v1/'), 'text_domain' => 'aco-wishlist-for-woocommerce', 'assets_url' => $this->assets_url, 'pageList' => (array)$WpPageList, ) ); wp_set_script_translations($this->_token . '-backend', 'aco-wishlist-for-woocommerce' ); } } /** * Deactivation form */ public function awwlm_deactivation_form() { $currentScreen = get_current_screen(); $screenID = $currentScreen->id; if ( $screenID == 'plugins' ) { $view = '

If you have a moment, please let us know why you are deactivating this plugin. All submissions are anonymous and we only use this feedback for improving our plugin.











Cancel Skip & Deactivate
'; echo $view; } ?> _version); } /** * Unserializing instances of this class is forbidden. * * @since 1.0.0 */ public function __wakeup() { _doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?'), $this->_version); } /** * Installation. Runs on activation. * @access public * @return void * @since 1.0.0 */ public function install() { $this->_log_version_number(); $wsettings = new AWWLM_Wishlist(); $wsettings->awwlm_register_wishlist_page(); $wsettings->awwlm_register_default_settings(); flush_rewrite_rules(); } /** * Log the plugin version number. * @access public * @return void * @since 1.0.0 */ private function _log_version_number() { update_option($this->_token . '_version', $this->_version); } }