Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixes #3734, added 'external backlinks' and 'referrer domains' stats …
…to SEO widget via Majestic SEO API.
- Loading branch information
diosmosis
committed
Mar 25, 2013
1 parent
750b789
commit 513fe7e
Showing
6 changed files
with
148 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
<?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 | ||
*/ | ||
|
||
/** | ||
* 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; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters