/**
  * 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>' : '';
 }