$plugin_version)); } // When plugin is de-activated public static function deactivate() { $amp_supremacy_data = get_plugin_data(AMP_FILE); $plugin_version = $amp_supremacy_data['Version']; MAMP_Model::updateInstallationStatus(0, $plugin_version); } // When plugin is uninstalled public static function uninstall() { $amp_supremacy_data = get_plugin_data(AMP_FILE); $plugin_version = $amp_supremacy_data['Version']; MAMP_Model::updateInstallationStatus(2, $plugin_version); self::removeTables(); } // When plugin is upgraded public static function upgrade() { $amp_supremacy_stat_id = get_option('amp_supremacy_stat_id', -1); $plugin_version = plugin_get_version(); if ($amp_supremacy_stat_id == -1) { MAMP_Model::writeInstallationStatusActivated(array('plugin_version' => $plugin_version)); } else { MAMP_Model::updateInstallationStatus(null, $plugin_version); } } // Endpoint public static function addEndPoint() { add_rewrite_endpoint('amp', EP_PAGES | EP_PERMALINK | EP_ALL_ARCHIVES | EP_ROOT); add_post_type_support('post', 'amp'); add_filter('request', array('AMP_Init', 'checkIfRequestHasAmp')); flush_rewrite_rules(); } public static function checkIfRequestHasAmp($query_vars) { if (isset($query_vars['amp']) && '' === $query_vars['amp']) { $query_vars['amp'] = 1; } return $query_vars; } // Init hooks public static function hooks() { add_action('admin_menu', array('AMP_Init', 'createPages')); add_action('admin_init', array('AMP_Init', 'loadAssets')); add_action('init', array('AMP_Init', 'addEndPoint')); // AMP_Post add_action('admin_post_amp_save_options', array('AMP_Post', 'saveOptions')); add_action('admin_enqueue_scripts', array('AMP_Init', 'my_plugin_assets_in_admin')); add_action('admin_notices', array('AMP_Init', 'get_amp_sitemap_notice')); } // Register all Scripts and Styles that are being used somewhere public static function loadAssets() { // Scripts wp_register_script('amp_uikit', AMP_URL . 'assets/js/uikit/uikit.min.js', array('jquery'), true); wp_register_script('amp_uikit_notify', AMP_URL . 'assets/js/uikit/components/notify.min.js', array('jquery'), true); wp_register_script('amp_uikit_accordion', AMP_URL . 'assets/js/uikit/components/accordion.min.js', array('jquery'), true); wp_register_script('amp_uikit_lightbox', AMP_URL . 'assets/js/uikit/components/lightbox.min.js', array('jquery'), true); wp_register_script('amp_ajaxq', AMP_URL . 'assets/js/ajaxq.js', array('jquery'), true); wp_register_script('amp_spectrum', AMP_URL . 'assets/js/vendor/spectrum.js', array('jquery'), true); //new scripts(wp-2nd-jan) wp_register_script('amp_sticky', AMP_URL . 'assets/src/js/components/sticky.js', array('jquery'), true); wp_register_script('amp_uikit_tooltip', AMP_URL . 'assets/js/uikit/components/tooltip.min.js', array('jquery'), true); // Page Specific Scripts /** Load Global JS * */ wp_register_script('amp_main', AMP_URL . 'assets/js/main.js', array('jquery'), true); /** * Add a global JS object to main script */ wp_localize_script('amp_main', 'amp_data', array( 'wp_get' => admin_url('admin-ajax.php'), 'wp_post' => admin_url('admin-post.php'), 'plugins_url' => plugins_url() ) ); // Styles wp_register_style('amp_uikit', AMP_URL . 'assets/css/uikit/uikit.gradient.min.css'); wp_register_style('amp_uikit_progress', AMP_URL . 'assets/css/uikit/components/progress.gradient.min.css'); wp_register_style('amp_uikit_notify', AMP_URL . 'assets/css/uikit/components/notify.min.css'); wp_register_style('amp_font-awesome', AMP_URL . 'assets/css/vendor/font-awesome.min.css'); wp_register_style('amp_spectrum', AMP_URL . 'assets/css/vendor/spectrum.css'); wp_register_style('amp_main', AMP_URL . 'assets/css/main.css'); } public static function my_plugin_assets_in_admin() { wp_register_script('amp_admin_js', AMP_URL . 'assets/js/amp_admin.js', array('jquery'), '1.0', true); wp_localize_script('amp_admin_js', 'amp_data', array( 'wp_get' => admin_url('admin-ajax.php'), 'wp_post' => admin_url('admin-post.php'), 'plugins_url' => plugins_url() ) ); wp_enqueue_script('amp_admin_js', AMP_URL . 'assets/js/amp_admin.js', array('jquery'), '1.0', true); wp_enqueue_style('amp_admin_css', AMP_URL . 'assets/css/amp_admin.css'); } public static function addPagePostCustomOptionsBox() { $amp_supremacy_menu_logo = plugins_url('amp-supremacy/assets/img/logo_menu.png'); $amp_settings_page_url = admin_url('admin.php?page=amp-settings'); $amp_settings_page_head = '  AMP Supremacy Options'; add_meta_box('ampsupremacy_object_custom_options', __($amp_settings_page_head), 'AMP_Init::pagePostCustomOptionsBoxWidget', 'post', 'side'); add_meta_box('ampsupremacy_object_custom_options', __($amp_settings_page_head), 'AMP_Init::pagePostCustomOptionsBoxWidget', 'page', 'side'); } public static function saveCustomBoxData($post) { if(isset($_POST['amps_use_custom_settings']) && isset($_POST['amps'])){ $amps_use_custom_settings = $_POST['amps_use_custom_settings']; $custom_options = $_POST['amps']; if (isset($amps_use_custom_settings) && $amps_use_custom_settings == 0) { foreach ($custom_options as $this_key => $this_val) { $custom_options[$this_key] = 0; } } update_post_meta($post, AMP_CUSTOM_SETTINGS_SWITCH, $amps_use_custom_settings); update_post_meta($post, AMP_CUSTOM_SETTINGS, $custom_options); } } /** * Outputs the content of the meta box for AMP on-off on specific pages */ public static function pagePostCustomOptionsBoxWidget($post) { $amps_use_custom_settings_option = get_post_meta($post->ID, AMP_CUSTOM_SETTINGS_SWITCH, TRUE); $amps_use_custom_settings = get_post_meta($post->ID, AMP_CUSTOM_SETTINGS, TRUE); $thisCustomSettingsCheckBoxChecked = (isset($amps_use_custom_settings_option) && !empty($amps_use_custom_settings_option)) ? 'checked' : ''; echo ''; $checkBoxControls = array( 'enable' => 'Disable AMP', 'load_seo' => 'Load SEO Data', 'hide_post_date' => 'Hide Post Date', 'hide_post_author_name' => 'Hide Post Author Name', 'hide_post_tags' => 'Hide Post Tags', 'hide_post_categories' => 'Hide Post Categories', ); $dispayOptions = array(); foreach ($checkBoxControls as $kControlName => $checkBoxControl) { $thisCheckBoxChecked = (isset($amps_use_custom_settings[$kControlName]) && !empty($amps_use_custom_settings[$kControlName])) ? 'checked' : ''; $dispayOptions[] = ''; } $displayListOfOptions = (isset($amps_use_custom_settings_option) && !empty($amps_use_custom_settings_option)) ? 'block' : 'none'; echo ''; } // Create Admin Menu Pages public static function createPages() { global $amp_pages, $global_js, $global_css; foreach ($amp_pages as $p) { $page_hook_suffix = null; if ($p['Type'] == 'MENU') { $page_hook_suffix = add_menu_page($p['Page_Title'], $p['Menu_Title'], $p['Capability'], $p['Slug'], array('AMP_Init', 'loadPage'), AMP_URL . $p['Icon']); } else { $page_hook_suffix = add_submenu_page($p['Parent_Slug'], $p['Page_Title'], $p['Menu_Title'], $p['Capability'], $p['Slug'], array('AMP_Init', 'loadPage')); } add_action('admin_print_scripts-' . $page_hook_suffix, function() use($p, $global_js) { foreach ($global_js as $enqueueName) { wp_enqueue_script($enqueueName); } foreach ($p['JavaScript'] as $enqueueName) { wp_enqueue_script($enqueueName); } }); add_action('admin_print_styles-' . $page_hook_suffix, function() use($p, $global_css) { foreach ($global_css as $enqueueName) { wp_enqueue_style($enqueueName); } foreach ($p['Css'] as $enqueueName) { wp_enqueue_style($enqueueName); } }); } add_action('admin_enqueue_scripts', function() { $screen = get_current_screen(); if ('toplevel_page_amp-settings' == $screen->base) { wp_enqueue_media(); } else return; }); } // Load a Page public static function loadPage() { $page = $_GET['page']; // $page = 'page_' . str_replace('amp-', '', $page) . '.php'; $page = 'amp_' . str_replace('amp-', '', $page) . '.php'; $page = AMP_PATH . '/pages/' . $page; if (file_exists($page)) { require_once ( $page ); } else { echo "

