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

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattab <matthieu.aubry@gmail.com>2013-03-28 03:42:39 +0400
committermattab <matthieu.aubry@gmail.com>2013-03-28 03:42:40 +0400
commitae4b03163792f0b6e933933e5d37df87dc3fd566 (patch)
treed1d7510a9728f587d3d63ebd03e4ecf3d904838b /plugins/SEO
parent158c2150f5f2e13ece459b8d131244c11b763997 (diff)
Mass conversion of all files to the newly agreed coding standard: PSR 1/2
Converting Piwik core source files, PHP, JS, TPL, CSS More info: http://piwik.org/participate/coding-standards/
Diffstat (limited to 'plugins/SEO')
-rw-r--r--plugins/SEO/API.php153
-rw-r--r--plugins/SEO/Controller.php55
-rw-r--r--plugins/SEO/MajesticClient.php154
-rw-r--r--plugins/SEO/RankChecker.php379
-rw-r--r--plugins/SEO/SEO.php44
-rw-r--r--plugins/SEO/templates/index.tpl78
-rw-r--r--plugins/SEO/templates/rank.js2
7 files changed, 430 insertions, 435 deletions
diff --git a/plugins/SEO/API.php b/plugins/SEO/API.php
index 62613f3de5..26ac00c5bd 100644
--- a/plugins/SEO/API.php
+++ b/plugins/SEO/API.php
@@ -17,92 +17,91 @@ require_once PIWIK_INCLUDE_PATH . '/plugins/Referers/functions.php';
/**
* The SEO API lets you access a list of SEO metrics for the specified URL: Google Pagerank, Goolge/Bing indexed pages
* Alexa Rank, age of the Domain name and count of DMOZ entries.
- *
+ *
* @package Piwik_SEO
*/
-class Piwik_SEO_API
+class Piwik_SEO_API
{
- static private $instance = null;
- /**
- * @return Piwik_SEO_API
- */
- static public function getInstance()
- {
- if (self::$instance == null)
- {
- self::$instance = new self;
- }
- return self::$instance;
- }
-
- /**
- * Returns SEO statistics for a URL.
- *
- * @param string $url URL to request SEO stats for
- * @return Piwik_DataTable
- */
- public function getRank( $url )
- {
- Piwik::checkUserHasSomeViewAccess();
- $rank = new Piwik_SEO_RankChecker($url);
-
- $linkToMajestic = Piwik_SEO_MajesticClient::getLinkForUrl($url);
-
- $data = array(
- 'Google PageRank' => array(
- 'rank' => $rank->getPageRank(),
- 'logo' => Piwik_getSearchEngineLogoFromUrl('http://google.com'),
- 'id' => 'pagerank'
- ),
+ static private $instance = null;
+
+ /**
+ * @return Piwik_SEO_API
+ */
+ static public function getInstance()
+ {
+ if (self::$instance == null) {
+ self::$instance = new self;
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Returns SEO statistics for a URL.
+ *
+ * @param string $url URL to request SEO stats for
+ * @return Piwik_DataTable
+ */
+ public function getRank($url)
+ {
+ Piwik::checkUserHasSomeViewAccess();
+ $rank = new Piwik_SEO_RankChecker($url);
+
+ $linkToMajestic = Piwik_SEO_MajesticClient::getLinkForUrl($url);
+
+ $data = array(
+ 'Google PageRank' => array(
+ 'rank' => $rank->getPageRank(),
+ 'logo' => Piwik_getSearchEngineLogoFromUrl('http://google.com'),
+ 'id' => 'pagerank'
+ ),
Piwik_Translate('SEO_Google_IndexedPages') => array(
'rank' => $rank->getIndexedPagesGoogle(),
'logo' => Piwik_getSearchEngineLogoFromUrl('http://google.com'),
- 'id' => 'google-index',
+ 'id' => 'google-index',
),
- Piwik_Translate('SEO_Bing_IndexedPages') => array(
+ Piwik_Translate('SEO_Bing_IndexedPages') => array(
'rank' => $rank->getIndexedPagesBing(),
'logo' => Piwik_getSearchEngineLogoFromUrl('http://bing.com'),
- 'id' => 'bing-index',
- ),
- Piwik_Translate('SEO_AlexaRank') => array(
- 'rank' => $rank->getAlexaRank(),
- 'logo' => Piwik_getSearchEngineLogoFromUrl('http://alexa.com'),
- 'id' => 'alexa',
- ),
- Piwik_Translate('SEO_DomainAge') => array(
- 'rank' => $rank->getAge(),
- 'logo' => 'plugins/SEO/images/whois.png',
- 'id' => 'domain-age',
- ),
- Piwik_Translate('SEO_ExternalBacklinks') => array(
- 'rank' => $rank->getExternalBacklinkCount(),
- 'logo' => 'plugins/SEO/images/majesticseo.png',
- 'logo_link' => $linkToMajestic,
- 'logo_tooltip' => Piwik_Translate('SEO_ViewBacklinksOnMajesticSEO'),
- 'id' => 'external-backlinks',
- ),
- Piwik_Translate('SEO_ReferrerDomains') => array(
- 'rank' => $rank->getReferrerDomainCount(),
- 'logo' => 'plugins/SEO/images/majesticseo.png',
- 'logo_link' => $linkToMajestic,
- 'logo_tooltip' => Piwik_Translate('SEO_ViewBacklinksOnMajesticSEO'),
- 'id' => 'referrer-domains',
- ),
- );
+ 'id' => 'bing-index',
+ ),
+ Piwik_Translate('SEO_AlexaRank') => array(
+ 'rank' => $rank->getAlexaRank(),
+ 'logo' => Piwik_getSearchEngineLogoFromUrl('http://alexa.com'),
+ 'id' => 'alexa',
+ ),
+ Piwik_Translate('SEO_DomainAge') => array(
+ 'rank' => $rank->getAge(),
+ 'logo' => 'plugins/SEO/images/whois.png',
+ 'id' => 'domain-age',
+ ),
+ Piwik_Translate('SEO_ExternalBacklinks') => array(
+ 'rank' => $rank->getExternalBacklinkCount(),
+ 'logo' => 'plugins/SEO/images/majesticseo.png',
+ 'logo_link' => $linkToMajestic,
+ 'logo_tooltip' => Piwik_Translate('SEO_ViewBacklinksOnMajesticSEO'),
+ 'id' => 'external-backlinks',
+ ),
+ Piwik_Translate('SEO_ReferrerDomains') => array(
+ 'rank' => $rank->getReferrerDomainCount(),
+ 'logo' => 'plugins/SEO/images/majesticseo.png',
+ 'logo_link' => $linkToMajestic,
+ 'logo_tooltip' => Piwik_Translate('SEO_ViewBacklinksOnMajesticSEO'),
+ 'id' => 'referrer-domains',
+ ),
+ );
- // Add DMOZ only if > 0 entries found
- $dmozRank = array(
- 'rank' => $rank->getDmoz(),
- 'logo' => Piwik_getSearchEngineLogoFromUrl('http://dmoz.org'),
- 'id' => 'dmoz',
- );
- if($dmozRank['rank'] > 0)
- {
- $data[Piwik_Translate('SEO_Dmoz')] = $dmozRank;
- }
+ // Add DMOZ only if > 0 entries found
+ $dmozRank = array(
+ 'rank' => $rank->getDmoz(),
+ 'logo' => Piwik_getSearchEngineLogoFromUrl('http://dmoz.org'),
+ 'id' => 'dmoz',
+ );
+ if ($dmozRank['rank'] > 0) {
+ $data[Piwik_Translate('SEO_Dmoz')] = $dmozRank;
+ }
- $dataTable = new Piwik_DataTable();
- $dataTable->addRowsFromArrayWithIndexLabel($data);
- return $dataTable;
- }
+ $dataTable = new Piwik_DataTable();
+ $dataTable->addRowsFromArrayWithIndexLabel($data);
+ return $dataTable;
+ }
}
diff --git a/plugins/SEO/Controller.php b/plugins/SEO/Controller.php
index 53a749e2d3..f0e75f8200 100644
--- a/plugins/SEO/Controller.php
+++ b/plugins/SEO/Controller.php
@@ -1,43 +1,42 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_SEO
*/
-
+
/**
* @package Piwik_SEO
*/
class Piwik_SEO_Controller extends Piwik_Controller
-{
- function getRank()
- {
- $idSite = Piwik_Common::getRequestVar('idSite');
- $site = new Piwik_Site($idSite);
+{
+ function getRank()
+ {
+ $idSite = Piwik_Common::getRequestVar('idSite');
+ $site = new Piwik_Site($idSite);
+
+ $url = urldecode(Piwik_Common::getRequestVar('url', '', 'string'));
+
+ if (!empty($url) && strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) {
+ $url = 'http://' . $url;
+ }
+
+ if (empty($url) || !Piwik_Common::isLookLikeUrl($url)) {
+ $url = $site->getMainUrl();
+ }
+
+ $dataTable = Piwik_SEO_API::getInstance()->getRank($url);
- $url = urldecode(Piwik_Common::getRequestVar('url', '', 'string'));
-
- if(!empty($url) && strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) {
- $url = 'http://'.$url;
- }
-
- if(empty($url) || !Piwik_Common::isLookLikeUrl($url))
- {
- $url = $site->getMainUrl();
- }
+ $view = Piwik_View::factory('index');
+ $view->urlToRank = Piwik_SEO_RankChecker::extractDomainFromUrl($url);
- $dataTable = Piwik_SEO_API::getInstance()->getRank($url);
-
- $view = Piwik_View::factory('index');
- $view->urlToRank = Piwik_SEO_RankChecker::extractDomainFromUrl($url);
-
- $renderer = Piwik_DataTable_Renderer::factory('php');
- $renderer->setSerialize(false);
- $view->ranks = $renderer->render($dataTable);
- echo $view->render();
- }
+ $renderer = Piwik_DataTable_Renderer::factory('php');
+ $renderer->setSerialize(false);
+ $view->ranks = $renderer->render($dataTable);
+ echo $view->render();
+ }
}
diff --git a/plugins/SEO/MajesticClient.php b/plugins/SEO/MajesticClient.php
index 61ab4d2d29..f6678be192 100644
--- a/plugins/SEO/MajesticClient.php
+++ b/plugins/SEO/MajesticClient.php
@@ -11,85 +11,85 @@
/**
* Client for Majestic SEO's HTTP API.
- *
+ *
* Hides the HTTP request sending logic.
*/
class Piwik_SEO_MajesticClient
{
- const API_BASE = 'http://simpleapi.majesticseo.com/sapi/';
- const API_KEY = 'ETHPYY'; // please only use this key within Piwik
-
- /**
- * Returns a URL that can be used to view all SEO data for a particular website.
- *
- * @param string $targetSiteUrl The URL of the website for whom SEO stats should be
- * accessible for.
- * @return string
- */
- public static function getLinkForUrl( $targetSiteUrl )
- {
- $domain = @parse_url($targetSiteUrl, PHP_URL_HOST);
- return "http://www.majesticseo.com/reports/site-explorer/summary/$domain?IndexDataSource=F";
- }
-
- /**
- * Returns backlink statistics including the count of backlinks and count of
- * referrer domains (domains with backlinks).
- *
- * This method issues an HTTP request and waits for it to return.
- *
- * @param string $siteDomain The domain of the website to get stats for.
- * @param int $timeout The number of seconds to wait before aborting
- * the HTTP request.
- * @return array An array containing the backlink count and referrer
- * domain count:
- * array(
- * 'backlink_count' => X,
- * 'referrer_domains_count' => Y
- * )
- * If either stat is false, either the API returned an
- * error, or the IP was blocked for this request.
- */
- public function getBacklinkStats( $siteDomain, $timeout = 300 )
- {
- $apiUrl = $this->getApiUrl($method = 'GetBacklinkStats', $args = array(
- 'items' => '1',
- 'item0' => $siteDomain
- ));
- $apiResponse = Piwik_Http::sendHttpRequest($apiUrl, $timeout);
-
- $result = array(
- 'backlink_count' => false,
- 'referrer_domains_count' => false
- );
-
- $apiResponse = Piwik_Common::json_decode($apiResponse, $assoc = true);
- if (!empty($apiResponse)
- && !empty($apiResponse['Data']))
- {
- $siteSeoStats = reset($apiResponse['Data']);
-
- if (isset($siteSeoStats['ExtBackLinks'])
- && $siteSeoStats['ExtBackLinks'] !== -1)
- {
- $result['backlink_count'] = $siteSeoStats['ExtBackLinks'];
- }
-
- if (isset($siteSeoStats['RefDomains'])
- && $siteSeoStats['RefDomains'] !== -1)
- {
- $result['referrer_domains_count'] = $siteSeoStats['RefDomains'];
- }
- }
-
- return $result;
- }
-
- private function getApiUrl( $method, $args = array() )
- {
- $args['sak'] = self::API_KEY;
-
- $queryString = http_build_query($args);
- return self::API_BASE.$method.'?'.$queryString;
- }
+ const API_BASE = 'http://simpleapi.majesticseo.com/sapi/';
+ const API_KEY = 'ETHPYY'; // please only use this key within Piwik
+
+ /**
+ * Returns a URL that can be used to view all SEO data for a particular website.
+ *
+ * @param string $targetSiteUrl The URL of the website for whom SEO stats should be
+ * accessible for.
+ * @return string
+ */
+ public static function getLinkForUrl($targetSiteUrl)
+ {
+ $domain = @parse_url($targetSiteUrl, PHP_URL_HOST);
+ return "http://www.majesticseo.com/reports/site-explorer/summary/$domain?IndexDataSource=F";
+ }
+
+ /**
+ * Returns backlink statistics including the count of backlinks and count of
+ * referrer domains (domains with backlinks).
+ *
+ * This method issues an HTTP request and waits for it to return.
+ *
+ * @param string $siteDomain The domain of the website to get stats for.
+ * @param int $timeout The number of seconds to wait before aborting
+ * the HTTP request.
+ * @return array An array containing the backlink count and referrer
+ * domain count:
+ * array(
+ * 'backlink_count' => X,
+ * 'referrer_domains_count' => Y
+ * )
+ * If either stat is false, either the API returned an
+ * error, or the IP was blocked for this request.
+ */
+ public function getBacklinkStats($siteDomain, $timeout = 300)
+ {
+ $apiUrl = $this->getApiUrl($method = 'GetBacklinkStats', $args = array(
+ 'items' => '1',
+ 'item0' => $siteDomain
+ ));
+ $apiResponse = Piwik_Http::sendHttpRequest($apiUrl, $timeout);
+
+ $result = array(
+ 'backlink_count' => false,
+ 'referrer_domains_count' => false
+ );
+
+ $apiResponse = Piwik_Common::json_decode($apiResponse, $assoc = true);
+ if (!empty($apiResponse)
+ && !empty($apiResponse['Data'])
+ ) {
+ $siteSeoStats = reset($apiResponse['Data']);
+
+ if (isset($siteSeoStats['ExtBackLinks'])
+ && $siteSeoStats['ExtBackLinks'] !== -1
+ ) {
+ $result['backlink_count'] = $siteSeoStats['ExtBackLinks'];
+ }
+
+ if (isset($siteSeoStats['RefDomains'])
+ && $siteSeoStats['RefDomains'] !== -1
+ ) {
+ $result['referrer_domains_count'] = $siteSeoStats['RefDomains'];
+ }
+ }
+
+ return $result;
+ }
+
+ private function getApiUrl($method, $args = array())
+ {
+ $args['sak'] = self::API_KEY;
+
+ $queryString = http_build_query($args);
+ return self::API_BASE . $method . '?' . $queryString;
+ }
}
diff --git a/plugins/SEO/RankChecker.php b/plugins/SEO/RankChecker.php
index da9fa0cf60..57512c4e8f 100644
--- a/plugins/SEO/RankChecker.php
+++ b/plugins/SEO/RankChecker.php
@@ -20,46 +20,46 @@
*/
class Piwik_SEO_RankChecker
{
- private $url;
- private $majesticInfo = null;
-
- public function __construct($url)
- {
- $this->url = self::extractDomainFromUrl($url);
- }
-
- /**
- * Extract domain from URL as the web services generally
- * expect only a domain name (i.e., no protocol, port, path, query, etc).
- *
- * @param string $url
- * @return string
- */
- static public function extractDomainFromUrl($url)
- {
- return preg_replace(
- array(
- '~^https?\://~si', // strip protocol
- '~[/:#?;%&].*~', // strip port, path, query, anchor, etc
- '~\.$~', // trailing period
- ),
- '', $url);
- }
-
- /**
- * Web service proxy that retrieves the content at the specified URL
- *
- * @param string $url
- * @return string
- */
- private function getPage($url)
- {
- try {
- return str_replace('&nbsp;', ' ', Piwik_Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT']));
- } catch(Exception $e) {
- return '';
- }
- }
+ private $url;
+ private $majesticInfo = null;
+
+ public function __construct($url)
+ {
+ $this->url = self::extractDomainFromUrl($url);
+ }
+
+ /**
+ * Extract domain from URL as the web services generally
+ * expect only a domain name (i.e., no protocol, port, path, query, etc).
+ *
+ * @param string $url
+ * @return string
+ */
+ static public function extractDomainFromUrl($url)
+ {
+ return preg_replace(
+ array(
+ '~^https?\://~si', // strip protocol
+ '~[/:#?;%&].*~', // strip port, path, query, anchor, etc
+ '~\.$~', // trailing period
+ ),
+ '', $url);
+ }
+
+ /**
+ * Web service proxy that retrieves the content at the specified URL
+ *
+ * @param string $url
+ * @return string
+ */
+ private function getPage($url)
+ {
+ try {
+ return str_replace('&nbsp;', ' ', Piwik_Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT']));
+ } catch (Exception $e) {
+ return '';
+ }
+ }
/**
* Returns the google page rank for the current url
@@ -67,16 +67,16 @@ class Piwik_SEO_RankChecker
* @return int
*/
public function getPageRank()
- {
- $chwrite = $this->CheckHash($this->HashURL($this->url));
+ {
+ $chwrite = $this->CheckHash($this->HashURL($this->url));
- $url="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".$chwrite."&features=Rank&q=info:".$this->url."&num=100&filter=0";
- $data = $this->getPage($url);
- preg_match('#Rank_[0-9]:[0-9]:([0-9]+){1,}#si', $data, $p);
- $value = isset($p[1]) ? $p[1] : 0;
+ $url = "http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=" . $chwrite . "&features=Rank&q=info:" . $this->url . "&num=100&filter=0";
+ $data = $this->getPage($url);
+ preg_match('#Rank_[0-9]:[0-9]:([0-9]+){1,}#si', $data, $p);
+ $value = isset($p[1]) ? $p[1] : 0;
- return $value;
- }
+ return $value;
+ }
/**
* Returns the alexa traffic rank for the current url
@@ -84,26 +84,26 @@ class Piwik_SEO_RankChecker
* @return int
*/
public function getAlexaRank()
- {
+ {
$xml = @simplexml_load_string($this->getPage('http://data.alexa.com/data?cli=10&url=' . urlencode($this->url)));
- return $xml ? $xml->SD->POPULARITY['TEXT'] : '';
- }
+ return $xml ? $xml->SD->POPULARITY['TEXT'] : '';
+ }
/**
* Returns the number of Dmoz.org entries for the current url
*
* @return int
*/
- public function getDmoz()
- {
+ public function getDmoz()
+ {
$url = 'http://www.dmoz.org/search?q=' . urlencode($this->url);
- $data = $this->getPage($url);
+ $data = $this->getPage($url);
preg_match('#Open Directory Sites[^\(]+\([0-9]-[0-9]+ of ([0-9]+)\)#', $data, $p);
if (!empty($p[1])) {
- return (int) $p[1];
+ return (int)$p[1];
}
return 0;
- }
+ }
/**
* Returns the number of pages google holds in it's index for the current url
@@ -111,14 +111,14 @@ class Piwik_SEO_RankChecker
* @return int
*/
public function getIndexedPagesGoogle()
- {
+ {
$url = 'http://www.google.com/search?hl=en&q=site%3A' . urlencode($this->url);
- $data = $this->getPage($url);
+ $data = $this->getPage($url);
if (preg_match('#about ([0-9\,]+) results#i', $data, $p)) {
- return (int) str_replace(',', '', $p[1]);
- }
+ return (int)str_replace(',', '', $p[1]);
+ }
return 0;
- }
+ }
/**
* Returns the number of pages bing holds in it's index for the current url
@@ -126,14 +126,14 @@ class Piwik_SEO_RankChecker
* @return int
*/
public function getIndexedPagesBing()
- {
+ {
$url = 'http://www.bing.com/search?mkt=en-US&q=site%3A' . urlencode($this->url);
- $data = $this->getPage($url);
+ $data = $this->getPage($url);
if (preg_match('#([0-9\,]+) results#i', $data, $p)) {
- return (int) str_replace(',', '', $p[1]);
- }
+ return (int)str_replace(',', '', $p[1]);
+ }
return 0;
- }
+ }
/**
* Returns the domain age for the current url
@@ -148,19 +148,19 @@ class Piwik_SEO_RankChecker
$ages = array();
- if($ageArchiveOrg > 0) {
+ if ($ageArchiveOrg > 0) {
$ages[] = $ageArchiveOrg;
}
- if($ageWhoIs > 0) {
+ if ($ageWhoIs > 0) {
$ages[] = $ageWhoIs;
}
- if($ageWhoisCom > 0) {
+ if ($ageWhoisCom > 0) {
$ages[] = $ageWhoisCom;
}
- if(count($ages) > 1) {
+ if (count($ages) > 1) {
$maxAge = min($ages);
} else {
$maxAge = array_shift($ages);
@@ -171,27 +171,27 @@ class Piwik_SEO_RankChecker
}
return false;
}
-
+
/**
* Returns the number backlinks that link to the current site.
- *
+ *
* @return int
*/
public function getExternalBacklinkCount()
{
- $majesticInfo = $this->getMajesticInfo();
- return $majesticInfo['backlink_count'];
+ $majesticInfo = $this->getMajesticInfo();
+ return $majesticInfo['backlink_count'];
}
-
+
/**
* Returns the number of referrer domains that link to the current site.
- *
+ *
* @return int
*/
public function getReferrerDomainCount()
{
- $majesticInfo = $this->getMajesticInfo();
- return $majesticInfo['referrer_domains_count'];
+ $majesticInfo = $this->getMajesticInfo();
+ return $majesticInfo['referrer_domains_count'];
}
/**
@@ -201,7 +201,7 @@ class Piwik_SEO_RankChecker
*/
protected function _getAgeArchiveOrg()
{
- $url = str_replace('www.', '', $this->url);
+ $url = str_replace('www.', '', $this->url);
$data = @$this->getPage('http://wayback.archive.org/web/*/' . urlencode($url));
preg_match('#<a href=\"([^>]*)' . preg_quote($url) . '/\">([^<]*)<\/a>#', $data, $p);
if (!empty($p[2])) {
@@ -221,8 +221,8 @@ class Piwik_SEO_RankChecker
*/
protected function _getAgeWhoIs()
{
- $url = preg_replace('/^www\./', '', $this->url);
- $url = 'http://www.who.is/whois/' . urlencode($url);
+ $url = preg_replace('/^www\./', '', $this->url);
+ $url = 'http://www.who.is/whois/' . urlencode($url);
$data = $this->getPage($url);
preg_match('#(?:Creation Date|Created On|Registered on)\.*:\s*([ \ta-z0-9\/\-:\.]+)#si', $data, $p);
if (!empty($p[1])) {
@@ -242,8 +242,8 @@ class Piwik_SEO_RankChecker
*/
protected function _getAgeWhoisCom()
{
- $url = preg_replace('/^www\./', '', $this->url);
- $url = 'http://www.whois.com/whois/' . urlencode($url);
+ $url = preg_replace('/^www\./', '', $this->url);
+ $url = 'http://www.whois.com/whois/' . urlencode($url);
$data = $this->getPage($url);
preg_match('#(?:Creation Date|Created On):\s*([ \ta-z0-9\/\-:\.]+)#si', $data, $p);
if (!empty($p[1])) {
@@ -256,114 +256,107 @@ class Piwik_SEO_RankChecker
return 0;
}
- /**
- * Convert numeric string to int
- *
- * @see getPageRank()
- *
- * @param string $Str
- * @param int $Check
- * @param int $Magic
- * @return int
- */
- private function StrToNum($Str, $Check, $Magic)
- {
- $Int32Unit = 4294967296; // 2^32
-
- $length = strlen($Str);
- for($i = 0; $i < $length; $i++)
- {
- $Check *= $Magic;
- // If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
- // the result of converting to integer is undefined
- // refer to http://www.php.net/manual/en/language.types.integer.php
- if($Check >= $Int32Unit)
- {
- $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
- //if the check less than -2^31
- $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
- }
- $Check += ord($Str{$i});
- }
- return $Check;
- }
-
- /**
- * Generate a hash for a url
- *
- * @see getPageRank()
- *
- * @param string $String
- * @return int
- */
- private function HashURL($String)
- {
- $Check1 = $this->StrToNum($String, 0x1505, 0x21);
- $Check2 = $this->StrToNum($String, 0, 0x1003F);
-
- $Check1 >>= 2;
- $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
- $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
- $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);
-
- $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
- $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
-
- return ($T1 | $T2);
- }
-
- /**
- * Generate a checksum for the hash string
- *
- * @see getPageRank()
- *
- * @param int $Hashnum
- * @return string
- */
- private function CheckHash($Hashnum)
- {
- $CheckByte = 0;
- $Flag = 0;
-
- $HashStr = sprintf('%u', $Hashnum) ;
- $length = strlen($HashStr);
-
- for($i = $length - 1; $i >= 0; $i --)
- {
- $Re = $HashStr{$i};
- if(1 === ($Flag % 2)) {
- $Re += $Re;
- $Re = (int)($Re / 10) + ($Re % 10);
- }
- $CheckByte += $Re;
- $Flag ++;
- }
-
- $CheckByte %= 10;
- if(0 !== $CheckByte)
- {
- $CheckByte = 10 - $CheckByte;
- if(1 === ($Flag % 2) )
- {
- if(1 === ($CheckByte % 2))
- {
- $CheckByte += 9;
- }
- $CheckByte >>= 1;
- }
- }
-
- return '7'.$CheckByte.$HashStr;
- }
-
- private function getMajesticInfo()
- {
- if ($this->majesticInfo === null)
- {
- $client = new Piwik_SEO_MajesticClient();
- $this->majesticInfo = $client->getBacklinkStats($this->url);
- }
-
- return $this->majesticInfo;
- }
+ /**
+ * Convert numeric string to int
+ *
+ * @see getPageRank()
+ *
+ * @param string $Str
+ * @param int $Check
+ * @param int $Magic
+ * @return int
+ */
+ private function StrToNum($Str, $Check, $Magic)
+ {
+ $Int32Unit = 4294967296; // 2^32
+
+ $length = strlen($Str);
+ for ($i = 0; $i < $length; $i++) {
+ $Check *= $Magic;
+ // If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
+ // the result of converting to integer is undefined
+ // refer to http://www.php.net/manual/en/language.types.integer.php
+ if ($Check >= $Int32Unit) {
+ $Check = ($Check - $Int32Unit * (int)($Check / $Int32Unit));
+ //if the check less than -2^31
+ $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
+ }
+ $Check += ord($Str{$i});
+ }
+ return $Check;
+ }
+
+ /**
+ * Generate a hash for a url
+ *
+ * @see getPageRank()
+ *
+ * @param string $String
+ * @return int
+ */
+ private function HashURL($String)
+ {
+ $Check1 = $this->StrToNum($String, 0x1505, 0x21);
+ $Check2 = $this->StrToNum($String, 0, 0x1003F);
+
+ $Check1 >>= 2;
+ $Check1 = (($Check1 >> 4) & 0x3FFFFC0) | ($Check1 & 0x3F);
+ $Check1 = (($Check1 >> 4) & 0x3FFC00) | ($Check1 & 0x3FF);
+ $Check1 = (($Check1 >> 4) & 0x3C000) | ($Check1 & 0x3FFF);
+
+ $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) << 2) | ($Check2 & 0xF0F);
+ $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000);
+
+ return ($T1 | $T2);
+ }
+
+ /**
+ * Generate a checksum for the hash string
+ *
+ * @see getPageRank()
+ *
+ * @param int $Hashnum
+ * @return string
+ */
+ private function CheckHash($Hashnum)
+ {
+ $CheckByte = 0;
+ $Flag = 0;
+
+ $HashStr = sprintf('%u', $Hashnum);
+ $length = strlen($HashStr);
+
+ for ($i = $length - 1; $i >= 0; $i--) {
+ $Re = $HashStr{$i};
+ if (1 === ($Flag % 2)) {
+ $Re += $Re;
+ $Re = (int)($Re / 10) + ($Re % 10);
+ }
+ $CheckByte += $Re;
+ $Flag++;
+ }
+
+ $CheckByte %= 10;
+ if (0 !== $CheckByte) {
+ $CheckByte = 10 - $CheckByte;
+ if (1 === ($Flag % 2)) {
+ if (1 === ($CheckByte % 2)) {
+ $CheckByte += 9;
+ }
+ $CheckByte >>= 1;
+ }
+ }
+
+ return '7' . $CheckByte . $HashStr;
+ }
+
+ private function getMajesticInfo()
+ {
+ if ($this->majesticInfo === null) {
+ $client = new Piwik_SEO_MajesticClient();
+ $this->majesticInfo = $client->getBacklinkStats($this->url);
+ }
+
+ return $this->majesticInfo;
+ }
}
diff --git a/plugins/SEO/SEO.php b/plugins/SEO/SEO.php
index a7e5474506..addc8ae69e 100644
--- a/plugins/SEO/SEO.php
+++ b/plugins/SEO/SEO.php
@@ -1,10 +1,10 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
+ *
* @category Piwik_Plugins
* @package Piwik_SEO
*/
@@ -14,24 +14,24 @@
*/
class Piwik_SEO extends Piwik_Plugin
{
- public function getInformation()
- {
- return array(
- 'description' => 'This Plugin extracts and displays SEO metrics: Alexa web ranking, Google Pagerank, number of Indexed pages and backlinks of the currently selected website.',
- 'author' => 'Piwik',
- 'author_homepage' => 'http://piwik.org/',
- 'version' => Piwik_Version::VERSION,
- );
- }
-
- function getListHooksRegistered()
- {
- $hooks = array( 'WidgetsList.add' => 'addWidgets' );
- return $hooks;
- }
-
- function addWidgets()
- {
- Piwik_AddWidget('SEO', 'SEO_SeoRankings', 'SEO', 'getRank');
- }
+ public function getInformation()
+ {
+ return array(
+ 'description' => 'This Plugin extracts and displays SEO metrics: Alexa web ranking, Google Pagerank, number of Indexed pages and backlinks of the currently selected website.',
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
+ );
+ }
+
+ function getListHooksRegistered()
+ {
+ $hooks = array('WidgetsList.add' => 'addWidgets');
+ return $hooks;
+ }
+
+ function addWidgets()
+ {
+ Piwik_AddWidget('SEO', 'SEO_SeoRankings', 'SEO', 'getRank');
+ }
}
diff --git a/plugins/SEO/templates/index.tpl b/plugins/SEO/templates/index.tpl
index fe1fe903d3..721ca46ee5 100644
--- a/plugins/SEO/templates/index.tpl
+++ b/plugins/SEO/templates/index.tpl
@@ -1,42 +1,46 @@
<div id='SeoRanks'>
- <script type="text/javascript" src="plugins/SEO/templates/rank.js"></script>
-
- <form method="post" style="padding: 8px;" >
- <div align="left" class="mediumtext">
- {'Installation_SetupWebSiteURL'|translate|ucfirst}
- <input type="text" id="seoUrl" size="15" value="{$urlToRank|escape:'html'}" class="textbox" />
+ <script type="text/javascript" src="plugins/SEO/templates/rank.js"></script>
+
+ <form method="post" style="padding: 8px;">
+ <div align="left" class="mediumtext">
+ {'Installation_SetupWebSiteURL'|translate|ucfirst}
+ <input type="text" id="seoUrl" size="15" value="{$urlToRank|escape:'html'}" class="textbox"/>
<span style="padding-left:2px;">
- <input type="submit" id="rankbutton" value="{'SEO_Rank'|translate}" />
+ <input type="submit" id="rankbutton" value="{'SEO_Rank'|translate}"/>
</span>
- </div>
-
- {ajaxLoadingDiv id=ajaxLoadingSEO}
+ </div>
+
+ {ajaxLoadingDiv id=ajaxLoadingSEO}
+
+ <div id="rankStats" align="left" style='margin-top:10px'>
+ {if empty($ranks)}
+ {'General_Error'|translate}
+ {else}
+ {capture name=cleanUrl}
+ <a href='{$urlToRank|escape:'html'}' target='_blank'>{$urlToRank|escape:'html'}</a>
+ {/capture}
+ {'SEO_SEORankingsFor'|translate:$smarty.capture.cleanUrl}
+ <table cellspacing='2' style='margin:auto;line-height:1.5em;padding-top:10px'>
+ {foreach from=$ranks item=rank}
+ <tr>
+ <td>{if !empty($rank.logo_link)}<a href="{$rank.logo_link}" target="_blank"
+ {if !empty($rank.logo_tooltip)}title="{$rank.logo_tooltip}"{/if}>{/if}<img
+ style='vertical-align:middle;margin-right:6px;' src='{$rank.logo}' border='0'
+ alt="{$rank.label}">{if !empty($rank.logo_link)}</a>{/if} {$rank.label}
+ </td>
+ <td>
+ <div style='margin-left:15px'>
+ {if isset($rank.rank)}{$rank.rank}{else}-{/if}
+ {if $rank.id=='pagerank'} /10
+ {elseif $rank.id=='google-index' || $rank.id=='bing-index'} {'SEO_Pages'|translate}
+ {/if}
+ </div>
+ </td>
+ </tr>
+ {/foreach}
- <div id="rankStats" align="left" style='margin-top:10px'>
- {if empty($ranks)}
- {'General_Error'|translate}
- {else}
-{capture name=cleanUrl}
-<a href='{$urlToRank|escape:'html'}' target='_blank'>{$urlToRank|escape:'html'}</a>
-{/capture}
- {'SEO_SEORankingsFor'|translate:$smarty.capture.cleanUrl}
- <table cellspacing='2' style='margin:auto;line-height:1.5em;padding-top:10px'>
- {foreach from=$ranks item=rank}
- <tr>
- <td>{if !empty($rank.logo_link)}<a href="{$rank.logo_link}" target="_blank" {if !empty($rank.logo_tooltip)}title="{$rank.logo_tooltip}"{/if}>{/if}<img style='vertical-align:middle;margin-right:6px;' src='{$rank.logo}' border='0' alt="{$rank.label}">{if !empty($rank.logo_link)}</a>{/if} {$rank.label}
- </td><td>
- <div style='margin-left:15px'>
- {if isset($rank.rank)}{$rank.rank}{else}-{/if}
- {if $rank.id=='pagerank'} /10
- {elseif $rank.id=='google-index' || $rank.id=='bing-index'} {'SEO_Pages'|translate}
- {/if}
- </div>
- </td>
- </tr>
- {/foreach}
-
- </table>
- {/if}
- </div>
- </form>
+ </table>
+ {/if}
+ </div>
+ </form>
</div>
diff --git a/plugins/SEO/templates/rank.js b/plugins/SEO/templates/rank.js
index d7a3802fc9..1a9dc07d0c 100644
--- a/plugins/SEO/templates/rank.js
+++ b/plugins/SEO/templates/rank.js
@@ -12,7 +12,7 @@ $(document).ready(function () {
ajaxRequest.addParams({
module: 'SEO',
action: 'getRank',
- url: encodeURIComponent($('#seoUrl').val())
+ url: encodeURIComponent($('#seoUrl').val())
}, 'get');
ajaxRequest.setCallback(
function (response) {