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

Controller.php « VisitorGenerator « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cac81633d31917daa9a76771f1633cf261ca891d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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();
	}
}