Loading class.ga-page-stats.php 0 → 100644 +83 −0 Original line number Original line Diff line number Diff line <?php require_once(ABSPATH . '/vendor/autoload.php'); class GAPageStats { private static $instance = null; private $view_id = null; private $analytics = null; protected function __construct() { $ga_options = get_option('ga_page_stats_options'); $this->view_id = $ga_options['view_id']; $client = new Google_Client(); $client->setApplicationName("Hello Analytics Reporting"); $client->setAuthConfig($ga_options['key_file']); $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); $this->analytics = new Google_Service_AnalyticsReporting($client); } protected function __clone() { } public function __wakeup() { throw new Exception("Cannot unserialize a singleton."); } protected static function getInstance(): GAPageStats { if (self::$instance == NULL) self::$instance = new static(); return self::$instance; } public static function getPageStats($path) { $ga = self::getInstance(); // Create the DateRange object. $dateRange = new Google_Service_AnalyticsReporting_DateRange(); $dateRange->setStartDate("2012-11-01"); $dateRange->setEndDate("today"); // Create the page views metric. $pageViews = new Google_Service_AnalyticsReporting_Metric(); $pageViews->setExpression("ga:pageviews"); $pageViews->setAlias("Page Views"); // Create the users metric. $users = new Google_Service_AnalyticsReporting_Metric(); $users->setExpression("ga:users"); $users->setAlias("Users"); // Create the page path dimension. $pagePath = new Google_Service_AnalyticsReporting_Dimension(); $pagePath->setName("ga:pagePath"); // Create the ReportRequest object. $request = new Google_Service_AnalyticsReporting_ReportRequest(); $request->setViewId($ga->view_id); $request->setDateRanges($dateRange); $request->setDimensions(array($pagePath)); $request->setMetrics(array($pageViews, $users)); $request->setFiltersExpression("ga:pagePath=~" . $path); $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); $body->setReportRequests(array($request)); $reports = $ga->analytics->reports->batchGet($body); if (count($reports) == 0) return [0, 0]; $report = $reports[0]; $rows = $report->getData()->getRows(); if (count($rows) == 0) return [0, 0]; $row = $rows[0]; $metrics = $row->getMetrics(); $values = $metrics[0]->getValues(); return [ $values[0], $values[1] ]; } } google-analytics-page-stats.php 0 → 100644 +58 −0 Original line number Original line Diff line number Diff line <?php /** * @package Google_Analytics_Page_Stats * @version 0.0.1 */ /* Plugin Name: Google Analytics Page Stats Plugin URI: https://aztlan.fciencias.unam.mx/gitlab/google_analytics_page_stats/ Description: This plugin offers an object to get the page stats from Google Analytics; it needs configuration from a Google Analytics account. Author: Canek Peláez Version: 0.0.1 Author URI: https://aztlan.fciencias.unam.mx/~canek/ */ define('GA_PAGE_STATS__PLUGIN_DIR', plugin_dir_path(__FILE__)); require_once(GA_PAGE_STATS__PLUGIN_DIR . 'class.ga-page-stats.php'); add_action('admin_menu', 'ga_page_stats_menu'); function ga_page_stats_menu() { add_options_page('Google Analytics', 'Google Analytics', 'manage_options', 'google-analytics-page-stats/options.php') ; } function ga_page_stats_content_filter($content) { if (!is_singular() || !current_user_can('administrator')) return $content; $r = GAPageStats::getPageStats($_SERVER['REQUEST_URI']); $spv = number_format($r[0]); $su = number_format($r[1]); return $content . '<span style="font-size:small;"><em>Vistas: ' . $spv . '</em> | ' . '<em>Usuarios: ' . $su . '</em> | </span>'; } add_filter('the_content', 'ga_page_stats_content_filter'); register_activation_hook(__FILE__, 'ga_page_stats_activation'); function ga_page_stats_activation($network_wide) { // Add Options $option_name = 'ga_page_stats_options'; $option = array('view_id' => '', 'key_file' => ''); if (is_multisite() && $network_wide) { $ms_sites = function_exists('get_sites') ? get_sites() : wp_get_sites(); if (0 < count($ms_sites)) { foreach ($ms_sites as $ms_site) { $blog_id = isset($ms_site['blog_id']) ? $ms_site['blog_id'] : $ms_site->blog_id; switch_to_blog($blog_id); add_option($option_name, $option); } } restore_current_blog(); } else { add_option($option_name, $option); } } index.php 0 → 100644 +2 −0 Original line number Original line Diff line number Diff line <?php # Silence is golden. No newline at end of file options.php 0 → 100644 +64 −0 Original line number Original line Diff line number Diff line <?php if(!empty($_POST['Submit'])) { check_admin_referer('ga-page-stats_options'); $ga_options = array(); $ga_options['view_id'] = !empty($_POST['view_id_text']) ? addslashes(trim(wp_filter_kses($_POST['view_id_text']))) : ''; $ga_options['key_file'] = !empty($_POST['key_file_text']) ? addslashes(trim(wp_filter_kses($_POST['key_file_text']))) : ''; $update_ga_queries = array(); $update_ga_text = array(); $update_ga_queries[] = update_option('ga_page_stats_options', $ga_options); $update_ga_text[] = 'Estadísticas de página con Google Analytics'; $i = 0; $text = ''; foreach ($update_ga_queries as $update_ga_query) { if ($update_ga_query) { $text .= '<p style="color: green;">' . $update_ga_text[$i] . ' ' . 'Actualizado' . '</p>'; } $i++; } if (empty($text)) { $text = '<p style="color: red;">' . 'Ninguna opción actualizada' . '</p>'; } } $ga_options = get_option('ga_page_stats_options'); if (!empty($text)) { echo '<!-- Last Action --><div id="message" ' . 'class="updated fade"><p>' . $text . '</p></div>'; } ?> <form method="post" action="<?php echo admin_url('admin.php?page='.plugin_basename(__FILE__)); ?>"> <?php wp_nonce_field('ga-page-stats_options'); ?> <div class="wrap"> <h2>Estadísticas de página con Google Analytics</h2> <table class="form-table"> <tr> <th scope="row" valign="top">Identificador de vista</th> <td> <input type="text" name="view_id_text" value="<?php echo stripslashes($ga_options['view_id']); ?>" size="30" /> </td> </tr> <tr> <th scope="row" valign="top">Archivo con llave</th> <td> <input type="text" name="key_file_text" value="<?php echo stripslashes($ga_options['key_file']); ?>" size="30" /> </td> </tr> <tr> </table> <p class="submit"> <input type="submit" name="Submit" class="button" value="Salvar cambios" /> </p> </div> </form> uninstall.php 0 → 100644 +22 −0 Original line number Original line Diff line number Diff line <?php if (!defined('WP_UNINSTALL_PLUGIN')) exit(); $option_name = 'ga_page_stats_options'; if (is_multisite()) { $ms_sites = function_exists('get_sites') ? get_sites() : wp_get_sites(); if (0 < sizeof($ms_sites)) { foreach ($ms_sites as $ms_site) { $blog_id = isset($ms_site['blog_id']) ? $ms_site['blog_id'] : $ms_site->blog_id; switch_to_blog($blog_id); delete_option($option_name); } } restore_current_blog(); } else { delete_option($option_name); } Loading
class.ga-page-stats.php 0 → 100644 +83 −0 Original line number Original line Diff line number Diff line <?php require_once(ABSPATH . '/vendor/autoload.php'); class GAPageStats { private static $instance = null; private $view_id = null; private $analytics = null; protected function __construct() { $ga_options = get_option('ga_page_stats_options'); $this->view_id = $ga_options['view_id']; $client = new Google_Client(); $client->setApplicationName("Hello Analytics Reporting"); $client->setAuthConfig($ga_options['key_file']); $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); $this->analytics = new Google_Service_AnalyticsReporting($client); } protected function __clone() { } public function __wakeup() { throw new Exception("Cannot unserialize a singleton."); } protected static function getInstance(): GAPageStats { if (self::$instance == NULL) self::$instance = new static(); return self::$instance; } public static function getPageStats($path) { $ga = self::getInstance(); // Create the DateRange object. $dateRange = new Google_Service_AnalyticsReporting_DateRange(); $dateRange->setStartDate("2012-11-01"); $dateRange->setEndDate("today"); // Create the page views metric. $pageViews = new Google_Service_AnalyticsReporting_Metric(); $pageViews->setExpression("ga:pageviews"); $pageViews->setAlias("Page Views"); // Create the users metric. $users = new Google_Service_AnalyticsReporting_Metric(); $users->setExpression("ga:users"); $users->setAlias("Users"); // Create the page path dimension. $pagePath = new Google_Service_AnalyticsReporting_Dimension(); $pagePath->setName("ga:pagePath"); // Create the ReportRequest object. $request = new Google_Service_AnalyticsReporting_ReportRequest(); $request->setViewId($ga->view_id); $request->setDateRanges($dateRange); $request->setDimensions(array($pagePath)); $request->setMetrics(array($pageViews, $users)); $request->setFiltersExpression("ga:pagePath=~" . $path); $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); $body->setReportRequests(array($request)); $reports = $ga->analytics->reports->batchGet($body); if (count($reports) == 0) return [0, 0]; $report = $reports[0]; $rows = $report->getData()->getRows(); if (count($rows) == 0) return [0, 0]; $row = $rows[0]; $metrics = $row->getMetrics(); $values = $metrics[0]->getValues(); return [ $values[0], $values[1] ]; } }
google-analytics-page-stats.php 0 → 100644 +58 −0 Original line number Original line Diff line number Diff line <?php /** * @package Google_Analytics_Page_Stats * @version 0.0.1 */ /* Plugin Name: Google Analytics Page Stats Plugin URI: https://aztlan.fciencias.unam.mx/gitlab/google_analytics_page_stats/ Description: This plugin offers an object to get the page stats from Google Analytics; it needs configuration from a Google Analytics account. Author: Canek Peláez Version: 0.0.1 Author URI: https://aztlan.fciencias.unam.mx/~canek/ */ define('GA_PAGE_STATS__PLUGIN_DIR', plugin_dir_path(__FILE__)); require_once(GA_PAGE_STATS__PLUGIN_DIR . 'class.ga-page-stats.php'); add_action('admin_menu', 'ga_page_stats_menu'); function ga_page_stats_menu() { add_options_page('Google Analytics', 'Google Analytics', 'manage_options', 'google-analytics-page-stats/options.php') ; } function ga_page_stats_content_filter($content) { if (!is_singular() || !current_user_can('administrator')) return $content; $r = GAPageStats::getPageStats($_SERVER['REQUEST_URI']); $spv = number_format($r[0]); $su = number_format($r[1]); return $content . '<span style="font-size:small;"><em>Vistas: ' . $spv . '</em> | ' . '<em>Usuarios: ' . $su . '</em> | </span>'; } add_filter('the_content', 'ga_page_stats_content_filter'); register_activation_hook(__FILE__, 'ga_page_stats_activation'); function ga_page_stats_activation($network_wide) { // Add Options $option_name = 'ga_page_stats_options'; $option = array('view_id' => '', 'key_file' => ''); if (is_multisite() && $network_wide) { $ms_sites = function_exists('get_sites') ? get_sites() : wp_get_sites(); if (0 < count($ms_sites)) { foreach ($ms_sites as $ms_site) { $blog_id = isset($ms_site['blog_id']) ? $ms_site['blog_id'] : $ms_site->blog_id; switch_to_blog($blog_id); add_option($option_name, $option); } } restore_current_blog(); } else { add_option($option_name, $option); } }
index.php 0 → 100644 +2 −0 Original line number Original line Diff line number Diff line <?php # Silence is golden. No newline at end of file
options.php 0 → 100644 +64 −0 Original line number Original line Diff line number Diff line <?php if(!empty($_POST['Submit'])) { check_admin_referer('ga-page-stats_options'); $ga_options = array(); $ga_options['view_id'] = !empty($_POST['view_id_text']) ? addslashes(trim(wp_filter_kses($_POST['view_id_text']))) : ''; $ga_options['key_file'] = !empty($_POST['key_file_text']) ? addslashes(trim(wp_filter_kses($_POST['key_file_text']))) : ''; $update_ga_queries = array(); $update_ga_text = array(); $update_ga_queries[] = update_option('ga_page_stats_options', $ga_options); $update_ga_text[] = 'Estadísticas de página con Google Analytics'; $i = 0; $text = ''; foreach ($update_ga_queries as $update_ga_query) { if ($update_ga_query) { $text .= '<p style="color: green;">' . $update_ga_text[$i] . ' ' . 'Actualizado' . '</p>'; } $i++; } if (empty($text)) { $text = '<p style="color: red;">' . 'Ninguna opción actualizada' . '</p>'; } } $ga_options = get_option('ga_page_stats_options'); if (!empty($text)) { echo '<!-- Last Action --><div id="message" ' . 'class="updated fade"><p>' . $text . '</p></div>'; } ?> <form method="post" action="<?php echo admin_url('admin.php?page='.plugin_basename(__FILE__)); ?>"> <?php wp_nonce_field('ga-page-stats_options'); ?> <div class="wrap"> <h2>Estadísticas de página con Google Analytics</h2> <table class="form-table"> <tr> <th scope="row" valign="top">Identificador de vista</th> <td> <input type="text" name="view_id_text" value="<?php echo stripslashes($ga_options['view_id']); ?>" size="30" /> </td> </tr> <tr> <th scope="row" valign="top">Archivo con llave</th> <td> <input type="text" name="key_file_text" value="<?php echo stripslashes($ga_options['key_file']); ?>" size="30" /> </td> </tr> <tr> </table> <p class="submit"> <input type="submit" name="Submit" class="button" value="Salvar cambios" /> </p> </div> </form>
uninstall.php 0 → 100644 +22 −0 Original line number Original line Diff line number Diff line <?php if (!defined('WP_UNINSTALL_PLUGIN')) exit(); $option_name = 'ga_page_stats_options'; if (is_multisite()) { $ms_sites = function_exists('get_sites') ? get_sites() : wp_get_sites(); if (0 < sizeof($ms_sites)) { foreach ($ms_sites as $ms_site) { $blog_id = isset($ms_site['blog_id']) ? $ms_site['blog_id'] : $ms_site->blog_id; switch_to_blog($blog_id); delete_option($option_name); } } restore_current_blog(); } else { delete_option($option_name); }