404 - Page not Found!

"; } } // Verify if site has what it takes to run a plugin public static function verify_requirements() { global $wp_version; if (version_compare(PHP_VERSION, AMP_REQUIRED_PHP_VERSION, '<')) { return false; } if (version_compare($wp_version, AMP_REQUIRED_WP_VERSION, '<')) { return false; } if (is_multisite() != AMP_REQUIRED_WP_NETWORK) { return false; } return true; } // Load all Models and init them public static function loadModels() { $models = glob(AMP_PATH . '/models/wp_*'); foreach ($models as $m) { require_once ( $m ); // Init the model $x = explode('wp_', $m); $class = 'MAMP_' . ucfirst(str_replace('.php', '', $x[1])); if (method_exists($class, 'initialize')) { call_user_func(array($class, 'initialize')); } } } // Create/Modify Tables public static function createTables() { $models = glob(AMP_PATH . '/models/wp_*'); foreach ($models as $m) { $x = explode('wp_', $m); $class = 'MAMP_' . ucfirst(str_replace('.php', '', $x[1])); if (method_exists($class, 'createTable')) { call_user_func(array($class, 'createTable')); } } } // Remove Tables public static function removeTables() { $models = glob(AMP_PATH . '/models/wp_*'); foreach ($models as $m) { require_once ( $m ); $x = explode('wp_', $m); $class = 'MAMP_' . ucfirst(str_replace('.php', '', $x[1])); if (method_exists($class, 'removeTable')) { call_user_func(array($class, 'removeTable')); } } } // Init the plugin public static function init() { // Init the models self::loadModels(); // Init the hooks self::hooks(); } public static function addMetaTag() { $amps = get_option('amps'); if (!empty($amps['site_verification'])) { echo ''; } } public static function register_advanced_amp() { global $wpdb; $email = $_POST['email']; $domain = parse_url(get_site_url()); $this_domain = preg_replace('#^www\.(.+\.)#i', '$1', $domain['host']); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://ampsupremacy.com/sitemap/api/index.php"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('email' => $email, 'domain' => $this_domain, 'action' => 'register'))); // receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); $amp_supremacy_lite_check_key = 'amp_supremacy_lite_register_check'; $amp_supremacy_current_time = time(); $amp_supremacy_lite_stored = get_option($amp_supremacy_lite_check_key, 0); if (!empty($amp_supremacy_lite_stored)) { update_option($amp_supremacy_lite_check_key, array('status' => 1, 'checked_on' => $amp_supremacy_current_time)); } else { add_option($amp_supremacy_lite_check_key, array('status' => 1, 'checked_on' => $amp_supremacy_current_time)); } echo $server_output; curl_close($ch); wp_die(); } public static function get_registration_status() { $domain = parse_url(get_site_url()); $this_domain = preg_replace('#^www\.(.+\.)#i', '$1', $domain['host']); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://ampsupremacy.com/sitemap/api/index.php"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('domain' => $this_domain, 'action' => 'registered'))); // receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $server_output = curl_exec($ch); curl_close($ch); return $server_output; } public static function get_amp_sitemap_notice() { if (!isset($_COOKIE['amp_sitemap_admin_notice_cookie']) || $_COOKIE['amp_sitemap_admin_notice_cookie'] != 0) { $amp_sitemap_exists = file_exists(ABSPATH . 'wp-content/plugins/amp-supremacy-sitemap'); $amp_supremacy_url = get_site_url() . '/wp-admin/admin.php?page=amp-settings'; if (!$amp_sitemap_exists) { echo '

