/** * Initalizes class properties */ public static function init() { self::$screen_names = array(1 => __('Real-Time Log', 'wp-slimstat'), 2 => __('Overview', 'wp-slimstat'), 3 => __('Audience', 'wp-slimstat'), 4 => __('Site Analysis', 'wp-slimstat'), 5 => __('Traffic Sources', 'wp-slimstat'), 6 => __('Map Overlay', 'wp-slimstat'), 7 => __('Custom Reports', 'wp-slimstat')); self::$all_reports_titles = array('slim_p1_01' => __('Pageviews (chart)', 'wp-slimstat'), 'slim_p1_02' => __('About Slimstat', 'wp-slimstat'), 'slim_p1_03' => __('At a Glance', 'wp-slimstat'), 'slim_p1_04' => __('Currently Online', 'wp-slimstat'), 'slim_p1_05' => __('Spy View', 'wp-slimstat'), 'slim_p1_06' => __('Recent Search Terms', 'wp-slimstat'), 'slim_p1_08' => __('Top Pages', 'wp-slimstat'), 'slim_p1_10' => __('Top Traffic Sources', 'wp-slimstat'), 'slim_p1_11' => __('Top Known Visitors', 'wp-slimstat'), 'slim_p1_12' => __('Top Search Terms', 'wp-slimstat'), 'slim_p1_13' => __('Top Countries', 'wp-slimstat'), 'slim_p1_15' => __('Rankings', 'wp-slimstat'), 'slim_p1_17' => __('Top Language Families', 'wp-slimstat'), 'slim_p2_01' => __('Human Visits (chart)', 'wp-slimstat'), 'slim_p2_02' => __('At a Glance', 'wp-slimstat'), 'slim_p2_03' => __('Top Languages', 'wp-slimstat'), 'slim_p2_04' => __('Top Browsers', 'wp-slimstat'), 'slim_p2_05' => __('Top Service Providers', 'wp-slimstat'), 'slim_p2_06' => __('Top Operating Systems', 'wp-slimstat'), 'slim_p2_07' => __('Top Screen Resolutions', 'wp-slimstat'), 'slim_p2_09' => __('Browser Capabilities', 'wp-slimstat'), 'slim_p2_10' => __('Top Countries', 'wp-slimstat'), 'slim_p2_12' => __('Visit Duration', 'wp-slimstat'), 'slim_p2_13' => __('Recent Countries', 'wp-slimstat'), 'slim_p2_14' => __('Recent Screen Resolutions', 'wp-slimstat'), 'slim_p2_15' => __('Recent Operating Systems', 'wp-slimstat'), 'slim_p2_16' => __('Recent Browsers', 'wp-slimstat'), 'slim_p2_17' => __('Recent Languages', 'wp-slimstat'), 'slim_p2_18' => __('Top Browser Families', 'wp-slimstat'), 'slim_p2_19' => __('Top OS Families', 'wp-slimstat'), 'slim_p2_20' => __('Recent Users', 'wp-slimstat'), 'slim_p2_21' => __('Top Users', 'wp-slimstat'), 'slim_p3_01' => __('Traffic Sources (chart)', 'wp-slimstat'), 'slim_p3_02' => __('Summary', 'wp-slimstat'), 'slim_p3_03' => __('Top Search Terms', 'wp-slimstat'), 'slim_p3_04' => __('Top Countries', 'wp-slimstat'), 'slim_p3_05' => __('Top Traffic Sources', 'wp-slimstat'), 'slim_p3_06' => __('Top Referring Search Engines', 'wp-slimstat'), 'slim_p3_08' => __('Spy View', 'wp-slimstat'), 'slim_p3_09' => __('Recent Search Terms', 'wp-slimstat'), 'slim_p3_10' => __('Recent Countries', 'wp-slimstat'), 'slim_p3_11' => __('Top Landing Pages', 'wp-slimstat'), 'slim_p4_01' => __('Average Pageviews per Visit (chart)', 'wp-slimstat'), 'slim_p4_02' => __('Recent Posts', 'wp-slimstat'), 'slim_p4_03' => __('Recent Bounce Pages', 'wp-slimstat'), 'slim_p4_04' => __('Recent Feeds', 'wp-slimstat'), 'slim_p4_05' => __('Recent Pages Not Found', 'wp-slimstat'), 'slim_p4_06' => __('Recent Internal Searches', 'wp-slimstat'), 'slim_p4_07' => __('Top Categories', 'wp-slimstat'), 'slim_p4_08' => __('Recent Outbound Links', 'wp-slimstat'), 'slim_p4_10' => __('Recent Events', 'wp-slimstat'), 'slim_p4_11' => __('Top Posts', 'wp-slimstat'), 'slim_p4_12' => __('Top Feeds', 'wp-slimstat'), 'slim_p4_13' => __('Top Internal Searches', 'wp-slimstat'), 'slim_p4_14' => __('Top Search Terms', 'wp-slimstat'), 'slim_p4_15' => __('Recent Categories', 'wp-slimstat'), 'slim_p4_16' => __('Top Pages Not Found', 'wp-slimstat'), 'slim_p4_17' => __('Top Landing Pages', 'wp-slimstat'), 'slim_p4_18' => __('Top Authors', 'wp-slimstat'), 'slim_p4_19' => __('Top Tags', 'wp-slimstat'), 'slim_p4_20' => __('Recent Downloads', 'wp-slimstat'), 'slim_p4_21' => __('Top OutLinks and Downloads', 'wp-slimstat'), 'slim_p4_22' => __('Your Website', 'wp-slimstat'), 'slim_p6_01' => __('World Map', 'wp-slimstat'), 'slim_p7_02' => __('At A Glance', 'wp-slimstat')); // TO BE REVIEWED AND CLEANED UP self::$meta_report_order_nonce = wp_create_nonce('meta-box-order'); // Retrieve the order of this tab's panels and which ones are hidden $user = wp_get_current_user(); $page_location = wp_slimstat::$options['use_separate_menu'] == 'yes' ? 'slimstat' : 'admin'; self::$all_reports_titles = apply_filters('slimstat_report_titles', self::$all_reports_titles); if (self::$current_tab != 1) { self::$all_reports = get_user_option("meta-box-order_{$page_location}_page_wp-slim-view-" . self::$current_tab, $user->ID); self::$all_reports = self::$all_reports === false ? get_user_option("meta-box-order_{$page_location}_page_wp-slimstat", $user->ID) : self::$all_reports; // backward compatible with old settings } self::$all_reports = empty(self::$all_reports) || empty(self::$all_reports[0]) ? array() : explode(',', self::$all_reports[0]); $all_existing_reports = array(0 => array(), 1 => array('slim_p7_02'), 2 => array('slim_p1_01', 'slim_p1_02', 'slim_p1_03', 'slim_p1_04', 'slim_p1_11', 'slim_p1_12', 'slim_p1_05', 'slim_p1_08', 'slim_p1_10', 'slim_p1_13', 'slim_p1_15', 'slim_p1_17'), 3 => array('slim_p2_01', 'slim_p2_02', 'slim_p2_03', 'slim_p2_04', 'slim_p2_06', 'slim_p2_05', 'slim_p2_07', 'slim_p2_09', 'slim_p2_10', 'slim_p2_12', 'slim_p2_13', 'slim_p2_14', 'slim_p2_15', 'slim_p2_16', 'slim_p2_17', 'slim_p2_18', 'slim_p2_19', 'slim_p2_20', 'slim_p2_21'), 4 => array('slim_p4_01', 'slim_p4_22', 'slim_p1_06', 'slim_p4_07', 'slim_p4_02', 'slim_p4_03', 'slim_p4_05', 'slim_p4_04', 'slim_p4_06', 'slim_p4_08', 'slim_p4_12', 'slim_p4_13', 'slim_p4_14', 'slim_p4_15', 'slim_p4_16', 'slim_p4_17', 'slim_p4_18', 'slim_p4_11', 'slim_p4_10', 'slim_p4_19', 'slim_p4_20', 'slim_p4_21'), 5 => array('slim_p3_01', 'slim_p3_02', 'slim_p3_03', 'slim_p3_04', 'slim_p3_06', 'slim_p3_05', 'slim_p3_08', 'slim_p3_10', 'slim_p3_09', 'slim_p3_11'), 6 => array('slim_p6_01'), 7 => array()); // Some boxes are hidden by default if (!empty($_GET['page']) && strpos($_GET['page'], 'wp-slim-view-') !== false) { self::$hidden_reports = get_user_option("metaboxhidden_{$page_location}_page_wp-slim-view-" . self::$current_tab, $user->ID); if (empty(self::$all_reports)) { self::$all_reports = $all_existing_reports[self::$current_tab]; } else { self::$all_reports = array_intersect(self::$all_reports, $all_existing_reports[self::$current_tab]); } } else { // the script is being called from the dashboard widgets plugin self::$hidden_reports = get_user_option("metaboxhidden_{$page_location}", $user->ID); } // Default values if (self::$hidden_reports === false) { switch (self::$current_tab) { case 2: self::$hidden_reports = array('slim_p1_02', 'slim_p1_11', 'slim_p1_12', 'slim_p1_13', 'slim_p1_17'); break; case 3: self::$hidden_reports = array('slim_p2_05', 'slim_p2_07', 'slim_p2_09', 'slim_p2_13', 'slim_p2_14', 'slim_p2_15', 'slim_p2_16', 'slim_p2_17', 'slim_p2_18', 'slim_p2_19', 'slim_p2_20', 'slim_p2_21'); break; case 4: self::$hidden_reports = array('slim_p4_11', 'slim_p4_12', 'slim_p4_13', 'slim_p4_14', 'slim_p4_15', 'slim_p4_16', 'slim_p4_17'); break; case 5: self::$hidden_reports = array('slim_p3_09', 'slim_p3_10'); break; default: self::$hidden_reports = array(); } } // END PART TO BE REVIEWED AND CLEANED UP // Filters use the following format: browser equals Firefox|country contains gb $filters = array(); if (!empty($_REQUEST['fs']) && is_array($_REQUEST['fs'])) { foreach ($_REQUEST['fs'] as $a_request_filter_name => $a_request_filter_value) { $filters[] = "{$a_request_filter_name} {$a_request_filter_value}"; } } // Fields and drop downs if (!empty($_POST['f']) && !empty($_POST['o'])) { $filters[] = "{$_POST['f']} {$_POST['o']} " . (isset($_POST['v']) ? $_POST['v'] : ''); } if (!empty($_POST['day'])) { $filters[] = "day equals {$_POST['day']}"; } if (!empty($_POST['month'])) { $filters[] = "month equals {$_POST['month']}"; } if (!empty($_POST['year'])) { $filters[] = "year equals {$_POST['year']}"; } if (!empty($_POST['interval'])) { $filters[] = "interval equals {$_POST['interval']}"; } // Hidden Filters if (wp_slimstat::$options['restrict_authors_view'] == 'yes' && !current_user_can('manage_options')) { $filters[] = 'author equals ' . $GLOBALS['current_user']->user_login; self::$hidden_filters['author'] = 1; } // Allow third-party add-ons to modify filters before they are used $filters = apply_filters('slimstat_modify_admin_filters', $filters); if (!empty($filters)) { $filters = implode('&&&', $filters); } // Include and initialize the API to interact with the database include_once dirname(__FILE__) . '/wp-slimstat-db.php'; wp_slimstat_db::init($filters); // Some of the filters supported by the API do not appear in the dropdown self::$dropdown_filter_names = array_diff_key(wp_slimstat_db::$filter_names, array('hour' => 1, 'day' => 1, 'month' => 1, 'year' => 1, 'interval' => 1, 'direction' => 1, 'limit_results' => 1, 'start_from' => 1, 'strtotime' => 1)); // Default text for the inline help associated to the chart self::$chart_tooltip = '<strong>' . __('Chart controls', 'wp-slimstat') . '</strong><ul><li>' . __('Use your mouse wheel to zoom in and out', 'wp-slimstat') . '</li><li>' . __('While zooming in, drag the chart to move to a different area', 'wp-slimstat') . '</li><li>' . __('Double click on an empty region to reset the zoom level', 'wp-slimstat') . '</li>'; self::$chart_tooltip .= empty(wp_slimstat_db::$filters_normalized['date']['day']) ? '<li>' . __('Click on a data point to display the activity chart for each hour of that day', 'wp-slimstat') . '</li>' : ''; }