function wp_statistics_download_manual() { global $WP_Statistics, $wpdb; // this is how you get access to the database $manage_cap = wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')); if (current_user_can($manage_cap)) { $type = $_GET['type']; if ($type == 'odt' || $type == 'html') { $filepath = $WP_Statistics->plugin_dir . '/manual'; $filename = ''; $ext = '.' . $type; // open this directory $dir = opendir($filepath); // get each entry while ($entry = readdir($dir)) { if (substr($entry, -strlen($ext)) == $ext) { $filename = $entry; } } // close directory closedir($dir); if ($filename != '') { $filename = substr($filename, 0, -strlen($ext)); $filename .= ' V' . WP_STATISTICS_VERSION . $ext; header('Content-Type: application/octet-stream;'); header('Content-Disposition: attachment; filename="' . $filename . '"'); readfile($filepath . $filename); } } } }
function wp_statistics_dashboard_widget_load() { global $WP_Statistics; $WP_Statistics->load_user_options(); // We need to fudge the display settings for first time users so not all of the widgets are displayed, we only want to do this on // the first time they visit the dashboard though so check to see if we've been here before. if (!$WP_Statistics->get_user_option('dashboard_set')) { $WP_Statistics->update_user_option('dashboard_set', WP_STATISTICS_VERSION); $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_dashboard', true); if (!is_array($hidden_widgets)) { $hidden_widgets = array(); } $default_hidden = array('wp-statistics-browsers-widget', 'wp-statistics-countries-widget', 'wp-statistics-hitsmap-widget', 'wp-statistics-hits-widget', 'wp-statistics-pages-widget', 'wp-statistics-recent-widget', 'wp-statistics-referring-widget', 'wp-statistics-search-widget', 'wp-statistics-summary-widget', 'wp-statistics-words-widget', 'wp-statistics-top-visitors-widget'); foreach ($default_hidden as $widget) { if (!in_array($widget, $hidden_widgets)) { $hidden_widgets[] = $widget; } } update_user_meta($WP_Statistics->user_id, 'metaboxhidden_dashboard', $hidden_widgets); } else { if ($WP_Statistics->get_user_option('dashboard_set') != WP_STATISTICS_VERSION) { // We also have to fudge things when we add new widgets to the code base. if (version_compare($WP_Statistics->get_user_option('dashboard_set'), '8.7', '<')) { $WP_Statistics->update_user_option('dashboard_set', WP_STATISTICS_VERSION); $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_dashboard', true); if (!is_array($hidden_widgets)) { $hidden_widgets = array(); } $default_hidden = array('wp-statistics-top-visitors-widget'); foreach ($default_hidden as $widget) { if (!in_array($widget, $hidden_widgets)) { $hidden_widgets[] = $widget; } } update_user_meta($WP_Statistics->user_id, 'metaboxhidden_dashboard', $hidden_widgets); } } } // If the user does not have at least read access to the status plugin, just return without adding the widgets. if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_option')))) { return; } // If the admin has disabled the widgets, don't display them. if (!$WP_Statistics->get_option('disable_dashboard')) { wp_add_dashboard_widget('wp-statistics-quickstats-widget', __('Quick Stats', 'wp_statistics'), 'wp_statistics_quickstats_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-browsers-widget', __('Top 10 Browsers', 'wp_statistics'), 'wp_statistics_browsers_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-countries-widget', __('Top 10 Countries', 'wp_statistics'), 'wp_statistics_countries_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-hitsmap-widget', __('Today\'s Visitor Map', 'wp_statistics'), 'wp_statistics_hitsmap_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-hits-widget', __('Hit Statistics', 'wp_statistics'), 'wp_statistics_hits_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-pages-widget', __('Top 10 Pages', 'wp_statistics'), 'wp_statistics_pages_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-recent-widget', __('Recent Visitors', 'wp_statistics'), 'wp_statistics_recent_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-referring-widget', __('Top Referring Sites', 'wp_statistics'), 'wp_statistics_referring_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-search-widget', __('Search Engine Referrals', 'wp_statistics'), 'wp_statistics_search_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-summary-widget', __('Summary', 'wp_statistics'), 'wp_statistics_summary_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-words-widget', __('Latest Search Words', 'wp_statistics'), 'wp_statistics_words_widget', $control_callback = null); wp_add_dashboard_widget('wp-statistics-top-visitors-widget', __('Top 10 Visitors Today', 'wp_statistics'), 'wp_statistics_top_visitors_widget', $control_callback = null); } }
function wp_statistics_generate_about_postbox_content() { global $wpdb, $WP_Statistics; ?> <div style="text-align: center;"> <a href="http://wp-statistics.com" target="_blank"><img src="<?php echo plugins_url('wp-statistics/assets/images/logo-250.png'); ?> "></a> </div> <div id="about-links" style="text-align: center;"> <p><a href="http://wp-statistics.com" target="_blank"><?php _e('Website', 'wp_statistics'); ?> </a></p> | <p><a href="http://wordpress.org/support/view/plugin-reviews/wp-statistics" target="_blank"><?php _e('Rate and Review', 'wp_statistics'); ?> </a></p> <?php if (current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')))) { ?> | <p><a href="?page=wp-statistics/settings&tab=about"><?php _e('More Information', 'wp_statistics'); ?> </a></p> <?php } ?> </div> <hr /> <div> <?php echo sprintf(__('This product includes GeoLite2 data created by MaxMind, available from %s.', 'wp_statistics'), '<a href="http://www.maxmind.com" target=_blank>http://www.maxmind.com</a>'); ?> </div> <?php }
function wp_statistics_add_editor_meta_box() { global $WP_Statistics; $WP_Statistics->load_user_options(); // We need to fudge the display settings for first time users so not all of the widgets are disaplyed, we only want to do this on // the first time they visit the dashboard though so check to see if we've been here before. if (!$WP_Statistics->get_user_option('editor_set')) { $WP_Statistics->update_user_option('editor_set', WP_STATISTICS_VERSION); $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_post', true); if (!is_array($hidden_widgets)) { $hidden_widgets = array(); } if (!in_array('wp_statistics_editor_meta_box', $hidden_widgets)) { $hidden_widgets[] = 'wp_statistics_editor_meta_box'; } update_user_meta($WP_Statistics->user_id, 'metaboxhidden_post', $hidden_widgets); $hidden_widgets = get_user_meta($WP_Statistics->user_id, 'metaboxhidden_page', true); if (!is_array($hidden_widgets)) { $hidden_widgets = array(); } if (!in_array('wp_statistics_editor_meta_box', $hidden_widgets)) { $hidden_widgets[] = 'wp_statistics_editor_meta_box'; } update_user_meta($WP_Statistics->user_id, 'metaboxhidden_page', $hidden_widgets); } // If the user does not have at least read access to the status plugin, just return without adding the widgets. if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_option')))) { return; } // If the admin has disabled the widgets don't display them. if ($WP_Statistics->get_option('disable_editor')) { return; } $screens = array('post', 'page'); foreach ($screens as $screen) { add_meta_box('wp_statistics_editor_meta_box', __('Hit Statistics', 'wp_statistics'), 'wp_statistics_editor_meta_box', $screen, 'normal', 'high'); } }
function wp_statistics_purge_visitor_hits_action_callback() { global $WP_Statistics, $wpdb; // this is how you get access to the database require $WP_Statistics->plugin_dir . '/includes/functions/purge-hits.php'; $manage_cap = wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')); if (current_user_can($manage_cap)) { $purge_hits = 10; if (array_key_exists('purge-hits', $_POST)) { // Get the number of days to purge data before. $purge_hits = intval($_POST['purge-hits']); } if ($purge_hits < 10) { _e('Number of hits must be greater than or equal to 10!', 'wp_statistics'); } else { echo wp_statistics_purge_visitor_hits($purge_hits); } } else { _e('Access denied!', 'wp_statistics'); } wp_die(); // this is required to terminate immediately and return a proper response }
function wp_statistics_settings() { global $WP_Statistics; // Check the current user has the rights to be here. if (!current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_options')))) { wp_die(__('You do not have sufficient permissions to access this page.')); } // When we create $WP_Statistics the user has not been authenticated yet so we cannot load the user preferences // during the creation of the class. Instead load them now that the user exists. $WP_Statistics->load_user_options(); // Load our CSS to be used. wp_enqueue_style('log-css', plugin_dir_url(__FILE__) . 'assets/css/style.css', true, '1.0'); // Load the jQuery UI code to create the tabs. wp_register_style("jquery-ui-css", plugin_dir_url(__FILE__) . "assets/css/jquery-ui-1.10.4.custom.css"); wp_enqueue_style("jquery-ui-css"); wp_enqueue_script('jquery-ui-core'); wp_enqueue_script('jquery-ui-tabs'); if (is_rtl()) { wp_enqueue_style('rtl-css', plugin_dir_url(__FILE__) . 'assets/css/rtl.css', true, '1.1'); } // We could let the download happen at the end of the page, but this way we get to give some // feedback to the users about the result. if ($WP_Statistics->get_option('update_geoip') == true) { echo wp_statistics_download_geoip(); } include_once dirname(__FILE__) . "/includes/settings/wps-settings.php"; }
<?php $wps_nonce_valid = false; if (array_key_exists('wp-statistics-nonce', $_POST)) { if (wp_verify_nonce($_POST['wp-statistics-nonce'], 'update-options')) { $wps_nonce_valid = true; } } $wps_admin = false; if (current_user_can(wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')))) { $wps_admin = true; } if ($wps_admin === false) { $wps_admin = 0; } $selected_tab = ""; if (array_key_exists('tab', $_GET)) { $selected_tab = $_GET['tab']; } switch ($selected_tab) { case 'notifications': if ($wps_admin) { $current_tab = 1; } else { $current_tab = 0; } break; case 'overview': if ($wps_admin) { $current_tab = 2; } else {
function wp_statistics_get_widget_contents_callback() { global $WP_Statistics, $wpdb; // this is how you get access to the database $widgets = array('about', 'browsers', 'map', 'countries', 'hits', 'hitsmap', 'page', 'pages', 'quickstats', 'recent', 'referring', 'search', 'summary', 'top.visitors', 'words'); $view_cap = wp_statistics_validate_capability($WP_Statistics->get_option('read_capability', 'manage_options')); if (current_user_can($view_cap)) { $widget = ''; if (array_key_exists('widget', $_POST)) { // Get the widget we're going to display. if (in_array($_POST['widget'], $widgets)) { $widget = $_POST['widget']; } } if ('map' == $widget || 'hitsmap' == $widget) { if ($WP_Statistics->get_option('map_type') == 'jqvmap') { $widget = 'jqv.map'; } else { $widget = 'google.map'; } } if ('' == $widget) { _e('No matching widget found!', 'wp_statistics'); wp_die(); } $ISOCountryCode = $WP_Statistics->get_country_codes(); $search_engines = wp_statistics_searchengine_list(); require $WP_Statistics->plugin_dir . '/includes/log/widgets/' . $widget . '.php'; switch ($widget) { case 'summary': wp_statistics_generate_summary_postbox_content($search_engines); break; case 'quickstats': wp_statistics_generate_quickstats_postbox_content($search_engines); break; case 'browsers': wp_statistics_generate_browsers_postbox_content(); break; case 'referring': wp_statistics_generate_referring_postbox_content(); break; case 'countries': wp_statistics_generate_countries_postbox_content($ISOCountryCode); break; case 'jqv.map': case 'google.map': wp_statistics_generate_map_postbox_content($ISOCountryCode); break; case 'hits': wp_statistics_generate_hits_postbox_content(); break; case 'search': wp_statistics_generate_search_postbox_content($search_engines); break; case 'words': wp_statistics_generate_words_postbox_content($ISOCountryCode); break; case 'page': $pageid = (int) $_POST['page-id']; wp_statistics_generate_page_postbox_content(null, $pageid); break; case 'pages': list($total, $uris) = wp_statistics_get_top_pages(); wp_statistics_generate_pages_postbox_content($total, $uris); break; case 'recent': wp_statistics_generate_recent_postbox_content($ISOCountryCode); break; case 'top.visitors': wp_statistics_generate_top_visitors_postbox_content($ISOCountryCode); break; case 'about': wp_statistics_generate_about_postbox_content($ISOCountryCode); break; default: _e('ERROR: Widget not found!', 'wp_statistics'); } } else { _e('Access denied!', 'wp_statistics'); } wp_die(); // this is required to terminate immediately and return a proper response }
function wp_statistics_export_data() { global $WP_Statistics, $wpdb; // this is how you get access to the database $manage_cap = wp_statistics_validate_capability($WP_Statistics->get_option('manage_capability', 'manage_options')); if (current_user_can($manage_cap)) { $table = $_POST['table-to-export']; $type = $_POST['export-file-type']; $headers = $_POST['export-headers']; // Validate the table name the user passed to us. if (!($table == "useronline" || $table == "visit" || $table == "visitor" || $table == "exclusions" || $table == "pages")) { $table = FALSE; } // Validate the file type the user passed to us. if (!($type == "excel" || $type == "xml" || $type == "csv" || $type == "tsv")) { $table = FALSE; } if ($table && $type) { require $WP_Statistics->plugin_dir . '/includes/classes/php-export-data.class.php'; $file_name = WPS_EXPORT_FILE_NAME . '-' . $WP_Statistics->Current_Date('Y-m-d-H-i'); switch ($type) { case 'excel': $exporter = new ExportDataExcel('browser', "{$file_name}.xls"); break; case 'xml': $exporter = new ExportDataExcel('browser', "{$file_name}.xml"); break; case 'csv': $exporter = new ExportDataCSV('browser', "{$file_name}.csv"); break; case 'tsv': $exporter = new ExportDataTSV('browser', "{$file_name}.tsv"); break; } $exporter->initialize(); // We need to limit the number of results we retrieve to ensure we don't run out of memory $query_base = "SELECT * FROM {$wpdb->prefix}statistics_{$table}"; $query = $query_base . ' LIMIT 0,1000'; $i = 1; $more_results = true; $result = $wpdb->get_results($query, ARRAY_A); if ($headers) { foreach ($result[0] as $key => $col) { $columns[] = $key; } $exporter->addRow($columns); } while ($more_results) { foreach ($result as $row) { $exporter->addRow($row); // Make sure we've flushed the output buffer so we don't run out of memory on large exports. ob_flush(); flush(); } unset($result); $wpdb->flush(); $query = $query_base . ' LIMIT ' . $i * 1000 . ',1000'; $result = $wpdb->get_results($query, ARRAY_A); if (count($result) == 0) { $more_results = false; } $i++; } $exporter->finalize(); exit; } } }