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

Clockwork.php « SMSProvider « MobileMessaging « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: dfb7854fd3e417a6cc4dc4c6f33ddc1e79d0c00e (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
96
97
98
99
100
101
<?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_MobileMessaging_SMSProvider
 */

require_once PIWIK_INCLUDE_PATH . "/plugins/MobileMessaging/APIException.php";
/**
 *
 * @package Piwik_MobileMessaging_SMSProvider
 */
class Piwik_MobileMessaging_SMSProvider_Clockwork extends Piwik_MobileMessaging_SMSProvider
{
	const SOCKET_TIMEOUT = 15;

	const BASE_API_URL = 'https://api.mediaburst.co.uk/http';
	const CHECK_CREDIT_RESOURCE = '/credit.aspx';
	const SEND_SMS_RESOURCE = '/send.aspx';

	const ERROR_STRING = 'Error';

	const MAXIMUM_FROM_LENGTH = 11;
	const MAXIMUM_CONCATENATED_SMS = 3;

	public function verifyCredential($apiKey)
	{
		$this->getCreditLeft($apiKey);

		return true;
	}

	public function sendSMS($apiKey, $smsText, $phoneNumber, $from)
	{
		$from = substr($from, 0, self::MAXIMUM_FROM_LENGTH);

		$smsText = self::truncate($smsText, self::MAXIMUM_CONCATENATED_SMS);

		$additionalParameters = array(
			'To' => str_replace('+','', $phoneNumber),
			'Content' => $smsText,
			'From' => $from,
			'Long' => 1,
			'MsgType' => self::containsUCS2Characters($smsText) ? 'UCS2' : 'TEXT',
		);

		$this->issueApiCall(
			$apiKey,
			self::SEND_SMS_RESOURCE,
			$additionalParameters
		);
	}

	private function issueApiCall($apiKey, $resource, $additionalParameters = array())
	{
		$accountParameters = array(
			'Key' => $apiKey,
		);

		$parameters = array_merge($accountParameters, $additionalParameters);

		$url = self::BASE_API_URL
				. $resource
				. '?' . http_build_query($parameters, '', '&');

		$timeout = self::SOCKET_TIMEOUT;

		$result = Piwik_Http::sendHttpRequestBy(
			Piwik_Http::getTransportMethod(),
			$url,
			$timeout,
			$userAgent = null,
			$destinationPath = null,
			$file = null,
			$followDepth = 0,
			$acceptLanguage = false,
			$acceptInvalidSslCertificate = true
		);

		if(strpos($result, self::ERROR_STRING) !== false)
		{
			throw new Piwik_MobileMessaging_APIException(
				'Clockwork API returned the following error message : ' . $result
			);
		}

		return $result;
	}

	public function getCreditLeft($apiKey)
	{
		return $this->issueApiCall(
					$apiKey,
					self::CHECK_CREDIT_RESOURCE
				);
	}
}