Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/VisitorGenerator/Controller.php')
-rw-r--r--plugins/VisitorGenerator/Controller.php118
1 files changed, 118 insertions, 0 deletions
diff --git a/plugins/VisitorGenerator/Controller.php b/plugins/VisitorGenerator/Controller.php
new file mode 100644
index 0000000000..cac81633d3
--- /dev/null
+++ b/plugins/VisitorGenerator/Controller.php
@@ -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$
+ *
+ * @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();
+ }
+}