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

MajesticClient.php « SEO « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 61ab4d2d2923fa1022dfd20ee0f2997f30d50e4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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;
	}
}