/** * Returns SEO statistics for a URL. * * @param string $url URL to request SEO stats for * @return DataTable */ public function getRank($url) { Piwik::checkUserHasSomeViewAccess(); $metricProvider = new ProviderCache(new Aggregator()); $domain = Url::getHostFromUrl($url); $metrics = $metricProvider->getMetrics($domain); return $this->toDataTable($metrics); }
public function render() { $idSite = Common::getRequestVar('idSite'); $site = new Site($idSite); $url = urldecode(Common::getRequestVar('url', '', 'string')); if (!empty($url) && strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) { $url = 'http://' . $url; } if (empty($url) || !UrlHelper::isLookLikeUrl($url)) { $url = $site->getMainUrl(); } $dataTable = API::getInstance()->getRank($url); /** @var \Piwik\DataTable\Renderer\Php $renderer */ $renderer = Renderer::factory('php'); $renderer->setSerialize(false); return $this->renderTemplate('getRank', array('urlToRank' => Url::getHostFromUrl($url), 'ranks' => $renderer->render($dataTable))); }
/** * @group Core * * @dataProvider getHostsFromUrl */ public function testGetHostsFromUrl($url, $expectedHost) { $this->assertEquals($expectedHost, Url::getHostFromUrl($url)); }
private function performRedirectToUrlIfSet() { if (!$this->hasRedirectUrl()) { return; } if (empty($this->requests)) { return; } $redirectUrl = $this->getRedirectUrl(); $host = Url::getHostFromUrl($redirectUrl); if (empty($host)) { return; } $siteIds = array(); foreach ($this->requests as $request) { $siteIds[] = (int) $request['idsite']; } $siteIds = array_unique($siteIds); $model = new Model(); foreach ($siteIds as $siteId) { $siteUrls = $model->getSiteUrlsFromId($siteId); if (Url::isHostInUrls($host, $siteUrls)) { Url::redirectToUrl($redirectUrl); } } }
public function shouldPerformRedirectToUrl() { if (!$this->hasRedirectUrl()) { return false; } if (!$this->hasRequests()) { return false; } $redirectUrl = $this->getRedirectUrl(); $host = Url::getHostFromUrl($redirectUrl); if (empty($host)) { return false; } $urls = new SiteUrls(); $siteUrls = $urls->getAllCachedSiteUrls(); $siteIds = $this->getAllSiteIdsWithinRequest(); foreach ($siteIds as $siteId) { if (empty($siteUrls[$siteId])) { $siteUrls[$siteId] = array(); } if (Url::isHostInUrls($host, $siteUrls[$siteId])) { return $redirectUrl; } } return false; }
private function performRedirectToUrlIfSet() { if (!$this->hasRedirectUrl()) { return; } if (empty($this->requests)) { return; } $redirectUrl = $this->getRedirectUrl(); $host = Url::getHostFromUrl($redirectUrl); if (empty($host)) { return; } $urls = new SiteUrls(); $siteUrls = $urls->getAllCachedSiteUrls(); $siteIds = $this->getAllSiteIdsWithinRequest(); foreach ($siteIds as $siteId) { if (empty($siteUrls[$siteId])) { continue; } if (Url::isHostInUrls($host, $siteUrls[$siteId])) { Url::redirectToUrl($redirectUrl); } } }
/** * Returns the URL to this Piwik instance, eg. **http://demo.piwik.org/** or **http://example.org/piwik/**. * * @return string * @api */ public static function getPiwikUrl() { $url = Option::get(self::OPTION_PIWIK_URL); $isPiwikCoreDispatching = defined('PIWIK_ENABLE_DISPATCH') && PIWIK_ENABLE_DISPATCH; if (Common::isPhpCliMode() || SettingsServer::isArchivePhpTriggered() || !$isPiwikCoreDispatching) { return $url; } $currentUrl = Common::sanitizeInputValue(Url::getCurrentUrlWithoutFileName()); // when script is called from /misc/cron/archive.php, Piwik URL is /index.php $currentUrl = str_replace("/misc/cron", "", $currentUrl); if (empty($url) || $currentUrl != $url) { $host = Url::getHostFromUrl($url); if (strlen($currentUrl) >= strlen('http://a/') && !Url::isLocalHost($host)) { self::overwritePiwikUrl($currentUrl); } $url = $currentUrl; } if (ProxyHttp::isHttps()) { $url = str_replace("http://", "https://", $url); } return $url; }