添加 Piwik 到代码库中。
+YUCHENG HU+ git-svn-id: https://svn.code.sf.net/p/hawebs/svn@449 a2543c7e-f6e9-4f8a-8bff-1ffc34733512
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: API.php 2202 2010-05-20 08:49:42Z matt $
|
||||
*
|
||||
* @category Piwik_Plugins
|
||||
* @package Piwik_VisitFrequency
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package Piwik_VisitFrequency
|
||||
*/
|
||||
class Piwik_VisitFrequency_API
|
||||
{
|
||||
static private $instance = null;
|
||||
static public function getInstance()
|
||||
{
|
||||
if (self::$instance == null)
|
||||
{
|
||||
$c = __CLASS__;
|
||||
self::$instance = new $c();
|
||||
}
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public function get( $idSite, $period, $date, $columns = array() )
|
||||
{
|
||||
Piwik::checkUserHasViewAccess( $idSite );
|
||||
$archive = Piwik_Archive::build($idSite, $period, $date );
|
||||
$bounceRateReturningRequested = false;
|
||||
if(!empty($columns))
|
||||
{
|
||||
$toFetch = $columns;
|
||||
if(($bounceRateReturningRequested = array_search('bounce_rate_returning', $toFetch)) !== false)
|
||||
{
|
||||
$toFetch = array('nb_visits_returning', 'bounce_count_returning');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$toFetch = array( 'nb_uniq_visitors_returning',
|
||||
'nb_visits_returning',
|
||||
'nb_actions_returning',
|
||||
'max_actions_returning',
|
||||
'sum_visit_length_returning',
|
||||
'bounce_count_returning',
|
||||
'nb_visits_converted_returning',
|
||||
);
|
||||
}
|
||||
$dataTable = $archive->getDataTableFromNumeric($toFetch);
|
||||
if($bounceRateReturningRequested !== false)
|
||||
{
|
||||
$dataTable->filter('ColumnCallbackAddColumnPercentage', array('bounce_rate_returning', 'bounce_count_returning', 'nb_visits_returning', 0));
|
||||
$dataTable->deleteColumns($toFetch);
|
||||
}
|
||||
return $dataTable;
|
||||
}
|
||||
|
||||
protected function getNumeric( $idSite, $period, $date, $toFetch )
|
||||
{
|
||||
Piwik::checkUserHasViewAccess( $idSite );
|
||||
$archive = Piwik_Archive::build($idSite, $period, $date );
|
||||
$dataTable = $archive->getNumeric($toFetch);
|
||||
return $dataTable;
|
||||
}
|
||||
|
||||
public function getVisitsReturning( $idSite, $period, $date )
|
||||
{
|
||||
return $this->getNumeric( $idSite, $period, $date, 'nb_visits_returning');
|
||||
}
|
||||
|
||||
public function getActionsReturning( $idSite, $period, $date )
|
||||
{
|
||||
return $this->getNumeric( $idSite, $period, $date, 'nb_actions_returning');
|
||||
}
|
||||
|
||||
public function getMaxActionsReturning( $idSite, $period, $date )
|
||||
{
|
||||
return $this->getNumeric( $idSite, $period, $date, 'max_actions_returning');
|
||||
}
|
||||
|
||||
public function getSumVisitsLengthReturning( $idSite, $period, $date )
|
||||
{
|
||||
return $this->getNumeric( $idSite, $period, $date, 'sum_visit_length_returning');
|
||||
}
|
||||
|
||||
public function getBounceCountReturning( $idSite, $period, $date )
|
||||
{
|
||||
return $this->getNumeric( $idSite, $period, $date, 'bounce_count_returning');
|
||||
}
|
||||
|
||||
public function getConvertedVisitsReturning( $idSite, $period, $date )
|
||||
{
|
||||
return $this->getNumeric( $idSite, $period, $date, 'nb_visits_converted_returning');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: Controller.php 1420 2009-08-22 13:23:16Z vipsoft $
|
||||
*
|
||||
* @category Piwik_Plugins
|
||||
* @package Piwik_VisitFrequency
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package Piwik_VisitFrequency
|
||||
*/
|
||||
class Piwik_VisitFrequency_Controller extends Piwik_Controller
|
||||
{
|
||||
function index()
|
||||
{
|
||||
$view = Piwik_View::factory('index');
|
||||
$view->graphEvolutionVisitFrequency = $this->getEvolutionGraph(true, array('nb_visits_returning') );
|
||||
$this->setSparklinesAndNumbers($view);
|
||||
echo $view->render();
|
||||
}
|
||||
|
||||
public function getSparklines()
|
||||
{
|
||||
$view = Piwik_View::factory('sparklines');
|
||||
$this->setSparklinesAndNumbers($view);
|
||||
echo $view->render();
|
||||
}
|
||||
|
||||
public function getEvolutionGraph( $fetch = false, $columns = false)
|
||||
{
|
||||
$view = $this->getLastUnitGraph($this->pluginName, __FUNCTION__, "VisitFrequency.get");
|
||||
if(empty($columns))
|
||||
{
|
||||
$columns = Piwik_Common::getRequestVar('columns');
|
||||
}
|
||||
$view->setColumnsToDisplay($columns);
|
||||
$view->setColumnsTranslations(array(
|
||||
'nb_visits_returning' => Piwik_Translate('VisitFrequency_ColumnReturningVisits'),
|
||||
'nb_actions_returning' => Piwik_Translate('VisitFrequency_ColumnActionsByReturningVisits'),
|
||||
'max_actions_returning' => Piwik_Translate('VisitFrequency_ColumnMaximumActionsByAReturningVisit'),
|
||||
'sum_visit_length_returning' => Piwik_Translate('VisitFrequency_ColumnTotalTimeSpentByReturningVisits'),
|
||||
'bounce_rate_returning' => Piwik_Translate('VisitFrequency_ColumnBounceRateForReturningVisits'),
|
||||
));
|
||||
return $this->renderView($view, $fetch);
|
||||
}
|
||||
|
||||
protected function setSparklinesAndNumbers($view)
|
||||
{
|
||||
$view->urlSparklineNbVisitsReturning = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_visits_returning')));
|
||||
$view->urlSparklineNbActionsReturning = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_actions_returning')));
|
||||
$view->urlSparklineMaxActionsReturning = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('max_actions_returning')));
|
||||
$view->urlSparklineSumVisitLengthReturning = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('sum_visit_length_returning')));
|
||||
$view->urlSparklineBounceRateReturning = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('bounce_rate_returning')));
|
||||
|
||||
$dataTableFrequency = $this->getSummary();
|
||||
$dataRow = $dataTableFrequency->getFirstRow();
|
||||
$nbVisitsReturning = $dataRow->getColumn('nb_visits_returning');
|
||||
$view->nbVisitsReturning = $nbVisitsReturning;
|
||||
$view->nbActionsReturning = $dataRow->getColumn('nb_actions_returning');
|
||||
$view->maxActionsReturning = $dataRow->getColumn('max_actions_returning');
|
||||
$view->sumVisitLengthReturning = $dataRow->getColumn('sum_visit_length_returning');
|
||||
$nbBouncedReturningVisits = $dataRow->getColumn('bounce_count_returning');
|
||||
$view->bounceRateReturning = Piwik::getPercentageSafe($nbBouncedReturningVisits, $nbVisitsReturning);
|
||||
|
||||
}
|
||||
|
||||
protected function getSummary()
|
||||
{
|
||||
$requestString = "method=VisitFrequency.get&format=original";
|
||||
$request = new Piwik_API_Request($requestString);
|
||||
return $request->process();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: VisitFrequency.php 2264 2010-06-03 16:53:43Z vipsoft $
|
||||
*
|
||||
* @category Piwik_Plugins
|
||||
* @package Piwik_VisitFrequency
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package Piwik_VisitFrequency
|
||||
*/
|
||||
class Piwik_VisitFrequency extends Piwik_Plugin
|
||||
{
|
||||
public function getInformation()
|
||||
{
|
||||
$info = array(
|
||||
'description' => Piwik_Translate('VisitFrequency_PluginDescription'),
|
||||
'author' => 'Piwik',
|
||||
'author_homepage' => 'http://piwik.org/',
|
||||
'version' => Piwik_Version::VERSION,
|
||||
);
|
||||
return $info;
|
||||
}
|
||||
|
||||
function getListHooksRegistered()
|
||||
{
|
||||
$hooks = array(
|
||||
'ArchiveProcessing_Day.compute' => 'archiveDay',
|
||||
'ArchiveProcessing_Period.compute' => 'archivePeriod',
|
||||
'WidgetsList.add' => 'addWidgets',
|
||||
'Menu.add' => 'addMenu',
|
||||
);
|
||||
return $hooks;
|
||||
}
|
||||
|
||||
function addWidgets()
|
||||
{
|
||||
Piwik_AddWidget( 'General_Visitors', 'VisitFrequency_WidgetOverview', 'VisitFrequency', 'getSparklines');
|
||||
Piwik_AddWidget( 'General_Visitors', 'VisitFrequency_WidgetGraphReturning', 'VisitFrequency', 'getEvolutionGraph', array('columns' => array('nb_visits_returning')));
|
||||
}
|
||||
|
||||
function addMenu()
|
||||
{
|
||||
Piwik_AddMenu('General_Visitors', 'VisitFrequency_SubmenuFrequency', array('module' => 'VisitFrequency', 'action' => 'index'));
|
||||
}
|
||||
|
||||
function archivePeriod( $notification )
|
||||
{
|
||||
$archiveProcessing = $notification->getNotificationObject();
|
||||
|
||||
$numericToSum = array(
|
||||
'nb_visits_returning',
|
||||
'nb_actions_returning',
|
||||
'sum_visit_length_returning',
|
||||
'bounce_count_returning',
|
||||
'nb_visits_converted_returning',
|
||||
);
|
||||
$archiveProcessing->archiveNumericValuesSum($numericToSum);
|
||||
$archiveProcessing->archiveNumericValuesMax('max_actions_returning');
|
||||
}
|
||||
|
||||
function archiveDay($notification)
|
||||
{
|
||||
/* @var $archiveProcessing Piwik_ArchiveProcessing */
|
||||
$archiveProcessing = $notification->getNotificationObject();
|
||||
|
||||
$query = "SELECT count(distinct visitor_idcookie) as nb_uniq_visitors_returning,
|
||||
count(*) as nb_visits_returning,
|
||||
sum(visit_total_actions) as nb_actions_returning,
|
||||
max(visit_total_actions) as max_actions_returning,
|
||||
sum(visit_total_time) as sum_visit_length_returning,
|
||||
sum(case visit_total_actions when 1 then 1 else 0 end) as bounce_count_returning,
|
||||
sum(case visit_goal_converted when 1 then 1 else 0 end) as nb_visits_converted_returning
|
||||
FROM ".$archiveProcessing->logTable."
|
||||
WHERE visit_last_action_time >= ?
|
||||
AND visit_last_action_time <= ?
|
||||
AND idsite = ?
|
||||
AND visitor_returning = 1";
|
||||
$row = $archiveProcessing->db->fetchRow($query, array( $archiveProcessing->getStartDatetimeUTC(), $archiveProcessing->getEndDatetimeUTC(), $archiveProcessing->idsite ) );
|
||||
|
||||
if($row === false || $row === null)
|
||||
{
|
||||
$row['nb_visits_returning'] = 0;
|
||||
$row['nb_actions_returning'] = 0;
|
||||
$row['max_actions_returning'] = 0;
|
||||
$row['sum_visit_length_returning'] = 0;
|
||||
$row['bounce_count_returning'] = 0;
|
||||
$row['nb_visits_converted_returning'] = 0;
|
||||
}
|
||||
|
||||
foreach($row as $name => $value)
|
||||
{
|
||||
$archiveProcessing->insertNumericRecord($name, $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{postEvent name="template_headerVisitsFrequency"}
|
||||
<script type="text/javascript" src="plugins/CoreHome/templates/sparkline.js"></script>
|
||||
|
||||
<a name="evolutionGraph" graphId="VisitFrequencygetEvolutionGraph"></a>
|
||||
<h2>{'VisitFrequency_ColumnReturningVisits'|translate}</h2>
|
||||
{$graphEvolutionVisitFrequency}
|
||||
<br />
|
||||
|
||||
{include file=VisitFrequency/templates/sparklines.tpl}
|
||||
|
||||
{postEvent name="template_footerVisitsFrequency"}
|
||||
@@ -0,0 +1,11 @@
|
||||
<div class="sparkline">{sparkline src=$urlSparklineNbVisitsReturning}
|
||||
{'VisitFrequency_ReturnVisits'|translate:"<strong>$nbVisitsReturning</strong>"}</div>
|
||||
<div class="sparkline">{sparkline src=$urlSparklineNbActionsReturning}
|
||||
{'VisitFrequency_ReturnActions'|translate:"<strong>$nbActionsReturning</strong>"}</div>
|
||||
<div class="sparkline">{sparkline src=$urlSparklineMaxActionsReturning}
|
||||
{'VisitFrequency_ReturnMaxActions'|translate:"<strong>$maxActionsReturning</strong>"}</div>
|
||||
<div class="sparkline">{sparkline src=$urlSparklineSumVisitLengthReturning}
|
||||
{assign var=sumtimeVisitLengthReturning value=$sumVisitLengthReturning|sumtime}
|
||||
{'VisitFrequency_ReturnTotalTime'|translate:"<strong>$sumtimeVisitLengthReturning</strong>"}</div>
|
||||
<div class="sparkline">{sparkline src=$urlSparklineBounceRateReturning}
|
||||
{'VisitFrequency_ReturnBounceRate'|translate:"<strong>$bounceRateReturning%</strong>"} </div>
|
||||
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: Controller.php 2245 2010-05-31 10:30:02Z matt $
|
||||
*
|
||||
* @category Piwik_Plugin
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
class Piwik_VisitorGenerator_Controller extends Piwik_Controller {
|
||||
|
||||
public function index() {
|
||||
Piwik::checkUserIsSuperUser();
|
||||
|
||||
$sitesList = Piwik_SitesManager_API::getInstance()->getSitesWithAdminAccess();
|
||||
|
||||
$view = Piwik_View::factory('index');
|
||||
$this->setGeneralVariablesView($view);
|
||||
$view->assign('sitesList', $sitesList);
|
||||
|
||||
$view->menu = Piwik_GetAdminMenu();
|
||||
echo $view->render();
|
||||
}
|
||||
|
||||
public function generate() {
|
||||
// Only admin is allowed to do this!
|
||||
Piwik::checkUserIsSuperUser();
|
||||
$this->checkTokenInUrl();
|
||||
|
||||
$GET = $_GET;
|
||||
$POST = $_POST;
|
||||
$COOKIE = $_COOKIE;
|
||||
$REQUEST = $_REQUEST;
|
||||
|
||||
if(Piwik_Common::getRequestVar('choice', 'no') != 'yes') {
|
||||
Piwik::redirectToModule('VisitorGenerator', 'index');
|
||||
}
|
||||
|
||||
$minVisitors = Piwik_Common::getRequestVar('minVisitors', 20, 'int');
|
||||
$maxVisitors = Piwik_Common::getRequestVar('maxVisitors', 100, 'int');
|
||||
$nbActions = Piwik_Common::getRequestVar('nbActions', 10, 'int');
|
||||
$daysToCompute = Piwik_Common::getRequestVar('daysToCompute', 1, 'int');
|
||||
$idSite = Piwik_Common::getRequestVar('idSite');
|
||||
Piwik::setMaxExecutionTime(0);
|
||||
|
||||
$loadedPlugins = Piwik_PluginsManager::getInstance()->getLoadedPlugins();
|
||||
$loadedPlugins = array_keys($loadedPlugins);
|
||||
// we have to unload the Provider plugin otherwise it tries to lookup the IP for a hostname, and there is no dns server here
|
||||
if(Piwik_PluginsManager::getInstance()->isPluginActivated('Provider')) {
|
||||
Piwik_PluginsManager::getInstance()->unloadPlugin('Provider');
|
||||
}
|
||||
|
||||
// we set the DO NOT load plugins so that the Tracker generator doesn't load the plugins we've just disabled.
|
||||
// if for some reasons you want to load the plugins, comment this line, and disable the plugin Provider in the plugins interface
|
||||
Piwik_PluginsManager::getInstance()->doNotLoadPlugins();
|
||||
|
||||
$generator = new Piwik_VisitorGenerator_Generator();
|
||||
$generator->setMaximumUrlDepth(3);
|
||||
|
||||
//$generator->disableProfiler();
|
||||
$generator->setIdSite( $idSite );
|
||||
|
||||
$nbActionsTotal = 0;
|
||||
//$generator->emptyAllLogTables();
|
||||
$generator->init();
|
||||
|
||||
$timer = new Piwik_Timer;
|
||||
|
||||
$startTime = time() - ($daysToCompute-1)*86400;
|
||||
$dates = array();
|
||||
while($startTime <= time()) {
|
||||
$visitors = rand($minVisitors, $maxVisitors);
|
||||
$actions = $nbActions;
|
||||
$generator->setTimestampToUse($startTime);
|
||||
|
||||
$nbActionsTotalThisDay = $generator->generate($visitors, $actions);
|
||||
$actionsPerVisit = round($nbActionsTotalThisDay / $visitors);
|
||||
|
||||
$date = array();
|
||||
$date['visitors'] = $visitors;
|
||||
$date['actionsPerVisit'] = $actionsPerVisit;
|
||||
$date['startTime'] = $startTime;
|
||||
$dates[] = $date;
|
||||
|
||||
$startTime += 86400;
|
||||
$nbActionsTotal += $nbActionsTotalThisDay;
|
||||
//sleep(1);
|
||||
}
|
||||
|
||||
$generator->end();
|
||||
|
||||
// Recover all super globals
|
||||
$_GET = $GET;
|
||||
$_POST = $POST;
|
||||
$_COOKIE = $COOKIE;
|
||||
$_REQUEST = $REQUEST;
|
||||
|
||||
// Reload plugins
|
||||
Piwik_PluginsManager::getInstance()->loadPlugins($loadedPlugins);
|
||||
|
||||
// Init view
|
||||
$view = Piwik_View::factory('generate');
|
||||
$view->menu = Piwik_GetAdminMenu();
|
||||
$this->setGeneralVariablesView($view);
|
||||
$view->assign('dates', $dates);
|
||||
$view->assign('timer', $timer);
|
||||
$view->assign('nbActionsTotal', $nbActionsTotal);
|
||||
$view->assign('nbRequestsPerSec', round($nbActionsTotal / $timer->getTime(),0));
|
||||
echo $view->render();
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: Tracker.php 2245 2010-05-31 10:30:02Z matt $
|
||||
*
|
||||
* @category Piwik_Plugin
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
|
||||
/**
|
||||
* Fake Piwik_Tracker that:
|
||||
* - overwrite the sendHeader method so that no headers are sent.
|
||||
* - doesn't print the 1pixel transparent GIF at the end of the visit process
|
||||
* - overwrite the Tracker Visit object to use so we use our own Tracker_visit @see Piwik_Tracker_Generator_Visit
|
||||
*
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
class Piwik_VisitorGenerator_Tracker extends Piwik_Tracker
|
||||
{
|
||||
/**
|
||||
* Does nothing instead of sending headers
|
||||
*/
|
||||
protected function sendHeader($header)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Does nothing instead of displaying a 1x1 transparent pixel GIF
|
||||
*/
|
||||
protected function end()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns our 'generator home made' Piwik_VisitorGenerator_Visit object.
|
||||
*
|
||||
* @return Piwik_VisitorGenerator_Visit
|
||||
*/
|
||||
protected function getNewVisitObject()
|
||||
{
|
||||
$visit = new Piwik_VisitorGenerator_Visit();
|
||||
$visit->generateTimestamp();
|
||||
return $visit;
|
||||
}
|
||||
|
||||
static function disconnectDatabase()
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: Visit.php 2245 2010-05-31 10:30:02Z matt $
|
||||
*
|
||||
* @category Piwik_Plugin
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
|
||||
/**
|
||||
* Fake Piwik_Tracker_Visit class that overwrite all the Time related method to be able
|
||||
* to setup a given timestamp for the generated visitor and actions.
|
||||
*
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
class Piwik_VisitorGenerator_Visit extends Piwik_Tracker_Visit
|
||||
{
|
||||
static protected $timestampToUse;
|
||||
|
||||
static public function setTimestampToUse($time)
|
||||
{
|
||||
self::$timestampToUse = $time;
|
||||
}
|
||||
protected function getCurrentDate( $format = "Y-m-d")
|
||||
{
|
||||
return date($format, $this->getCurrentTimestamp() );
|
||||
}
|
||||
|
||||
protected function getCurrentTimestamp()
|
||||
{
|
||||
return self::$timestampToUse;
|
||||
}
|
||||
|
||||
public function generateTimestamp()
|
||||
{
|
||||
self::$timestampToUse = max(@$this->visitorInfo['visit_last_action_time'],self::$timestampToUse);
|
||||
self::$timestampToUse += mt_rand(4,1840);
|
||||
}
|
||||
|
||||
protected function updateCookie()
|
||||
{
|
||||
@parent::updateCookie();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: VisitorGenerator.php 2264 2010-06-03 16:53:43Z vipsoft $
|
||||
*
|
||||
* @category Piwik_Plugin
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
class Piwik_VisitorGenerator extends Piwik_Plugin {
|
||||
|
||||
public function getInformation() {
|
||||
$info = array(
|
||||
'description' => Piwik_Translate('VisitorGenerator_PluginDescription'),
|
||||
'author' => 'Piwik',
|
||||
'author_homepage' => 'http://piwik.org/',
|
||||
'version' => Piwik_Version::VERSION,
|
||||
);
|
||||
return $info;
|
||||
}
|
||||
|
||||
public function getListHooksRegistered() {
|
||||
return array(
|
||||
'AdminMenu.add' => 'addMenu',
|
||||
);
|
||||
}
|
||||
|
||||
public function addMenu() {
|
||||
Piwik_AddAdminMenu(
|
||||
'VisitorGenerator_VisitorGenerator',
|
||||
array('module' => 'VisitorGenerator', 'action' => 'index'),
|
||||
Piwik::isUserIsSuperUser(),
|
||||
$order = 10
|
||||
);
|
||||
}
|
||||
}
|
||||
?>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
|
||||
* @version $Id: UserAgent.php 2334 2010-06-22 05:24:07Z vipsoft $
|
||||
*
|
||||
* @category Piwik_Plugin
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
|
||||
/**
|
||||
* User-Agent: strings
|
||||
*
|
||||
* @package Piwik_VisitorGenerator
|
||||
*/
|
||||
$userAgent = array(
|
||||
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
|
||||
"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0 )",
|
||||
"Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)",
|
||||
"Mozilla/4.8 [en] (Windows NT 5.1; U)",
|
||||
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.0",
|
||||
"Opera/7.51 (Windows NT 5.1; U) [en]",
|
||||
"Opera/7.50 (Windows XP; U)",
|
||||
"Avant Browser/1.2.789rel1 (http://www.avantbrowser.com)",
|
||||
"Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko Netscape/7.1 (ax)",
|
||||
"Mozilla/5.0 (Windows; U; Windows XP) Gecko MultiZilla/1.6.1.0a",
|
||||
"Opera/7.50 (Windows ME; U) [en]",
|
||||
"Mozilla/3.01Gold (Win95; I)",
|
||||
"Mozilla/2.02E (Win95; U)",
|
||||
"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
|
||||
"Googlebot/2.1 (+http://www.googlebot.com/bot.html)",
|
||||
"msnbot/1.0 (+http://search.msn.com/msnbot.htm)",
|
||||
"msnbot/0.11 (+http://search.msn.com/msnbot.htm)",
|
||||
"Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)",
|
||||
"Mozilla/2.0 (compatible; Ask Jeeves/Teoma)",
|
||||
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8",
|
||||
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/85.8",
|
||||
"Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC)",
|
||||
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7a) Gecko/20040614 Firefox/0.9.0+",
|
||||
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.15",
|
||||
"Mozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Debian/1.6-7",
|
||||
"ozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Epiphany/1.2.5",
|
||||
"Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4 (Ubuntu)",
|
||||
"Mozilla/5.0 (X11; U; Linux; i686; en-US; rv:1.6) Gecko Galeon/1.3.14",
|
||||
"Konqueror/3.0-rc4; (Konqueror/3.0-rc4; i686 Linux;;datecode)",
|
||||
"Mozilla/5.0 (compatible; Konqueror/3.3; Linux 2.6.8-gentoo-r3; X11;",
|
||||
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8",
|
||||
"ELinks/0.9.3 (textmode; Linux 2.6.9-kanotix-8 i686; 127x41)",
|
||||
"ELinks (0.4pre5; Linux 2.6.10-ac7 i686; 80x33)",
|
||||
"Links (2.1pre15; Linux 2.4.26 i686; 158x61)",
|
||||
"Links/0.9.1 (Linux 2.4.24; i386;)",
|
||||
"MSIE (MSIE 6.0; X11; Linux; i686) Opera 7.23",
|
||||
"Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/0.8.12",
|
||||
"w3m/0.5.1",
|
||||
"Links (2.1pre15; FreeBSD 5.3-RELEASE i386; 196x84)",
|
||||
"Mozilla/5.0 (X11; U; FreeBSD; i386; en-US; rv:1.7) Gecko",
|
||||
"Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)",
|
||||
"Mozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u)",
|
||||
"Mozilla/3.0 (compatible; NetPositive/2.1.1; BeOS)",
|
||||
"Gulper Web Bot 0.2.4 (www.ecsl.cs.sunysb.edu/~maxim/cgi-bin/Link/GulperBot)",
|
||||
"EmailWolf 1.00",
|
||||
"grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)",
|
||||
"Download Demon/3.5.0.11",
|
||||
"OmniWeb/2.7-beta-3 OWF/1.0",
|
||||
"SearchExpress",
|
||||
"Microsoft URL Control - 6.00.8862",
|
||||
);
|
||||
@@ -0,0 +1,30 @@
|
||||
{assign var=showSitesSelection value=false}
|
||||
{assign var=showPeriodSelection value=false}
|
||||
{include file="CoreAdminHome/templates/header.tpl"}
|
||||
|
||||
<h2>{'VisitorGenerator_VisitorGenerator'|translate}</h2>
|
||||
|
||||
<table class="adminTable adminTableNoBorder" style="width: 600px;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{'VisitorGenerator_Visitors'|translate}</th>
|
||||
<th>{'VisitorGenerator_ActionsPerVisit'|translate}</th>
|
||||
<th>{'VisitorGenerator_Date'|translate}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$dates item=date}
|
||||
<tr>
|
||||
<td>{$date.visitors}</td>
|
||||
<td>{$date.actionsPerVisit}</td>
|
||||
<td>{$date.startTime|date_format:"%Y-%m-%d"}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>{'VisitorGenerator_NbActions'|translate}: {$nbActionsTotal}<br />
|
||||
{'VisitorGenerator_NbRequestsPerSec'|translate}: {$nbRequestsPerSec}<br />
|
||||
{$timer}</p>
|
||||
|
||||
{include file="CoreAdminHome/templates/footer.tpl"}
|
||||
@@ -0,0 +1,45 @@
|
||||
{assign var=showSitesSelection value=false}
|
||||
{assign var=showPeriodSelection value=false}
|
||||
{include file="CoreAdminHome/templates/header.tpl"}
|
||||
|
||||
<h2>{'VisitorGenerator_VisitorGenerator'|translate}</h2>
|
||||
<p>{'VisitorGenerator_PluginDescription'|translate}</p>
|
||||
|
||||
<form method="POST" action="{url module=VisitorGenerator action=generate}">
|
||||
<table class="adminTable adminTableNoBorder" style="width: 600px;">
|
||||
<tr>
|
||||
<td><label for="idSite">{'VisitorGenerator_SelectWebsite'|translate}</label></td>
|
||||
<td><select name="idSite">
|
||||
{foreach from=$sitesList item=site}
|
||||
<option value="{$site.idsite}">{$site.name}</option>
|
||||
{/foreach}
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="minVisitors">{'VisitorGenerator_MinVisitors'|translate}</label></td>
|
||||
<td><input type="text" value="20" name="minVisitors" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="maxVisitors">{'VisitorGenerator_MaxVisitors'|translate}</label></td>
|
||||
<td><input type="text" value="100" name="maxVisitors" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="nbActions">{'VisitorGenerator_NbActions'|translate}</label></td>
|
||||
<td><input type="text" value="10" name="nbActions" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="daysToCompute">{'VisitorGenerator_DaysToCompute'|translate}</label></td>
|
||||
<td><input type="text" value="1" name="daysToCompute" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>{'VisitorGenerator_Warning'|translate}<br />
|
||||
{'VisitorGenerator_NotReversible'|translate:'<b>':'</b>'}<br /><br />
|
||||
{'VisitorGenerator_AreYouSure'|translate}<br />
|
||||
</p>
|
||||
<input type="checkbox" name="choice" id="choice" value="yes" /> <label for="choice">{'VisitorGenerator_ChoiceYes'|translate}</label>
|
||||
<br />
|
||||
<input type="hidden" value="{$token_auth}" name="token_auth" />
|
||||
<input type="submit" value="{'VisitorGenerator_Submit'|translate}" name="submit" class="submit" />
|
||||
</form>
|
||||
|
||||
{include file="CoreAdminHome/templates/footer.tpl"}
|
||||
Reference in New Issue
Block a user