AMP Supremacy Lite: Install it for free and get AMP Sitemap and AMP Google Analytics!

'; } } } public static function amp_settings_plugin_action_links($links) { array_unshift($links, '' . __('Settings', 'amp-supremacy') . ''); return $links; } public static function load_analytics_widget($amps, $is_amp_lite_active){ echo '
  Analytics
'; } public static function add_amps_custom_columns($columns) { return array_merge($columns, array( 'amps_disable' => '' )); } public static function render_amps_custom_column_content($column, $post_id) { if ($column == 'amps_disable') { $amps_use_custom_settings_option = get_post_meta($post_id, AMP_CUSTOM_SETTINGS_SWITCH, TRUE); $amps_use_custom_settings = get_post_meta($post_id, AMP_CUSTOM_SETTINGS, TRUE); $amps_disable_checkbox_checked = ''; if (isset($amps_use_custom_settings_option) && $amps_use_custom_settings_option == 1) { $amps_disable_checkbox_checked = (isset($amps_use_custom_settings['enable']) && $amps_use_custom_settings['enable'] == 1) ? 'checked' : ''; } echo ''; } } public static function disable_amps_for_this_post() { $post_id = $_POST['post_id']; $disable_status = ($_POST['disable_status'] == 'YES') ? 1 : 0; $amps_use_custom_settings_option = get_post_meta($post_id, AMP_CUSTOM_SETTINGS_SWITCH, TRUE); $amps_use_custom_settings = get_post_meta($post_id, AMP_CUSTOM_SETTINGS, TRUE); $amp_settings = get_option('amps'); $checkBoxControls = array( 'enable' => 0, 'load_seo' => 0, 'hide_post_date' => 0, 'hide_post_author_name' => 0, 'hide_post_tags' => 0, 'hide_post_categories' => 0, ); /* IF Custom settings are already on for this post */ if ($amps_use_custom_settings_option == 1) { $checkBoxControls = $amps_use_custom_settings; $checkBoxControls['enable'] = $disable_status; } else { if(is_array($amp_settings)){ $checkBoxControls['load_seo'] = $amp_settings['use_seo_meta']; $checkBoxControls['hide_post_date'] = !$amp_settings['on_posts']; $checkBoxControls['hide_post_author_name'] = !$amp_settings['on_author_name']; $checkBoxControls['hide_post_tags'] = !$amp_settings['on_post_tags']; $checkBoxControls['hide_post_categories'] = !$amp_settings['on_post_categories']; } $checkBoxControls['enable'] = $disable_status; } update_post_meta($post_id, AMP_CUSTOM_SETTINGS_SWITCH, 1); update_post_meta($post_id, AMP_CUSTOM_SETTINGS, $checkBoxControls); exit; } public function load_amp_pro_dummy_controls(){ echo '
Social Share
Advertisements:

Configurations

'; } public static function amps_add_my_favicon() { $favicon_path = AMP_URL . 'assets/img/favicon.ico'; if(!empty($_GET['page']) && $_GET['page']=="amp-settings"){ echo ''; } } } }