Your IP : 216.73.216.1
<?php
/**
* The Google Analytics Stats Widget
*
* Now using widget API available in WordPress 2.8
* @author Spiral Web Consulting
**/
class GoogleStatsWidget extends WP_Widget
{
function __construct($shortcode = FALSE) {
$widget_ops = array('classname' => 'widget_google_stats', 'description' => __("Displays Stat Info From Google Analytics", 'google-analyticator') );
$control_ops = array('width' => 400, 'height' => 400);
//$this->WP_Widget('googlestats', __('Google Analytics Stats', 'google-analyticator'), $widget_ops, $control_ops);
parent::__construct('googlestats', __('Google Analytics Stats', 'google-analyticator'), $widget_ops, $control_ops);
if ($shortcode) {
$this->widget();
}
}
function widget($args = array(), $instance = array()) {
extract($args);
$title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title']);
$acnt = false;
$timeFrame = empty($instance['timeFrame']) ? '1' : $instance['timeFrame'];
$pageBg = empty($instance['pageBg']) ? 'fff' : $instance['pageBg'];
$widgetBg = empty($instance['widgetBg']) ? '999' : $instance['widgetBg'];
$innerBg = empty($instance['innerBg']) ? 'fff' : $instance['innerBg'];
$font = empty($instance['font']) ? '333' : $instance['font'];
$line1 = empty($instance['line1']) ? 'Unique' : $instance['line1'];
$line2 = empty($instance['line2']) ? 'Visitors' : $instance['line2'];
# Before the widget
if (isset($before_widget)) {
echo $before_widget;
}
# The title
if ( $title )
echo $before_title . $title . $after_title;
# Make the stats chicklet
echo '<!-- Data gathered from last ' . number_format($timeFrame) . ' days using Google Analyticator -->';
$this->initiateBackground($pageBg, $font);
$this->beginWidget($font, $widgetBg);
$this->widgetInfo($this->getUniqueVisitors($acnt, $timeFrame), $line1, $line2, $innerBg, $font);
$this->endWidget();
# After the widget
if (isset($after_widget)) {
echo $after_widget;
}
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags(stripslashes($new_instance['title']));
$instance['account'] = strip_tags(stripslashes($new_instance['account']));
$instance['timeFrame'] = strip_tags(stripslashes($new_instance['timeFrame']));
$instance['pageBg'] = strip_tags(stripslashes($new_instance['pageBg']));
$instance['widgetBg'] = strip_tags(stripslashes($new_instance['widgetBg']));
$instance['innerBg'] = strip_tags(stripslashes($new_instance['innerBg']));
$instance['font'] = strip_tags(stripslashes($new_instance['font']));
$instance['line1'] = strip_tags(stripslashes($new_instance['line1']));
$instance['line2'] = strip_tags(stripslashes($new_instance['line2']));
return $instance;
}
function form($instance) {
//Defaults
$instance = wp_parse_args( (array) $instance, array('title'=>'', 'account'=>'', 'timeFrame'=>'1', 'pageBg'=>'fff', 'widgetBg'=>'999', 'innerBg'=>'fff', 'font'=>'333', 'line1'=>'Unique', 'line2'=>'Visitors') );
$title = htmlspecialchars($instance['title']);
$acnt = htmlspecialchars($instance['account']);
$timeFrame = htmlspecialchars($instance['timeFrame']);
$pageBg = htmlspecialchars($instance['pageBg']);
$widgetBg = htmlspecialchars($instance['widgetBg']);
$innerBg = htmlspecialchars($instance['innerBg']);
$font = htmlspecialchars($instance['font']);
$line1 = htmlspecialchars($instance['line1']);
$line2 = htmlspecialchars($instance['line2']);
$accounts = array();
# Get the current memory limit
$current_mem_limit = substr(ini_get('memory_limit'), 0, -1);
# Check if this limit is less than 96M, if so, increase it
if ( $current_mem_limit < 96 || $current_mem_limit == '' ) {
if ( function_exists('memory_get_usage') )
@ini_set('memory_limit', '96M');
}
# Get the class for interacting with the Google Analytics
require_once('class.analytics.stats.php');
# Create a new Gdata call
$stats = new GoogleAnalyticsStats();
# Check if Google sucessfully logged in
$login = $stats->checkLogin();
if( !$login )
return false;
# Get a list of accounts
//$accounts = $stats->getAnalyticsAccounts();
$accounts = $stats->getSingleProfile();
# Output the options
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('title') . '">' . __('Title', 'google-analyticator') . ': <input style="width: 250px;" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></label></p>';
# Time frame
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('timeFrame') . '">' . __('Days of data to get', 'google-analyticator') . ': <input style="width: 150px;" id="' . $this->get_field_id('timeFrame') . '" name="' . $this->get_field_name('timeFrame') . '" type="text" value="' . $timeFrame . '" /></label></p>';
# Page background
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('pageBg') . '">' . __('Page background', 'google-analyticator') . ': <input style="width: 150px;" id="' . $this->get_field_id('pageBg') . '" name="' . $this->get_field_name('pageBg') . '" type="text" value="' . $pageBg . '" /></label></p>';
# Widget background
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('widgetBg') . '">' . __('Widget background', 'google-analyticator') . ': <input style="width: 150px;" id="' . $this->get_field_id('widgetBg') . '" name="' . $this->get_field_name('widgetBg') . '" type="text" value="' . $widgetBg . '" /></label></p>';
# Inner background
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('innerBg') . '">' . __('Inner background', 'google-analyticator') . ': <input style="width: 150px;" id="' . $this->get_field_id('innerBg') . '" name="' . $this->get_field_name('innerBg') . '" type="text" value="' . $innerBg . '" /></label></p>';
# Font color
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('font') . '">' . __('Font color', 'google-analyticator') . ': <input style="width: 150px;" id="' . $this->get_field_id('font') . '" name="' . $this->get_field_name('font') . '" type="text" value="' . $font . '" /></label></p>';
# Text line 1
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('line1') . '">' . __('Line 1 text', 'google-analyticator') . ': <input style="width: 200px;" id="' . $this->get_field_id('line1') . '" name="' . $this->get_field_name('line1') . '" type="text" value="' . $line1 . '" /></label></p>';
# Text line 2
echo '<p style="text-align:right;"><label for="' . $this->get_field_name('line2') . '">' . __('Line 2 text', 'google-analyticator') . ': <input style="width: 200px;" id="' . $this->get_field_id('line2') . '" name="' . $this->get_field_name('line2') . '" type="text" value="' . $line2 . '" /></label></p>';
}
/**
* This function is used to display the background color behind the widget. This is necessary
* for the Google Analytics text to have the same background color as the page.
*
* @param $font_color - Hexadecimal value for the font color used within the Widget (does not effect "Powered By Google Analytics Text"). This effects border color as well.
* @param $page_background_color - Hexadecimal value for the page background color
* @return void
**/
function initiateBackground($page_background_color = 'FFF', $font_color = '000')
{
echo '<br />';
echo '<div style="background:#' . $page_background_color . ';font-size:12px;color:#' . $font_color . ';font-family:\'Lucida Grande\',Helvetica,Verdana,Sans-Serif;">';
}
/**
* This function starts the widget. The font color and widget background color are customizable.
*
* @param $font_color - Hexadecimal value for the font color used within the Widget (does not effect "Powered By Google Analytics Text"). This effects border color as well.
* @param $widget_background_color - Hexadecimal value for the widget background color.
* @return void
**/
function beginWidget($font_color = '000', $widget_background_color = 'FFF')
{
echo '<table style="width:auto!important;border-width:2px;border-color:#' . $font_color . ';border-style:solid;background:#' . $widget_background_color . ';margin-bottom:0;"><tr>';
}
/**
* This function encases the text that appears on the right hand side of the widget.
* Both lines of text are customizable by each individual user.
*
* It also displays the visitor count that was pulled from the user's Google Analytics account.
*
* @param $visitor_count - Number of unique visits to the site pulled from the user's Google Analytics account.
* @param $line_one - First line of text displayed on the right hand side of the widget.
* @param $line_two - Second line of text displayed on the right hand side of the widget.
* @param $inner_background_color - Hexadecimal value for the background color that surrounds the Visitor Count.
* @param $font_color - Hexadecimal value for the font color used within the Widget (does not effect "Powered By Google Analytics Text"). This effects border color as well
* @return void
**/
function widgetInfo($visitor_count, $line_one = 'Unique', $line_two = 'Visitors', $inner_background_color = 'FFF', $font_color = '000')
{
echo '<td style="width:auto!important;border-width:1px;border-color:#' . $font_color . ';border-style:solid;padding:0px 5px 0px 5px;text-align:right;background:#' . $inner_background_color . ';min-width:80px;*width:80px!important;vertical-align:middle;"><div style="min-width:80px;">'. $visitor_count . '</div></td>';
echo '<td style="width:auto!important;padding:0px 5px 0px 5px;text-align:center;font-size:11px;">' . $line_one . '<br />' . $line_two . '</td>';
}
/**
* The function is used strictly for visual appearance. It also displays the Google Analytics text.
*
* @return void
**/
function endWidget()
{
// This closes off the widget.
echo '</tr></table>';
// The following is used to displayed the "Powered By Google Anayltics" text.
if (get_option(key_ga_show_ad) == '1') {
echo '<div style="font-size:9px;color:#666666;margin-top:0px;font-family:Verdana;">Powered By <a href="https://wordpress.org/plugins/google-analyticator/" title="Google Analyticator for Wordpress" style="text-decoration:none;" target="_blank"><img src="' . plugins_url('/google-analyticator/ga_logo.png') . '" alt="Google Analytics" style="border:0px;position:relative;top:4px;" /></a></div>';
}
echo '</div>';
}
/**
* Grabs the cached value of the unique visits for the previous day
*
* @param account - the account to get the unique visitors from
* @param time - the amount of days to get
* @return void
**/
function getUniqueVisitors($account, $time = 1)
{
// IF we have a cached version, return that, if not, continue on.
if ( get_transient( 'google_stats_uniques' ) )
return get_transient( 'google_stats_uniques' );
# Get the class for interacting with the Google Analytics
require_once('class.analytics.stats.php');
# Create a new Gdata call
$stats = new GoogleAnalyticsStats();
# Check if Google sucessfully logged in
if ( ! $stats->checkLogin() )
return false;
$account = $stats->getSingleProfile();
$account = $account[0]['id'];
# Set the account to the one requested
$stats->setAccount($account);
# Get the latest stats
$before = date('Y-m-d', strtotime('-' . $time . ' days'));
$yesterday = date('Y-m-d', strtotime('-1 day'));
try{
$result = $stats->getMetrics('ga:visitors', $before, $yesterday);
}
catch(Exception $e){
print 'GA Widget - there was a service error ' . $e->getCode() . ':' . $e->getMessage();
}
$uniques = number_format($result->totalsForAllResults['ga:visitors']);
# Store the array
set_transient( 'google_stats_uniques', $uniques, 60*60*12 );
# Return the visits
return $uniques;
}
}// END class
/**
* Register Google Analytics Stat Widget.
*/
function GoogleStatsWidget_init() {
register_widget('GoogleStatsWidget');
}
add_action('widgets_init', 'GoogleStatsWidget_init');