public static function getInstance() { if (self::$instance == null) { self::$instance = new self(); } return self::$instance; }
/** * Get following pages of a url. * This is done on the logs - not the archives! * * Note: if you use this method via the regular API, the number of results will be limited. * Make sure, you set filter_limit=-1 in the request. */ public function getFollowingPages($url, $idSite, $period, $date, $segment = false) { $this->authenticate($idSite); $url = Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite); // we don't unsanitize $url here. it will be done in the Transitions plugin. $resultDataTable = new Piwik_DataTable(); try { $limitBeforeGrouping = Piwik_Config::getInstance()->General['overlay_following_pages_limit']; $transitionsReport = Piwik_Transitions_API::getInstance()->getTransitionsForAction($url, $type = 'url', $idSite, $period, $date, $segment, $limitBeforeGrouping, $part = 'followingActions', $returnNormalizedUrls = true); } catch (Exception $e) { return $resultDataTable; } $reports = array('followingPages', 'outlinks', 'downloads'); foreach ($reports as $reportName) { if (!isset($transitionsReport[$reportName])) { continue; } foreach ($transitionsReport[$reportName]->getRows() as $row) { // don't touch the row at all for performance reasons $resultDataTable->addRow($row); } } return $resultDataTable; }