'Purge PS Cache', 'href' => '#', 'id' => 'amistacx-page-speed-purge-button', 'parent' => false ); $redisCleanButton = array( 'title' => 'Purge Redis Cache', 'href' => '#', 'id' => 'amistacx-redis-purge-button', 'parent' => false ); $pageSpeedCleanButtonIsEnable = get_option('pagespeed_purge'); $redisCleanButtonIsEnable = get_option('redis_purge'); if($pageSpeedCleanButtonIsEnable) { $wp_admin_bar->add_menu( $pageSpeedCleanButton ); } if($redisCleanButtonIsEnable) { $wp_admin_bar->add_menu( $redisCleanButton ); } } public function enqueue() { wp_enqueue_style( 'sweetalert2-style', plugins_url( '/css/sweetalert2.min.css', __FILE__ ) ); wp_enqueue_script( 'sweetalert2-scrypt', plugins_url( '/js/sweetalert2.min.js', __FILE__ ), array( 'jquery' ) ); wp_enqueue_script( 'general-script', plugins_url( '/js/general-script.js', __FILE__ ), array( 'jquery' ) ); wp_localize_script('general-script', 'custom_ajax', array( 'url' => admin_url('admin-ajax.php') ) ); } public function pagspeed_module_is_installed(){ $response = wp_remote_get(home_url('/')); $apache_pagespeed = wp_remote_retrieve_header( $response, 'X-Mod-Pagespeed' ); $nginx_pagespeed = wp_remote_retrieve_header( $response, 'X-Page-Speed' ); return ($apache_pagespeed || $nginx_pagespeed)?true:false; } public function redis_module_is_installed(){ $res = shell_exec('redis-cli ping'); return (trim($res) == 'PONG')?true:false; } public function amistacx_redis_purge_click() { $message = 'No output. Please check the Redis.'; $res = shell_exec('redis-cli flushall'); if($res){ $message = $res; } $return = array( 'message' => $message, ); wp_send_json($return); } public function amistacx_pagespeed_purge_click() { $site_url = get_site_url(); $url = $site_url."/pagespeed_admin/cache?purge=*"; $error = false; $response = $this->send_get_request($url, $error); $return = array( 'message' => $response, 'error' => $error ); wp_send_json($return); } public function amistacx_pagespeed_purge_url_page() { $site_url = get_site_url(); $url = '*'; $error = false; $response = ''; if ( !empty($_POST['pagespeed_url']) ) { $user_url = trim($_POST['pagespeed_url']); $url = trim(parse_url($user_url, PHP_URL_PATH), '/'); if (true !== ($is_valid_url = $this->is_valid_url($user_url))) { $response = $is_valid_url; $error = true; } } if(!$error) { $query = $site_url."/pagespeed_admin/cache?purge=".$url; $response = $this->send_get_request($query, $error); } $return = array( 'message' => $response, 'error' => $error ); wp_send_json($return); } private function is_valid_url($url) { $error = false; $parsed_url = parse_url($url); if(empty(trim($parsed_url['path'], '/'))) { $error = "URL's path is empty"; } if(!empty($parsed_url['host']) && ($parsed_url['host'] != parse_url(get_site_url(), PHP_URL_HOST))) { $error = "Host name is invalid"; } return $error ?: true; } private function send_get_request($url, &$error){ $response = wp_remote_get($url); $code = wp_remote_retrieve_response_code($response); $message = wp_remote_retrieve_response_message($response); if (is_wp_error($response)) { $error = true; return $response->get_error_message(); } elseif (200 != $code) { $error = true; return $message ? : 'Unknown error occurred'; } else { return wp_remote_retrieve_body( $response ); } } public function plugin_settings_links( $links ) { $links[] = 'Settings'; return $links; } public function amistacx_pagespeed_purge_menu() { add_options_page('aMiSTACX PageSpeed Redis Caching Purge Admin Settings', 'aMiSTACX PageSpeed Redis Caching Purge', 'manage_options', 'amistacx_pagespeed_purge', array($this,'amistacx_pagespeed_purge_page')); } public function cant_active_module_notice() { echo '

aMiSTACX PageSpeed Redis Caching Purge cannot be activated. Redis and Pagespeed is not configured or not installed.

'; } public function prefix_disable_plugin() { if (is_plugin_active( plugin_basename( __FILE__ ) ) ) { deactivate_plugins( plugin_basename( __FILE__ ) ); if ( isset( $_GET['activate'] ) ) { unset( $_GET['activate'] ); } } } public function amistacx_pagespeed_purge_page(){ ?>

aMiSTACX PageSpeed Redis Caching Purge Admin Settings

Developer's homepage

Enable Dashboard Button
Enable Dashboard Button


PageSpeed URL Purge:

URL