diff --git a/class/MainWPChild.class.php b/class/MainWPChild.class.php index 560166a..2c2fee8 100644 --- a/class/MainWPChild.class.php +++ b/class/MainWPChild.class.php @@ -55,7 +55,8 @@ class MainWPChild 'uploader_action' => 'uploader_action', 'wordpress_seo' => 'wordpress_seo', 'client_report' => 'client_report', - 'createBackupPoll' => 'backupPoll' + 'createBackupPoll' => 'backupPoll', + 'page_speed' => 'page_speed' ); private $FTP_ERROR = 'Failed, please add FTP details for automatic upgrades.'; @@ -628,6 +629,7 @@ class MainWPChild // Branding extension MainWPChildBranding::Instance()->branding_init(); MainWPClientReport::Instance()->creport_init(); + MainWPChildPagespeed::Instance()->init(); } function default_option_active_plugins($default) @@ -3531,6 +3533,10 @@ class MainWPChild MainWPClientReport::Instance()->action(); } + function page_speed() { + MainWPChildPagespeed::Instance()->action(); + } + } ?> \ No newline at end of file diff --git a/class/MainWPChildPagespeed.class.php b/class/MainWPChildPagespeed.class.php new file mode 100644 index 0000000..820c2da --- /dev/null +++ b/class/MainWPChildPagespeed.class.php @@ -0,0 +1,309 @@ +save_settings(); + break; + case "set_showhide": + $information = $this->set_showhide(); + break; + case "sync_data": + $information = $this->sync_data(); + break; + } + } + MainWPHelper::write($information); + } + + public function init() + { + if (get_option('mainwp_pagespeed_ext_enabled') !== "Y") + return; + + if (get_option('mainwp_pagespeed_hide_plugin') === "hide") + { + add_filter('all_plugins', array($this, 'hide_plugin')); + //add_action('admin_menu', array($this, 'hide_menu'), 999); + add_filter('update_footer', array(&$this, 'update_footer'), 15); + } + } + + public function hide_plugin($plugins) { + foreach ($plugins as $key => $value) + { + $plugin_slug = basename($key, '.php'); + if ($plugin_slug == 'google-pagespeed-insights') + unset($plugins[$key]); + } + return $plugins; + } + +// public function hide_menu() { +// global $submenu; +// if (isset($submenu['tools.php'])) { +// foreach($submenu['tools.php'] as $key => $menu) { +// if ($menu[2] == 'google-pagespeed-insights') { +// unset($submenu['tools.php'][$key]); +// break; +// } +// } +// } +// } + + function update_footer($text){ + ?> + + 'RUNNING'); + + $settings = $_POST['settings']; + $settings = unserialize(base64_decode($settings)); + + if (is_array($settings)) { + + if (isset($settings['api_key']) && !empty($settings['api_key'])) + $current_values['google_developer_key'] = $settings['api_key']; + + if (isset($settings['response_language'])) + $current_values['response_language'] = $settings['response_language']; + + if (isset($_POST['strategy'])) + $current_values['strategy'] = $_POST['strategy']; + + if (isset($settings['max_execution_time'])) + $current_values['max_execution_time'] = $settings['max_execution_time']; + + if (isset($settings['delay_time'])) + $current_values['sleep_time'] = $settings['delay_time']; + + if (isset($settings['log_exception'])) + $current_values['log_api_errors'] = ($settings['log_exception']) ? true : false; + + if (isset($settings['scan_technical'])) + $current_values['scan_method'] = $settings['scan_technical']; + + if (isset($settings['report_expiration'])) + $current_values['recheck_interval'] = $settings['report_expiration']; + + if (isset($settings['check_report'])) { + if (is_array($settings['check_report'])) { + $current_values['check_pages'] = in_array('page', $settings['check_report']) ? true : false; + $current_values['check_posts'] = in_array('post', $settings['check_report']) ? true : false; + $current_values['check_categories'] = in_array('category', $settings['check_report']) ? true : false; + } else { + $current_values['check_pages'] = $current_values['check_posts'] = $current_values['check_categories'] = false; + } + } + + if (isset($settings['delete_data']) && !empty($settings['delete_data'])) { + $this->delete_data($settings['delete_data']); + } + + if (update_option( 'gpagespeedi_options', $current_values )) + $information['result'] = 'SUCCESS'; + else + $information['result'] = 'NOTCHANGE'; + } + + $strategy = $current_values['strategy']; + + $sync_data = $this->sync_data($strategy); + $information['data'] = $sync_data['data']; + return $information; + } + + function sync_data($strategy = "") { + if (empty($strategy)) + $strategy = "both"; + + $information = array(); + $current_values = get_option('gpagespeedi_options'); + $bad_key = ($current_values['bad_api_key'] || empty($current_values['google_developer_key'])); + $data = array('bad_api_key' => $bad_key ); + + if ($strategy == "both" || $strategy == "desktop") { + $result = self::cal_pagespeed_data('desktop'); + $data['desktop_score'] = $result['average_score']; + $data['desktop_total_pages'] = $result['total_pages']; + $data['desktop_last_modified'] = $result['last_modified']; + } + if ($strategy == "both" || $strategy == "mobile") { + $result = self::cal_pagespeed_data('mobile'); + $data['mobile_score'] = $result['average_score']; + $data['mobile_total_pages'] = $result['total_pages']; + $data['mobile_last_modified'] = $result['last_modified']; + } + + $information['data'] = $data; + return $information; + } + + static function cal_pagespeed_data($strategy) { + global $wpdb; + + if ( !defined('GPI_DIRECTORY') ) + return 0; + + require_once( GPI_DIRECTORY . '/includes/helper.php' ); + + $options = get_option('gpagespeedi_options'); + + $score_column = $strategy . '_score'; + $page_stats_column = $strategy . '_page_stats'; + require_once( ABSPATH . 'wp-admin/includes/template.php' ); + require_once( GPI_DIRECTORY . '/core/init.php' ); + $GPI_ListTable = new GPI_List_Table(); + + $data_typestocheck = $GPI_ListTable->getTypesToCheck('all'); + + $gpi_page_stats = $wpdb->prefix . 'gpi_page_stats'; + if(!empty($data_typestocheck)) { + + $allpagedata = $wpdb->get_results( + $wpdb->prepare( + "SELECT ID, URL, $score_column, $page_stats_column + FROM $gpi_page_stats + WHERE ($data_typestocheck[0])", + $data_typestocheck[1] + ), + ARRAY_A + ); + } else { + $allpagedata = array(); + } + + $reports_typestocheck = $GPI_ListTable->getTypesToCheck('all'); + $gpi_page_reports = $wpdb->prefix . 'gpi_page_reports'; + + if(!empty($reports_typestocheck)) { + + $allpagereports = $wpdb->get_results( + $wpdb->prepare( + "SELECT r.rule_key, r.rule_name, r.rule_impact + FROM $gpi_page_stats d + INNER JOIN $gpi_page_reports r + ON r.page_id = d.ID + AND r.rule_impact > 0 + AND r.strategy = '$strategy' + WHERE ($reports_typestocheck[0])", + $reports_typestocheck[1] + ), + ARRAY_A + ); + } else { + $allpagereports = array(); + } + + $total_pages = count($allpagedata); + $total_scores = 0; + $average_score = 0; + + if(!empty($total_pages) && !empty($allpagereports)) { + + foreach($allpagedata as $key => $pagedata) + { + $total_scores = $total_scores + $pagedata[$score_column]; + } + + $average_score = number_format($total_scores / $total_pages); + } + + // Not Null check for Report List scores + switch($strategy) { + +// case 'both': +// $nullcheck = 'desktop_score IS NOT NULL AND mobile_score IS NOT NULL'; +// break; + + case 'mobile': + $nullcheck = 'mobile_score IS NOT NULL'; + $_select = " max(mobile_last_modified) as last_modified "; + break; + + case 'desktop': + $nullcheck = 'desktop_score IS NOT NULL'; + $_select = " max(desktop_last_modified) as last_modified "; + break; + + } + + // Get our Data + if(!is_null($reports_typestocheck)) { + $gpi_page_stats = $wpdb->prefix . 'gpi_page_stats'; + $data = $wpdb->get_results( + $wpdb->prepare( + "SELECT $_select + FROM $gpi_page_stats + WHERE ($reports_typestocheck[0]) + AND $nullcheck", + $reports_typestocheck[1] + ), + ARRAY_A + ); + } + + return array('last_modified' => isset($data['last_modified']) ? $data['last_modified'] : 0, + 'average_score' => $average_score, + 'total_pages' => $total_pages); + } + + function delete_data($what) { + global $wpdb; + $gpi_page_stats = $wpdb->prefix . 'gpi_page_stats'; + $gpi_page_reports = $wpdb->prefix . 'gpi_page_reports'; + $gpi_page_blacklist = $wpdb->prefix . 'gpi_page_blacklist'; + + if($what == 'purge_reports') { + $wpdb->query("TRUNCATE TABLE $gpi_page_stats"); + $wpdb->query("TRUNCATE TABLE $gpi_page_reports"); + } elseif($what == 'purge_everything') { + $wpdb->query("TRUNCATE TABLE $gpi_page_stats"); + $wpdb->query("TRUNCATE TABLE $gpi_page_reports"); + $wpdb->query("TRUNCATE TABLE $gpi_page_blacklist"); + } + } +} + diff --git a/class/MainWPHelper.class.php b/class/MainWPHelper.class.php index 47b0720..1cac5f2 100644 --- a/class/MainWPHelper.class.php +++ b/class/MainWPHelper.class.php @@ -149,6 +149,39 @@ class MainWPHelper } } + if ($post_plus) { + $random_publish_date = isset($post_custom['_saved_draft_random_publish_date']) ? $post_custom['_saved_draft_random_publish_date'] : false; + $random_publish_date = is_array($random_publish_date) ? current($random_publish_date) : null; + if (!empty($random_publish_date)) { + $random_date_from = isset($post_custom['_saved_draft_publish_date_from']) ? $post_custom['_saved_draft_publish_date_from'] : 0; + $random_date_from = is_array($random_date_from) ? current($random_date_from) : 0; + + $random_date_to = isset($post_custom['_saved_draft_publish_date_to']) ? $post_custom['_saved_draft_publish_date_to'] : 0; + $random_date_to = is_array($random_date_to) ? current($random_date_to) : 0; + + $now = current_time('timestamp'); + + if (empty($random_date_from)) + $random_date_from = $now; + + if (empty($random_date_to)) + $random_date_to = $now; + + if ($random_date_from == $now && $random_date_from == $random_date_to) + $random_date_to = $now + 7 * 24 * 3600; + + if ($random_date_from > $random_date_to) { + $tmp = $random_date_from; + $random_date_from = $random_date_to; + $random_date_to = $tmp; + } + + $random_timestamp = rand($random_date_from, $random_date_to); + $post_status = ($random_timestamp <= current_time('timestamp')) ? 'publish' : 'future'; + $new_post['post_status'] = $post_status; + $new_post['post_date'] = date('Y-m-d H:i:s', $random_timestamp); + } + } if (isset($post_tags) && $post_tags != '') $new_post['tags_input'] = $post_tags; @@ -317,37 +350,6 @@ class MainWPHelper wp_set_post_categories($new_post_id, array($random_cats[$key]), false); } } - - $random_publish_date = isset($post_custom['_saved_draft_random_publish_date']) ? $post_custom['_saved_draft_random_publish_date'] : false; - $random_publish_date = is_array($random_publish_date) ? current($random_publish_date) : null; - if (!empty($random_publish_date)) { - $random_date_from = isset($post_custom['_saved_draft_publish_date_from']) ? $post_custom['_saved_draft_publish_date_from'] : 0; - $random_date_from = is_array($random_date_from) ? current($random_date_from) : 0; - - $random_date_to = isset($post_custom['_saved_draft_publish_date_to']) ? $post_custom['_saved_draft_publish_date_to'] : 0; - $random_date_to = is_array($random_date_to) ? current($random_date_to) : 0; - - $now = current_time('timestamp'); - - if (empty($random_date_from)) - $random_date_from = $now; - - if (empty($random_date_to)) - $random_date_to = $now; - - if ($random_date_from == $now && $random_date_from == $random_date_to) - $random_date_to = $now + 7 * 24 * 3600; - - if ($random_date_from > $random_date_to) { - $tmp = $random_date_from; - $random_date_from = $random_date_to; - $random_date_to = $tmp; - } - - $random_timestamp = rand($random_date_from, $random_date_to); - $post_status = ($random_timestamp <= current_time('timestamp')) ? 'publish' : 'future'; - wp_update_post(array('ID' => $new_post_id, 'post_date' => date('Y-m-d H:i:s', $random_timestamp), 'post_status' => $post_status)); - } } // end of post plus diff --git a/mainwp-child.php b/mainwp-child.php index e97fd0b..70fb024 100644 --- a/mainwp-child.php +++ b/mainwp-child.php @@ -5,7 +5,7 @@ Description: Child Plugin for MainWP. The plugin is used so the installed blog can be securely managed remotely by your network. Plugin documentation and options can be found here http://docs.mainwp.com Author: MainWP Author URI: http://mainwp.com - Version: 0.29.9-beta + Version: 0.29.9 */ header('X-Frame-Options: ALLOWALL'); //header('X-Frame-Options: GOFORIT'); diff --git a/readme.txt b/readme.txt index a97aaf7..c855ba7 100644 --- a/readme.txt +++ b/readme.txt @@ -7,7 +7,7 @@ Author URI: http://mainwp.com Plugin URI: http://mainwp.com Requires at least: 3.6 Tested up to: 3.9 -Stable tag: 0.29.8 +Stable tag: 0.29.9 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -58,6 +58,9 @@ To see full documentation and FAQs please visit [MainWP Documentation](http://do == Changelog == += 0.29.9 = +* Added new hooks for upcoming extensions + = 0.29.8 = * Fix for uploads path outside the conventional path for backups * Added new hooks for upcoming extensions