Esempio n. 1
0
 public function setUp()
 {
     parent::setUp();
     // setup the access layer
     FakeAccess::$superUser = true;
     Manager::getInstance()->loadTrackerPlugins();
     Manager::getInstance()->loadPlugin('SitesManager');
     Visit::$dimensions = null;
 }
Esempio n. 2
0
 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());
     }
 }
Esempio n. 3
0
 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;
 }