public function setUp() { parent::setUp(); // setup the access layer FakeAccess::$superUser = true; Manager::getInstance()->loadTrackerPlugins(); Manager::getInstance()->loadPlugin('SitesManager'); Visit::$dimensions = null; }
private function trackVisits($visitorCount, $setIp = false, $useLocal = true, $doBulk = false) { static $calledCounter = 0; $calledCounter++; $dateTime = $this->dateTime; $idSite = $this->idSite; if ($useLocal) { Cache::getTransientCache()->flushAll(); // make sure dimension cache is empty between local tracking runs Visit::$dimensions = null; } // use local tracker so mock location provider can be used $t = self::getTracker($idSite, $dateTime, $defaultInit = true, $useLocal); if ($doBulk) { $t->enableBulkTracking(); } $t->setTokenAuth(self::getTokenAuth()); for ($i = 0; $i != $visitorCount; ++$i) { $t->setVisitorId(substr(md5($i + $calledCounter * 1000), 0, $t::LENGTH_VISITOR_ID)); if ($setIp) { $t->setIp(current($this->ips)); next($this->ips); } else { $t->setIp("1.2.4.{$i}"); } // first visit $date = Date::factory($dateTime)->addDay($i); $t->setForceVisitDateTime($date->getDatetime()); $t->setUrl("http://piwik.net/grue/lair"); $t->setCustomVariable(1, 'Cvar 1 name', 'Cvar1 value is ' . $i, 'visit'); $t->setCustomVariable(5, 'Cvar 5 name', 'Cvar5 value is ' . $i, 'visit'); $t->setCustomVariable(2, 'Cvar 2 PAGE name', 'Cvar2 PAGE value is ' . $i, 'page'); $t->setCustomVariable(5, 'Cvar 5 PAGE name', 'Cvar5 PAGE value is ' . $i, 'page'); $r = $t->doTrackPageView('It\'s <script> pitch black...'); if (!$doBulk) { self::checkResponse($r); } // second visit $date = $date->addHour(1); $t->setForceVisitDateTime($date->getDatetime()); $t->setUrl("http://piwik.net/space/quest/iv"); // Manually record some data $t->setDebugStringAppend('&_idts=' . $date->subDay(100)->getTimestampUTC() . '&_ects=' . $date->subDay(50)->getTimestampUTC() . '&_viewts=' . $date->subDay(10)->getTimestampUTC() . '&_idvc=5'); $r = $t->doTrackPageView("Space Quest XII"); if (!$doBulk) { self::checkResponse($r); } // Track site search (for AutoSuggestAPI test) // Only for half visitors so they don't all have a "site search" as last action and some of them have a standard page view as last action $date = $date->addHour(0.1); $t->setForceVisitDateTime($date->getDatetime()); if ($i % 2 == 0) { $r = $t->doTrackSiteSearch('Bring on the party', 'CAT'); } if (!$doBulk) { self::checkResponse($r); } $date = $date->addHour(0.2); $t->setForceVisitDateTime($date->getDatetime()); $r = $t->doTrackGoal($this->idGoal2); if (!$doBulk) { self::checkResponse($r); } $date = $date->addHour(0.05); $t->setForceVisitDateTime($date->getDatetime()); $t->doTrackAction('http://example.org/path/file' . $i . '.zip', "download"); if (!$doBulk) { self::checkResponse($r); } $date = $date->addHour(0.05); $t->setForceVisitDateTime($date->getDatetime()); $r = $t->doTrackAction('http://example-outlink.org/' . $i . '.html', "link"); if (!$doBulk) { self::checkResponse($r); } $date = $date->addHour(0.05); $t->setForceVisitDateTime($date->getDatetime()); $r = $t->doTrackEvent('Cat' . $i, 'Action' . $i, 'Name' . $i, 345.678 + $i); if (!$doBulk) { self::checkResponse($r); } } if ($doBulk) { self::checkBulkTrackingResponse($t->doBulkTrack()); } }
protected function sendRequest($url, $method = 'GET', $data = null, $force = false) { if ($this->DEBUG_APPEND_URL) { $url .= $this->DEBUG_APPEND_URL; } // if doing a bulk request, store the url if ($this->doBulkRequests && !$force) { $this->storedTrackingActions[] = $url; return true; } if ($method == 'POST') { $requests = array(); foreach ($this->storedTrackingActions as $action) { $requests[] = $this->parseUrl($action); } $testEnvironmentArgs = array(); } else { $testEnvironmentArgs = $this->parseUrl($url); $requests = array($testEnvironmentArgs); } // unset cached values Cache::$cache = null; Tracker\Visit::$dimensions = null; // save some values $plugins = Config::getInstance()->Plugins['Plugins']; $oldTrackerConfig = Config::getInstance()->Tracker; \Piwik\Plugin\Manager::getInstance()->unloadPlugins(); // modify config \Piwik\SettingsServer::setIsTrackerApiRequest(); $GLOBALS['PIWIK_TRACKER_LOCAL_TRACKING'] = true; Tracker::$initTrackerMode = false; Tracker::setTestEnvironment($testEnvironmentArgs, $method); // set language $oldLang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : ''; $_SERVER['HTTP_ACCEPT_LANGUAGE'] = $this->acceptLanguage; // set user agent $oldUserAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $_SERVER['HTTP_USER_AGENT'] = $this->userAgent; // set cookie $oldCookie = $_COOKIE; // parse_str(parse_url($this->requestCookie, PHP_URL_QUERY), $_COOKIE); // do tracking and capture output ob_start(); $localTracker = new Tracker(); $request = new Tracker\RequestSet(); $request->setRequests($requests); \Piwik\Plugin\Manager::getInstance()->loadTrackerPlugins(); $handler = Tracker\Handler\Factory::make(); $response = $localTracker->main($handler, $request); if (!is_null($response)) { echo $response; } $output = ob_get_contents(); ob_end_clean(); // restore vars Config::getInstance()->Tracker = $oldTrackerConfig; $_SERVER['HTTP_ACCEPT_LANGUAGE'] = $oldLang; $_SERVER['HTTP_USER_AGENT'] = $oldUserAgent; $_COOKIE = $oldCookie; $GLOBALS['PIWIK_TRACKER_LOCAL_TRACKING'] = false; \Piwik\SettingsServer::setIsNotTrackerApiRequest(); unset($_GET['bots']); // reload plugins \Piwik\Plugin\Manager::getInstance()->loadPlugins($plugins); return $output; }
private function setDimensionsWithOnNewVisit($dimensionOnNewVisitResults) { $dimensions = array(); foreach ($dimensionOnNewVisitResults as $onNewVisitResult) { $dim = $this->getMock('Piwik\\Plugin\\Dimension', array('shouldForceNewVisit', 'getColumnName')); $dim->expects($this->any())->method('shouldForceNewVisit')->will($this->returnValue($onNewVisitResult)); $dimensions[] = $dim; } $cache = Cache::getTransientCache(); $cache->save(CacheId::pluginAware('VisitDimensions'), $dimensions); Visit::$dimensions = null; }