Test Failed
Push — master ( f7e1ef...8c2dfa )
by Joe
02:17
created

Parallels::getAvailableKeyTypesAndFeatures()   B

Complexity

Conditions 2
Paths 1

Size

Total Lines 310
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 310
rs 8.2857
c 0
b 0
f 0
cc 2
eloc 3
nc 1
nop 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Parallels Functionality
4
 *
5
 * API Documentation at: .. ill fill this in later from forum posts
6
 *
7
 * Last Changed: $LastChangedDate: 2017-05-31 06:50:39 -0400 (Wed, 31 May 2017) $
8
 * @author detain
9
 * @version $Revision: 24936 $
10
 * @copyright 2017
11
 * @package MyAdmin
12
 * @category Licenses
13
 */
14
15
namespace Detain\Parallels;
16
17
/**
18
 * Parallels
19
 *
20
 * @access public
21
 */
22
class Parallels
23
{
24
	public $LicenseType = 'billing'; // billing or purchase
25
	private $xml_options = array('sslverify' => false);
26
	private $default_url = 'https://ka.parallels.com:7050/';
27
	private $default_demo_url = 'https://kademo.parallels.com:7050/';
28
	public $url = '';
29
	public $response;
30
	private $client = '';
31
	private $login = '';
32
	private $password = '';
33
	public $xml;
34
35
	/**
36
	 * @param null|string $login api login, null(default) to use the PARALLELS_KA_LOGIN setting
37
	 * @param null|string $password api password, null(default) to use the PARALLELS_KA_PASSWORD setting
38
	 * @param null|string $client api client, null(default) to use the PARALLELS_KA_CLIENT setting
39
	 * @param bool $demo defaults to false, whether or not to use the demo interface instae dof the normal one
40
	 * @param null|array $xml_options array of optoins ot pass to xmlrpc2 client
41
	 */
42
	public function __construct($login = null, $password = null, $client = null, $demo = false, $xml_options = null) {
0 ignored issues
show
Coding Style introduced by
__construct uses the super-global variable $GLOBALS which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
43
		if (is_null($login) && defined('PARALLELS_KA_LOGIN'))
44
			$this->login = constant('PARALLELS_KA_LOGIN');
45
		else
46
			$this->login = $login;
47
		if (is_null($password) && defined('PARALLELS_KA_PASSWORD'))
48
			$this->password = constant('PARALLELS_KA_PASSWORD');
49
		else
50
			$this->password = $password;
51
		if (!is_null($client))
52
			$this->client = $client;
53
		elseif (defined('PARALLELS_KA_CLIENT'))
54
			$this->client = constant('PARALLELS_KA_CLIENT');
55
		if ($demo === true)
56
			$this->url = $this->default_demo_url;
57
		elseif ($demo === false)
58
			$this->url = $this->default_url;
59
		else
60
			$this->url = $demo;
0 ignored issues
show
Documentation Bug introduced by
The property $url was declared of type string, but $demo is of type boolean. Maybe add a type cast?

This check looks for assignments to scalar types that may be of the wrong type.

To ensure the code behaves as expected, it may be a good idea to add an explicit type cast.

$answer = 42;

$correct = false;

$correct = (bool) $answer;
Loading history...
61
		if (!is_null($xml_options))
62
			$this->xml_options = $xml_options;
63
		if (!isset($GLOBALS['HTTP_RAW_POST_DATA']))
64
			$GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents('php://input');
65
		require_once('XML/RPC2/Client.php');
66
		$this->xml = XML_RPC2_Client::create($this->url, $this->xml_options);
67
	}
68
69
	/**
70
	 * @return array
71
	 */
72
	public function AuthInfo() {
73
		return array('login' => $this->login, 'password' => $this->password);
74
	}
75
76
	/**
77
	 * @param array $ips
78
	 * @param array $macs
79
	 * @return array
80
	 */
81
	public function ServerAddress($ips = array(), $macs = array()) {
82
		if (!is_array($ips) && $ips != '')
83
			$ips = array($ips);
84
		if (!is_array($macs) && $macs != '')
85
			$macs = array($macs);
86
		return array(
87
			'ips' => $ips,
88
			'macs' => $macs,
89
			);
90
	}
91
92
	/**
93
	 * @param $Key
94
	 * @return mixed
95
	 */
96
	public function terminateKey($Key) {
97
		$this->response = $this->xml->__call('partner10.terminateKey', array($this->AuthInfo(), $Key));
98
		return $this->response;
99
	}
100
101
	/**
102
	 * @param $Key
103
	 * @return mixed
104
	 */
105
	public function resetKey($Key) {
106
		$this->response = $this->xml->__call('partner10.resetKey', array($this->AuthInfo(), $Key));
107
		return $this->response;
108
	}
109
110
	/**
111
	 * @param $Key
112
	 * @return mixed
113
	 */
114
	public function activateKey($Key) {
115
		$this->response = $this->xml->__call('partner10.activateKey', array($this->AuthInfo(), $Key));
116
		return $this->response;
117
	}
118
119
	/**
120
	 * @param $Key
121
	 * @param $Note
122
	 * @return mixed
123
	 */
124
	public function addNoteToKey($Key, $Note) {
125
		$this->response = $this->xml->__call('partner10.addNoteToKey', array($this->AuthInfo(), $Key, $Note));
126
		return $this->response;
127
	}
128
129
	/**
130
	 * @param      $Key
131
	 * @param bool $Email
132
	 * @return mixed
133
	 */
134
	public function sendKeyByEmail($Key, $Email = false) {
135
		if ($Email === false)
136
			$this->response = $this->xml->__call('partner10.sendKeyByEmail', array($this->AuthInfo(), $Key));
137
		else
138
			$this->response = $this->xml->__call('partner10.sendKeyByEmail', array($this->AuthInfo(), $Key, $Email));
139
		return $this->response;
140
	}
141
142
	/**
143
	 * @param       $KeyType
144
	 * @param array $UpgradePlans
145
	 * @param array $ips
146
	 * @param array $macs
147
	 * @param bool  $LicenseType
148
	 * @param bool  $client
149
	 * @return mixed
150
	 */
151
	public function createKey($KeyType, $UpgradePlans = array(), $ips = array(), $macs = array(), $LicenseType = false, $client = false) {
152
		if (!is_array($ips) && $ips != '')
153
			$ips = array($ips);
154
		$this->response = $this->xml->__call('partner10.createKey', array(
155
			$this->AuthInfo(),
156
			$this->ServerAddress($ips, $macs),
157
			($client === false ? $this->client : $client),
158
			$KeyType,
159
			$UpgradePlans,
160
			($LicenseType === false ? $this->LicenseType : $LicenseType)));
161
		return $this->response;
162
		/* Success:
0 ignored issues
show
Unused Code Comprehensibility introduced by
41% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
163
		Array
164
		(
165
		[mainKeyNumber] => PLSK.00004266.0000
166
		[expirationDate] => stdClass Object
167
		(
168
		[scalar] => 20131209T00:00:00
169
		[xmlrpc_type] => datetime
170
		[timestamp] => 1386547200
171
		)
172
173
		[productKey] => DETAIN-2TVB02-ZT1R57-AY2442-6WN966
174
		[additionalKeysNumbers] => Array
175
		(
176
		)
177
178
		[resultCode] => 100
179
		[resultDesc] => PLSK.00004266.0000 has been successfully created.
180
		[updateDate] => stdClass Object
181
		(
182
		[scalar] => 20131129T00:00:00
183
		[xmlrpc_type] => datetime
184
		[timestamp] => 1385683200
185
		)
186
187
		)
188
		*/
189
	}
190
191
	/**
192
	 * @param $Key
193
	 * @return mixed
194
	 */
195
	public function retrieveKey($Key) {
196
		$this->response = $this->xml->__call('partner10.retrieveKey', array($this->AuthInfo(), $Key));
197
		return $this->response;
198
		/* Success
199
		Array
200
		(
201
		[keyExtension] => xml
202
		[resultCode] => 100
203
		[resultDesc] => PLSK.00005819.0000 has been successfully retrieved
204
		[keyNumber] => PLSK.00005819.0000
205
		[key] => stdClass Object
206
		(
207
		[scalar] => <?xml version="1.0" encoding="UTF-8"?><plesk-windows:key xmlns:plesk-windows="http://parallels.com/schemas/keys/products/plesk/windows/multi" core:format="openfusion-3" xmlns:core="http://parallels.com/schemas/keys/core/3">
208
		<!--Unique product Key number-->
209
		<core:key-number core:type="string">PLSK.00005819</core:key-number>
210
		<!--Key version-->
211
		<core:key-version core:type="string">0000</core:key-version>
212
		<!--Key description-->
213
		<core:description>
214
		<core:keytype>Parallels Plesk Panel 10.x/11.x and Later for Windows</core:keytype>
215
		<core:feature>Unlimited Domains w/1 yr SUS</core:feature>
216
		<core:feature>Parallels Web Presence Builder - 100 Sites</core:feature>
217
		<core:feature>Parallels PowerPack for Plesk (Windows)</core:feature>
218
		</core:description>
219
		<!--Product which this license is intended to work on-->
220
		<core:product core:type="string">plesk-win</core:product>
221
		<!--Supported product version-->
222
		<core:versions>
223
		<core:from core:type="string">10.0</core:from>
224
		<core:to core:type="string">any</core:to>
225
		</core:versions>
226
		<!--Date after which this license becomes usable (inclusive)-->
227
		<core:start-date core:type="date">instant</core:start-date>
228
		<!--Date before which this license is usable (exclusive)-->
229
		<core:expiration-date core:type="date">2013-12-02</core:expiration-date>
230
		<!--URL of the service endpoint to use when performing an autoupdate-->
231
		<core:license-server-url core:type="string">https://ka.parallels.com:5224/xmlrpc</core:license-server-url>
232
		<!--Date when product will try to perform an autoupdate-->
233
		<core:update-date core:type="date">2013-11-22</core:update-date>
234
		<core:update-ticket core:hidden="true" core:type="string">k0uj75wmlfa1a5hwmk-k43gy2ji0p2y1</core:update-ticket>
235
		<!--Number of domains-->
236
		<plesk-windows:domains core:type="integer">unlimited</plesk-windows:domains>
237
		<!--Number of clients-->
238
		<plesk-windows:clients core:type="integer">unlimited</plesk-windows:clients>
239
		<!--Number of webusers-->
240
		<plesk-windows:webusers core:type="integer">unlimited</plesk-windows:webusers>
241
		<!--Number of mailnames-->
242
		<plesk-windows:mailnames core:type="integer">unlimited</plesk-windows:mailnames>
243
		<!--Number of additional language pack(s)-->
244
		<plesk-windows:language-packs core:type="integer">0</plesk-windows:language-packs>
245
		<plesk-windows:mpc-id core:hidden="true" core:type="integer">0</plesk-windows:mpc-id>
246
		<plesk-windows:mpc-disabled core:hidden="true" core:type="boolean">false</plesk-windows:mpc-disabled>
247
		<!--Google tools-->
248
		<plesk-windows:google-tools core:type="boolean">true</plesk-windows:google-tools>
249
		<plesk-windows:mpc-mng-disabled core:hidden="true" core:type="boolean">false</plesk-windows:mpc-mng-disabled>
250
		<!--Number of slaves-->
251
		<plesk-windows:slaves core:type="integer">0</plesk-windows:slaves>
252
		<!--EventManager-->
253
		<plesk-windows:event-manager core:type="boolean">true</plesk-windows:event-manager>
254
		<!--Domains backup-->
255
		<plesk-windows:domains-backup core:type="boolean">true</plesk-windows:domains-backup>
256
		<!--Tomcat support-->
257
		<plesk-windows:tomcat-support core:type="boolean">true</plesk-windows:tomcat-support>
258
		<!--Subdomains-->
259
		<plesk-windows:subdomains-support core:type="boolean">true</plesk-windows:subdomains-support>
260
		<!--Backward key compatibility restriction-->
261
		<plesk-windows:backward-restriction core:type="integer">0</plesk-windows:backward-restriction>
262
		<!--Work Inside Virtuozzo-->
263
		<plesk-windows:vps-only core:type="boolean">false</plesk-windows:vps-only>
264
		<!--Work Inside Hyper-V-->
265
		<plesk-windows:hyper-v core:type="boolean">false</plesk-windows:hyper-v>
266
		<!--Work Inside VMware-->
267
		<plesk-windows:vmware core:type="boolean">false</plesk-windows:vmware>
268
		<!--Work Inside Xen-->
269
		<plesk-windows:xen core:type="boolean">false</plesk-windows:xen>
270
		<!--Work Inside KVM-->
271
		<plesk-windows:kvm core:type="boolean">false</plesk-windows:kvm>
272
		<!--Work Inside Parallels Hypervisor-->
273
		<plesk-windows:hypervisor core:type="boolean">false</plesk-windows:hypervisor>
274
		<!--Global changes-->
275
		<plesk-windows:global-changes core:type="boolean">true</plesk-windows:global-changes>
276
		<!--Shell access-->
277
		<plesk-windows:shell-access core:type="boolean">true</plesk-windows:shell-access>
278
		<!--Detailed traffic-->
279
		<plesk-windows:detailed-traffic core:type="boolean">true</plesk-windows:detailed-traffic>
280
		<!--Notification manager-->
281
		<plesk-windows:notification-manager core:type="boolean">true</plesk-windows:notification-manager>
282
		<!--Action log manager-->
283
		<plesk-windows:action-manager core:type="boolean">true</plesk-windows:action-manager>
284
		<!--Clients and Domains Expirations management-->
285
		<plesk-windows:expirations-manager core:type="boolean">true</plesk-windows:expirations-manager>
286
		<!--Client templates-->
287
		<plesk-windows:client-templates core:type="boolean">true</plesk-windows:client-templates>
288
		<!--Ability to use Application Vault-->
289
		<plesk-windows:appvault-support core:type="boolean">true</plesk-windows:appvault-support>
290
		<!--Ability to use SpamAssassin-->
291
		<plesk-windows:spamassasin-support core:type="boolean">true</plesk-windows:spamassasin-support>
292
		<!--Ability to use Trouble Ticketing System-->
293
		<plesk-windows:tts-support core:type="boolean">true</plesk-windows:tts-support>
294
		<!--Ability to use ColdFusion-->
295
		<plesk-windows:coldfusion-support core:type="boolean">true</plesk-windows:coldfusion-support>
296
		<plesk-windows:ask-update core:hidden="true" core:type="boolean">false</plesk-windows:ask-update>
297
		<plesk-windows:autoinstaller-config core:hidden="true" core:type="string">true</plesk-windows:autoinstaller-config>
298
		<!--Ability to use DrWeb-->
299
		<plesk-windows:drweb-support core:type="boolean">true</plesk-windows:drweb-support>
300
		<plesk-windows:store-id core:hidden="true" core:type="integer">1</plesk-windows:store-id>
301
		<!--Ability to use Migration Manager-->
302
		<plesk-windows:migration-manager core:type="boolean">true</plesk-windows:migration-manager>
303
		<!--Ability to use MS SQL-->
304
		<plesk-windows:mssql core:type="boolean">true</plesk-windows:mssql>
305
		<!--Allowed locales-->
306
		<plesk-windows:allowed-locales core:type="string">any</plesk-windows:allowed-locales>
307
		<!--Allows feature upgrades for this version-->
308
		<plesk-windows:feature-upgrades core:type="boolean">true</plesk-windows:feature-upgrades>
309
		<!--Parallels Plesk Billing accounts count-->
310
		<plesk-windows:modernbill-accounts core:type="integer">0</plesk-windows:modernbill-accounts>
311
		<!--Number of sites-->
312
		<plesk-windows:sitebuilder-sites core:type="integer">100</plesk-windows:sitebuilder-sites>
313
		<!--Enable Parallels Plesk Mobile Server Manager-->
314
		<plesk-windows:mobile-server-manager-support core:type="boolean">true</plesk-windows:mobile-server-manager-support>
315
		<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
316
		<ds:SignedInfo>
317
		<ds:CanonicalizationMethod Algorithm="http://parallels.com/schemas/keys/core/3#canonicalize"/>
318
		<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
319
		<ds:Reference URI="">
320
		<ds:Transforms>
321
		<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
322
		<ds:Transform Algorithm="http://parallels.com/schemas/keys/core/3#transform"/>
323
		</ds:Transforms>
324
		<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
325
		<ds:DigestValue>ENCODED HASH HERE</ds:DigestValue>
326
		</ds:Reference>
327
		</ds:SignedInfo>
328
		<ds:SignatureValue>
329
		ENCODED DATA HERE
330
		</ds:SignatureValue>
331
		<ds:KeyInfo>
332
		<ds:X509Data>
333
		<ds:X509Certificate>
334
		ENCODED DATA HERE
335
		</ds:X509Certificate>
336
		</ds:X509Data>
337
		</ds:KeyInfo>
338
		</ds:Signature>
339
		</plesk-windows:key>
340
341
		[xmlrpc_type] => base64
342
		)
343
344
		)
345
346
		*/
347
	}
348
349
	/**
350
	 * Returns an array with keys 'resultCode', 'resultDesc', and 'upgradePlans'.  the last one being an array of plan names, one time i wrote down the output it looked like:
351
	 * 3_LANGUAGE_PACKS FOTOLIA_OFF 5_LANGUAGE_PACKS  NEWSFEED_OFF VIRTUOZZO_PROMO_OFF ADDITIONAL_LANGUAGE_PACK were some of the packqage types, there wer eothers
352
	 *
353
	 * @param $Key
354
	 * @return mixed
355
	 */
356
	public function getAvailableUpgrades($Key) {
357
		$this->response = $this->xml->__call('partner10.getAvailableUpgrades', array($this->AuthInfo(), $Key));
358
		return $this->response;
359
	}
360
361
	/**
362
	 * Success
363
	 * Array
364
	 * (
365
	 * [keyInfo] => Array
366
	 * (
367
	 * [expirationDate] => stdClass Object
368
	 * (
369
	 * [scalar] => 20131202T00:00:00
370
	 * [xmlrpc_type] => datetime
371
	 * [timestamp] => 1385942400
372
	 * )
373
	 * )
374
	 * [features] => Array
375
	 * (
376
	 * [0] => Array
377
	 * (
378
	 * [apiName] => PLESK_7X_FOR_WIN_POWER_PACK
379
	 * [name] => Parallels PowerPack for Plesk (Windows) (Monthly Lease)
380
	 * )
381
	 * [1] => Array
382
	 * (
383
	 * [apiName] => PLESK-100-SITES
384
	 * [name] => Parallels Web Presence Builder - 100 Sites (Monthly Lease)
385
	 * )
386
	 * [2] => Array
387
	 * (
388
	 * [apiName] => UNLIMITED_DOMAINS
389
	 * [name] => Unlimited Domains w/1 yr SUS (Lease)
390
	 * )
391
	 * )
392
	 * [billingType] => LEASE
393
	 * [productFamily] => plesk
394
	 * [createDate] => stdClass Object
395
	 * (
396
	 * [scalar] => 20131023T18:02:11
397
	 * [xmlrpc_type] => datetime
398
	 * [timestamp] => 1382551331
399
	 * )
400
	 * [trial] =>
401
	 * [lastReportingDate] => stdClass Object
402
	 * (
403
	 * [scalar] => 20131029T06:27:31
404
	 * [xmlrpc_type] => datetime
405
	 * [timestamp] => 1383028051
406
	 * )
407
	 * [additionalKeys] => Array
408
	 * (
409
	 * [0] => Array
410
	 * (
411
	 * [expirationDate] => stdClass Object
412
	 * (
413
	 * [scalar] => 20131202T00:00:00
414
	 * [xmlrpc_type] => datetime
415
	 * [timestamp] => 1385942400
416
	 * )
417
	 * [lastReportingIp] => 206.72.205.242, 206.72.205.243, 206.72.205.244, 206.72.205.245, 206.72.205.246
418
	 * [apiKeyType] => N/A
419
	 * [boundIPAddress] =>
420
	 * [problem] =>
421
	 * [keyNumber] => KAV.00005821.0001
422
	 * [properties] => Array
423
	 * (
424
	 * )
425
	 * [type] => ADDITIONAL
426
	 * [updateDate] => stdClass Object
427
	 * (
428
	 * [scalar] => 20131122T00:00:00
429
	 * [xmlrpc_type] => datetime
430
	 * [timestamp] => 1385078400
431
	 * )
432
	 * [clientId] => 19282468
433
	 * [parentKeyNumber] => PLSK.00005819.0000
434
	 * [lastReportingVersion] => 11.5.3
435
	 * [keyType] => Parallels Plesk Panel Antivirus Powered by Kaspersky, 5 Mailboxes (Parallels PowerPack for Plesk) (Windows) (Monthly Lease)
436
	 * [terminated] =>
437
	 * [susAndSupportInfo] => Array
438
	 * (
439
	 * )
440
	 * [features] => Array
441
	 * (
442
	 * )
443
	 * [billingType] => LEASE
444
	 * [productFamily] => kav
445
	 * [createDate] => stdClass Object
446
	 * (
447
	 * [scalar] => 20131023T18:02:12
448
	 * [xmlrpc_type] => datetime
449
	 * [timestamp] => 1382551332
450
	 * )
451
	 * [trial] =>
452
	 * [lastReportingDate] => stdClass Object
453
	 * (
454
	 * [scalar] => 20131023T18:05:24
455
	 * [xmlrpc_type] => datetime
456
	 * [timestamp] => 1382551524
457
	 * )
458
	 * [additionalKeys] => Array
459
	 * (
460
	 * )
461
	 * )
462
	 * [1] => Array
463
	 * (
464
	 * [expirationDate] => stdClass Object
465
	 * (
466
	 * [scalar] => 20131202T00:00:00
467
	 * [xmlrpc_type] => datetime
468
	 * [timestamp] => 1385942400
469
	 * )
470
	 * [lastReportingIp] => 206.72.205.242, 206.72.205.243, 206.72.205.244, 206.72.205.245, 206.72.205.246
471
	 * [apiKeyType] => N/A
472
	 * [boundIPAddress] =>
473
	 * [problem] =>
474
	 * [keyNumber] => APS.00005820.0001
475
	 * [properties] => Array
476
	 * (
477
	 * )
478
	 * [type] => ADDITIONAL
479
	 * [updateDate] => stdClass Object
480
	 * (
481
	 * [scalar] => 20131122T00:00:00
482
	 * [xmlrpc_type] => datetime
483
	 * [timestamp] => 1385078400
484
	 * )
485
	 * [clientId] => 19282468
486
	 * [parentKeyNumber] => PLSK.00005819.0000
487
	 * [lastReportingVersion] => 11.5.3
488
	 * [keyType] => UNITY One, 2 Domains (Parallels PowerPack for Plesk) (Windows) (Monthly Lease)
489
	 * [terminated] =>
490
	 * [susAndSupportInfo] => Array
491
	 * (
492
	 * )
493
	 * [features] => Array
494
	 * (
495
	 * )
496
	 * [billingType] => LEASE
497
	 * [productFamily] => unity-one
498
	 * [createDate] => stdClass Object
499
	 * (
500
	 * [scalar] => 20131023T18:02:11
501
	 * [xmlrpc_type] => datetime
502
	 * [timestamp] => 1382551331
503
	 * )
504
	 * [trial] =>
505
	 * [lastReportingDate] => stdClass Object
506
	 * (
507
	 * [scalar] => 20131023T18:05:26
508
	 * [xmlrpc_type] => datetime
509
	 * [timestamp] => 1382551526
510
	 * )
511
	 * [additionalKeys] => Array
512
	 * (
513
	 * )
514
	 * )
515
	 * )
516
	 * )
517
	 *[resultCode] => 100
518
	 * [resultDesc] => Key info for PLSK.00005819.0000 key returned successfully
519
	 * [keyNumber] => PLSK.00005819.0000
520
	 * )
521
	 *
522
	 * @param $Key
523
	 * @return mixed
524
	 */
525
	public function getKeyInfo($Key) {
526
		$this->response = $this->xml->__call('partner10.getKeyInfo', array($this->AuthInfo(), $Key));
527
		return $this->response;
528
	}
529
530
	/**
531
	 * @param $ip
532
	 * @return bool
533
	 */
534
	public function getMainKeyFromIp($ip) {
535
		$response = $this->getKeyNumbers($ip);
536
		//$response = $this->getKeysInfoByIP($ip);
0 ignored issues
show
Unused Code Comprehensibility introduced by
64% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
537
		$return = false;
538
		if (isset($response['keyInfos'])) {
539
			foreach ($response['keyInfos'] as $idx => $data) {
540
				if ($return === false)
541
					$return = $data['keyNumber'];
542
				if ($data['type'] == 'MAIN')
543
					$return = $data['keyNumber'];
544
			}
545
			return $return;
546
		} else
547
			return false;
548
	}
549
550
	/**
551
	 * @param $ip
552
	 * @return mixed
553
	 */
554
	public function getKeysInfoByIP($ip) {
555
		$this->response = $this->xml->__call('partner10.getKeysInfoByIP', array($this->AuthInfo(), $ip));
556
		return $this->response;
557
	}
558
559
	/**
560
	 * @param array $ips
561
	 * @param array $macs
562
	 * @return mixed
563
	 */
564
	public function getKeyNumbers($ips = array(), $macs = array()) {
565
		myadmin_log('licenses', 'info', json_encode($this->ServerAddress($ips, $macs)), __LINE__, __FILE__);
566
		$this->response = $this->xml->__call('partner10.getKeyNumbers', array($this->AuthInfo(), $this->ServerAddress($ips, $macs)));
567
		return $this->response;
568
		/* Success
0 ignored issues
show
Unused Code Comprehensibility introduced by
47% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
569
		Array
570
		(
571
		[keyInfos] => Array
572
		(
573
		[0] => Array
574
		(
575
		[keyType] => Parallels Plesk Panel 10.x/11.x and Later for Windows for Virtual Machines (Lease)
576
		Lease)
577
		[lastReportingIp] => 206.72.205.242
578
		[terminated] => 1
579
		[keyNumber] => KAV.00004873.0002
580
		[billingType] => LEASE
581
		[type] => ADDITIONAL
582
		[createDate] => stdClass Object
583
		(
584
		[scalar] => 20131014T16:44:40
585
		[xmlrpc_type] => datetime
586
		[timestamp] => 1381769080
587
		)
588
589
		[lastReportingDate] => stdClass Object
590
		(
591
		[scalar] => 20131023T17:35:45
592
		[xmlrpc_type] => datetime
593
		[timestamp] => 1382549745
594
		)
595
596
		)
597
598
		[3] => Array
599
		(
600
		[keyType] => Parallels Plesk Panel 10.x/11.x and Later for Windows (Lease)
601
		[lastReportingIp] => 206.72.205.242, 206.72.205.243, 206.72.205.244, 206.72.205.245, 206.72.205.246
602
		[terminated] =>
603
		[keyNumber] => PLSK.00005819.0000
604
		[billingType] => LEASE
605
		[type] => MAIN
606
		[createDate] => stdClass Object
607
		(
608
		[scalar] => 20131023T18:02:11
609
		[xmlrpc_type] => datetime
610
		[timestamp] => 1382551331
611
		)
612
613
		[lastReportingDate] => stdClass Object
614
		(
615
		[scalar] => 20131029T06:27:31
616
		[xmlrpc_type] => datetime
617
		[timestamp] => 1383028051
618
		)
619
620
		)
621
622
		[4] => Array
623
		(
624
		[keyType] => UNITY One, 2 Domains (Parallels PowerPack for Plesk) (Windows) (Monthly Lease)
625
		[lastReportingIp] => 206.72.205.242, 206.72.205.243, 206.72.205.244, 206.72.205.245, 206.72.205.246
626
		[terminated] =>
627
		[keyNumber] => APS.00005820.0001
628
		[billingType] => LEASE
629
		[type] => ADDITIONAL
630
		[createDate] => stdClass Object
631
		(
632
		[scalar] => 20131023T18:02:11
633
		[xmlrpc_type] => datetime
634
		[timestamp] => 1382551331
635
		)
636
637
		[lastReportingDate] => stdClass Object
638
		(
639
		[scalar] => 20131023T18:05:26
640
		[xmlrpc_type] => datetime
641
		[timestamp] => 1382551526
642
		)
643
644
		)
645
646
		[5] => Array
647
		(
648
		[keyType] => Parallels Plesk Panel Antivirus Powered by Kaspersky, 5 Mailboxes (Parallels PowerPack for Plesk) (Windows) (Monthly Lease)
649
		[lastReportingIp] => 206.72.205.242, 206.72.205.243, 206.72.205.244, 206.72.205.245, 206.72.205.246
650
		[terminated] =>
651
		[keyNumber] => KAV.00005821.0001
652
		[billingType] => LEASE
653
		[type] => ADDITIONAL
654
		[createDate] => stdClass Object
655
		(
656
		[scalar] => 20131023T18:02:12
657
		[xmlrpc_type] => datetime
658
		[timestamp] => 1382551332
659
		)
660
661
		[lastReportingDate] => stdClass Object
662
		(
663
		[scalar] => 20131023T18:05:24
664
		[xmlrpc_type] => datetime
665
		[timestamp] => 1382551524
666
		)
667
668
		)
669
670
		)
671
672
		[resultCode] => 100
673
		[resultDesc] => Found: PLSK.02554871.0001, APS.02554872.0002, KAV.02554873.0002, PLSK.00005819.0000, APS.00005820.0001, KAV.00005821.0001
674
		[keyNumbers] => Array
675
		(
676
		[0] => PLSK.02554871.0001
677
		[1] => APS.02554872.0002
678
		[2] => KAV.02554873.0002
679
		[3] => PLSK.00005819.0000
680
		[4] => APS.00005820.0001
681
		[5] => KAV.00005821.0001
682
		)
683
684
		[detailResultCode] => 0
685
		)
686
		*/
687
	}
688
689
	/**
690
	 * @param bool $client
691
	 * @return mixed
692
	 */
693
	public function getAvailableKeyTypesAndFeatures($client = false) {
694
		$this->response = $this->xml->__call('partner10.getAvailableKeyTypesAndFeatures', array($this->AuthInfo(), ($client === false ? $this->client : $client)));
695
		return $this->response;
696
		/* My Output:
0 ignored issues
show
Unused Code Comprehensibility introduced by
42% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
697
		Array
698
		(
699
		[resultCode] => 100
700
		[features] => Array
701
		(
702
		[0] => ADDON-CT-OAS-L-1Y
703
		[1] => ADDON-HMP-L-M
704
		[2] => SB10X-500
705
		[3] => ADDON-WPB-12500-M
706
		[4] => MEDIUM
707
		[5] => 30_DOMAINS_FOR_VZ
708
		[6] => PLESK-100-SITES
709
		[7] => SB10X-35000
710
		[8] => STORE_BUTTON_OFF
711
		[9] => 2CPU_90CT_PIM
712
		[10] => 4CPU_1CT_PIM
713
		[11] => SB10X-300
714
		[12] => SB10X-25000
715
		[13] => 3_LANGUAGE_PACKS_FOR_VMM
716
		[14] => UNLIMITED_DOMAINS_1000_BILLING_ACCOUNTS_100_SITES_FOR_VZ
717
		[15] => 8CPU_15HV_PVA
718
		[16] => ADDITIONAL_LANGUAGE_PACK
719
		[17] => SB10X-100
720
		[18] => 4CPU_UNLIMITEDVC_PVA
721
		[19] => PLESK_SWSOFT_SERVICES_OFF
722
		[20] => 8CPU_100CT_PVA
723
		[21] => PLESK_POWER_PACK_FOR_VMM
724
		[22] => 4CPU_20CT_PIM
725
		[23] => PLESK-UNLIMITED-PB-ACCOUNTS-FOR-VMM
726
		[24] => HSPHERE_7500_ACCOUNTS
727
		[25] => CLDF-PLUS-M
728
		[26] => 7500_SITES_MULTI_SERVER
729
		[27] => 4-LANGUAGE-PACKS-FOR-PPA
730
		[28] => MONTHLY_AMPS
731
		[29] => 300_SITES
732
		[30] => UO-UNL-L-1Y
733
		[31] => 2CPU_20CT_PIM
734
		[32] => 8CPU_6HV_PVA
735
		[33] => 4_LANGUAGE_PACKS
736
		[34] => 8CPU_40CT_PVA
737
		[35] => 8CPU_1CT_PVA
738
		[36] => 2CPU_4HV_PVA
739
		[37] => 8CPU_200CT_PVA
740
		[38] => 4CPU_60CT_PIM
741
		[39] => 100_EXT_WHITELABEL
742
		[40] => 8CPU_50CT_PVA
743
		[41] => PLESK-UNLIMITED-PB-ACCOUNTS
744
		[42] => SB10X-40000
745
		[43] => PLESK_HOSTING_SUITE_FOR_VZ
746
		[44] => HSPHERE_3750_ACCOUNTS
747
		[45] => 2CPU_7HV_PVA
748
		[46] => 4CPU_5CT_PIM
749
		[47] => UNLIMITED_USERS_FOR_VPS
750
		[48] => PLESK-100-SITES-FOR-VZ
751
		[49] => PLESK_RELOADED_FOR_VZ_POWER_PACK
752
		[50] => 8CPU_10HV_PVA
753
		[51] => ADDONVZ-CT-OAS-L-1Y
754
		[52] => PLESK_7X_FOR_WIN_FOR_VZ_POWER_PACK
755
		[53] => SB10X-2500
756
		[54] => 2CPU_3CT_PIM
757
		[55] => ADDITIONAL_LANGUAGE_PACK_FOR_VZ
758
		[56] => 8CPU_80CT_PVA
759
		[57] => 4CPU_30VC_PVA
760
		[58] => 1000_SITES_MULTI_SERVER
761
		[59] => 1_UNITY_MOBILE_SITE
762
		[60] => 2CPU_40CT_PIM
763
		[61] => EXTRAS_BUTTONS_OFF
764
		[62] => UNLIMITED_DOMAINS_FOR_VMM
765
		[63] => 8CPU_450CT_PVA
766
		[64] => HSPHERE_500_ACCOUNTS
767
		[65] => 4CPU_5VC_PVA
768
		[66] => HSPHERE_1750_ACCOUNTS
769
		[67] => FOTOLIA_OFF
770
		[68] => SB10X-50000
771
		[69] => HSPHERE_1000_ACCOUNTS
772
		[70] => 1000_EXT
773
		[71] => SB10X-7500
774
		[72] => 100_EXTENSIONS
775
		[73] => 2CPU_1CT_PIM
776
		[74] => 1000_EXT_WHITELABEL
777
		[75] => 8CPU_9HV_PVA
778
		[76] => UO-1-L-1Y
779
		[77] => 8CPU_5VC_PVA
780
		[78] => 8CPU_8HV_PVA
781
		[79] => 4_LANGUAGE_PACKS_FOR_VZ
782
		[80] => 4CPU_70CT_PIM
783
		[81] => 30_DOMAINS
784
		[82] => 2_LANGUAGE_PACKS_FOR_VMM
785
		[83] => ADDON-CT-OAS-L-M
786
		[84] => UO-1-W-M
787
		[85] => UNLIMITED-LANGUAGE-PACKS-FOR-PPA
788
		[86] => 100_DOMAINS_FOR_VZ
789
		[87] => ADDON-WPB-1000-M
790
		[88] => STH-WMP-BUSP-M
791
		[89] => UNLIMITED_DOMAINS
792
		[90] => 2CPU_100CT_PIM
793
		[91] => ADDONVZ-HMP-W-M
794
		[92] => DISABLE_SITEBUILDER
795
		[93] => 8CPU_1CT
796
		[94] => HSPHERE_2500_ACCOUNTS
797
		[95] => STH-WMP-BUS-M
798
		[96] => PLESK_POWER_PACK_FOR_WIN
799
		[97] => 8CPU_30VC_PVA
800
		[98] => 8CPU_150CT_PVA
801
		[99] => HSPHERE_5000_ACCOUNTS
802
		[100] => 4CPU_90CT_PIM
803
		[101] => PLESK-UNLIMITED-PB-ACCOUNTS-FOR-VZ
804
		[102] => ADDON-WPB-45000-M
805
		[103] => PLESK_POWER_PACK_FOR_VZ
806
		[104] => 8CPU_250CT_PVA
807
		[105] => 1-LANGUAGE-PACK-FOR-PPA
808
		[106] => UO-UNL-W-M
809
		[107] => 2CPU_5VC_PVA
810
		[108] => ADDON-WPB-15000-M
811
		[109] => PLESK_RELOADED_POWER_PACK
812
		[110] => ADDON-WPB-7500-M
813
		[111] => PLESK-1000-SITES-FOR-VZ
814
		[112] => 10_UNITY_MOBILE_SITES
815
		[148] => 3_LANGUAGE_PACKS_FOR_VZ
816
		[149] => 2CPU_30CT_PIM
817
		[150] => ENTERPRISE
818
		[151] => 2CPU_50CT_PIM
819
		[152] => ADDON-HMP-W-M
820
		[153] => 2_LANGUAGE_PACKS_FOR_VZ
821
		[154] => 4_LANGUAGE_PACKS_FOR_VMM
822
		[155] => UO-UNL-L-M
823
		[156] => SB10X-12500
824
		[157] => 4CPU_50CT_PIM
825
		[158] => ADDON-WPB-20000-M
826
		[159] => HSPHERE_10000_ACCOUNTS
827
		[160] => 4CPU_3CT_PIM
828
		[161] => 3_LANGUAGE_PACKS
829
		[162] => 8CPU_90CT_PVA
830
		[163] => 5000_SITES
831
		[164] => 100_SITES
832
		[165] => PLESK_POWER_PACK
833
		[166] => 8CPU_400CT_PVA
834
		[167] => 500_EXT
835
		[168] => 5000_SITES_MULTI_SERVER
836
		[169] => 5_LANGUAGE_PACKS_FOR_VMM
837
		[170] => UNLIMITED_BATTLEFIELD_SERVERS
838
		[171] => ADDON-WPB-35000-M
839
		[172] => PLESK-100-SITES-FOR-VMM
840
		[173] => ADDON-WPB-50000-M
841
		[174] => 8CPU_4HV_PVA
842
		[175] => 8CPU_5HV_PVA
843
		[176] => 2CPU_10HV_PVA
844
		[177] => ADDON-WPB-300-M
845
		[178] => 2CPU_2HV_PVA
846
		[179] => 300_SITES_MULTI_SERVER
847
		[180] => 10_DOMAINS_FOR_VZ
848
		[181] => 1_LANGUAGE_PACK
849
		[182] => 4CPU_10CT_PIM
850
		[183] => ADDON-WPB-700-M
851
		[184] => 2CPU_30VC_PVA
852
		[185] => 2CPU_1HV_PVA
853
		[186] => 5_USERS_FOR_VPS
854
		[187] => 2CPU_10CT_PIM
855
		[188] => 500_SITES_MULTI_SERVER
856
		[189] => 300_DOMAINS
857
		[190] => 10000_SITES
858
		[191] => 8CPU_2HV_PVA
859
		[192] => ADDON-WPB-10000-M
860
		[193] => PLESK_POWER_PACK_FOR_WIN_FOR_VMM
861
		[194] => PLESK-1000-SITES-FOR-VMM
862
		[195] => 5_LANGUAGE_PACKS
863
		[196] => 1_LANGUAGE_PACK_FOR_VZ
864
		[197] => 2CPU_200CT_PIM
865
		[198] => VIRTUOZZO_PROMO_OFF
866
		[199] => SB10X-5000
867
		[200] => 8CPU_7HV_PVA
868
		[201] => 10_DOMAINS
869
		[202] => PRO
870
		[203] => 500_SITES
871
		[204] => 2CPU_70CT_PIM
872
		[205] => 1_BATTLEFIELD_SERVER
873
		[206] => 2CPU_150CT_PIM
874
		[207] => 2CPU_80CT_PIM
875
		[208] => ADDONVMM-HMP-L-M
876
		[209] => UNLIMITED_USERS
877
		[210] => 4CPU_30CT_PIM
878
		[211] => PLESK_POWER_PACK_FOR_WIN_FOR_VZ
879
		[212] => 8CPU_300CT_PVA
880
		[213] => 5_USERS
881
		[214] => 4CPU_150CT_PIM
882
		[215] => 10_BATTLEFIELD_SERVERS
883
		[216] => ADDON-WPB-100-M
884
		[217] => 8CPU_3HV_PVA
885
		[218] => ADDON-WPB-2500-M
886
		[219] => 5_LANGUAGE_PACKS_FOR_VZ
887
		[220] => 5_BATTLEFIELD_SERVERS
888
		[221] => DISABLE_GOOGLE_TOOLS
889
		[222] => 500_EXT_WHITELABEL
890
		[223] => UNLIMITED_DOMAINS_FOR_VZ
891
		[224] => SB10X-15000
892
		[225] => UNLIMITED_MAILBOXES_FOR_VZ
893
		[226] => 2CPU_5HV_PVA
894
		[227] => PLESK_7X_FOR_WIN_POWER_PACK
895
		[228] => PLESK-1000-SITES
896
		[229] => DISABLE_FEATURE_UPGRADES
897
		[230] => SB10X-20000
898
		[231] => ENTRY
899
		[232] => 2CPU_6HV_PVA
900
		[233] => 8CPU_30CT_PVA
901
		[234] => UO-UNL-W-1Y
902
		[235] => 2_LANGUAGE_PACKS
903
		[236] => 8CPU_UNLIMITEDVC_PVA
904
		[237] => 100_DOMAINS
905
		[238] => 8CPU_20CT_PVA
906
		[239] => 2CPU_3HV_PVA
907
		[240] => ADD_1_MANAGED_MSSQL
908
		[241] => 100_EXT
909
		[242] => 100_EXTENSIONS_FOR_VZ
910
		[243] => ADDON-WPB-500-M
911
		[244] => 8CPU_3CT_PVA
912
		[245] => 2CPU_9HV_PVA
913
		[246] => 1_LANGUAGE_PACK_FOR_VMM
914
		[247] => 8CPU_10CT_PVA
915
		[248] => 2CPU_15HV_PVA
916
		[249] => 2CPU_8HV_PVA
917
		[250] => STARTER
918
		[251] => ADDONVMM-HMP-W-M
919
		[252] => 7500_SITES
920
		[253] => 4CPU_40CT_PIM
921
		[254] => SB10X-30000
922
		[255] => PROFESSIONAL
923
		[256] => 1000_SITES
924
		[257] => 8CPU_350CT_PVA
925
		[258] => 2CPU_60CT_PIM
926
		[259] => HSPHERE_200_ACCOUNTS
927
		[260] => 8CPU_500CT_PVA
928
		[261] => SB10X-10000
929
		[262] => STH-WMP-BSC-M
930
		[263] => ADDON-WPB-25000-M
931
		)
932
933
		[resultDesc] => Key types available: GLOBAL_MENTORING_LIVE_EXPERT_STANDARD_CARE, PSBM_45_SPE, PLESK-10-AND-LATER-FOR-VMM, PLESK_ANTIVIRUS_BY_KAV_FOR_WIN_FOR_VZ, PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-L-M, MYLITTLEADMIN_2000, MYLITTLEADMIN_2005, PLESK_ANTIVIRUS_BY_DRWEB_FOR_WIN, CRT-5-UNL-L, GLOBAL_MENTORING_TOTAL_CARE, LINUXMAGIC_MAGICSPAM, PLESK_ANTIVIRUS_BY_KAV_FOR_VZ, PINNACLE_CART_ECOMMERCE_SHOPPING_CART, SYMANTEC_NORTON_INTERNET_SECURITY_10SEATS_MONTHLY, ATI_PRO_FOR_WIN, STOPTHEHACKER-M, PARALLELS_PREMIUM_ANTIVIRUS_FOR_WIN_FOR_VZ, SB10X-PA, ATI_PRO, CRT-30-UNL-L, 4PSA_VOIPNOW_25_PROFESSIONAL, CLOUDLINUX-L-M, ATMAIL_WEBMAIL, PLESK_10_AND_LATER_FOR_WIN, CRT-5-100-L, PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-FOR-VZ-L-1Y, UNITY-ONE-W-M, PLESK-10-AND-LATER-FOR-WIN-FOR-VMM, GLOBAL_MENTORING_LIVE_EXPERT_BASIC, CRT-50-UNL-L, VIRTUOZZO_CONTAINERS_4, PARALLELS_PREMIUM_ANTIVIRUS_FOR_VZ, PLESK_10_AND_LATER_FOR_VZ, PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-FOR-VZ-L-M, CRT-50-100-L, UNITY-ONE-L-M, PLESK_ANTIVIRUS_BY_DRWEB, SYMANTEC_NORTON_INTERNET_SECURITY_MONTHLY, CRT-100-UNL-L, PARALLELS-CLOUD-SERVER, PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-L-1Y, CRT-100-100-L, PLESK_10_AND_LATER_FOR_WIN_FOR_VZ, PPA-L-M, PARALLELS_PREMIUM_ANTIVIRUS_FOR_WIN, PARALLELS-PREMIUM-ANTIVIRUS-FOR-VMM, PLESK_ANTIVIRUS_BY_KAV_FOR_WIN, PLESK_ANTIVIRUS_BY_DRWEB_FOR_VZ, SYMANTEC_NORTON_INTERNET_SECURITY_5SEATS_MONTHLY, UNITY_MOBILE, PLESK_ANTIVIRUS_BY_DRWEB_FOR_WIN_FOR_VZ, SB10X, UNITY_MOBILE_FOR_WIN, PARALLELS-CLOUD-STORAGE, CRT-30-100-L, CLOUDFLARE-M, VIRTUOZZO_CONTAINERS_4_FOR_WIN, PLESK_10_AND_LATER, PARALLELS_PREMIUM_ANTIVIRUS, SYMANTEC_NORTON_INTERNET_SECURITY_3SEATS_MONTHLY, PLESK_ANTIVIRUS_BY_KAV, KEEPIT_ONLINE_BACKUP. Features available: ADDON-CT-OAS-L-1Y, ADDON-HMP-L-M, SB10X-500, ADDON-WPB-12500-M, MEDIUM, 30_DOMAINS_FOR_VZ, PLESK-100-SITES, SB10X-35000, STORE_BUTTON_OFF, 2CPU_90CT_PIM, 4CPU_1CT_PIM, SB10X-300, SB10X-25000, 3_LANGUAGE_PACKS_FOR_VMM, UNLIMITED_DOMAINS_1000_BILLING_ACCOUNTS_100_SITES_FOR_VZ, 8CPU_15HV_PVA, ADDITIONAL_LANGUAGE_PACK, SB10X-100, 4CPU_UNLIMITEDVC_PVA, PLESK_SWSOFT_SERVICES_OFF, 8CPU_100CT_PVA, PLESK_POWER_PACK_FOR_VMM, 4CPU_20CT_PIM, PLESK-UNLIMITED-PB-ACCOUNTS-FOR-VMM, HSPHERE_7500_ACCOUNTS, CLDF-PLUS-M, 7500_SITES_MULTI_SERVER, 4-LANGUAGE-PACKS-FOR-PPA, MONTHLY_AMPS, 300_SITES, UO-UNL-L-1Y, 2CPU_20CT_PIM, 8CPU_6HV_PVA, 4_LANGUAGE_PACKS, 8CPU_40CT_PVA, 8CPU_1CT_PVA, 2CPU_4HV_PVA, 8CPU_200CT_PVA, 4CPU_60CT_PIM, 100_EXT_WHITELABEL, 8CPU_50CT_PVA, PLESK-UNLIMITED-PB-ACCOUNTS, SB10X-40000, PLESK_HOSTING_SUITE_FOR_VZ, HSPHERE_3750_ACCOUNTS, 2CPU_7HV_PVA, 4CPU_5CT_PIM, UNLIMITED_USERS_FOR_VPS, PLESK-100-SITES-FOR-VZ, PLESK_RELOADED_FOR_VZ_POWER_PACK, 8CPU_10HV_PVA, ADDONVZ-CT-OAS-L-1Y, PLESK_7X_FOR_WIN_FOR_VZ_POWER_PACK, SB10X-2500, 2CPU_3CT_PIM, ADDITIONAL_LANGUAGE_PACK_FOR_VZ, 8CPU_80CT_PVA, 4CPU_30VC_PVA, 1000_SITES_MULTI_SERVER, 1_UNITY_MOBILE_SITE, 2CPU_40CT_PIM, EXTRAS_BUTTONS_OFF, UNLIMITED_DOMAINS_FOR_VMM, 8CPU_450CT_PVA, HSPHERE_500_ACCOUNTS, 4CPU_5VC_PVA, HSPHERE_1750_ACCOUNTS, FOTOLIA_OFF, SB10X-50000, HSPHERE_1000_ACCOUNTS, 1000_EXT, SB10X-7500, 100_EXTENSIONS, 2CPU_1CT_PIM, 1000_EXT_WHITELABEL, 8CPU_9HV_PVA, UO-1-L-1Y, 8CPU_5VC_PVA, 8CPU_8HV_PVA, 4_LANGUAGE_PACKS_FOR_VZ, 4CPU_70CT_PIM, 30_DOMAINS, 2_LANGUAGE_PACKS_FOR_VMM, ADDON-CT-OAS-L-M, UO-1-W-M, UNLIMITED-LANGUAGE-PACKS-FOR-PPA, 100_DOMAINS_FOR_VZ, ADDON-WPB-1000-M, STH-WMP-BUSP-M, UNLIMITED_DOMAINS, 2CPU_100CT_PIM, ADDONVZ-HMP-W-M, DISABLE_SITEBUILDER, 8CPU_1CT, HSPHERE_2500_ACCOUNTS, STH-WMP-BUS-M, PLESK_POWER_PACK_FOR_WIN, 8CPU_30VC_PVA, 8CPU_150CT_PVA, HSPHERE_5000_ACCOUNTS, 4CPU_90CT_PIM, PLESK-UNLIMITED-PB-ACCOUNTS-FOR-VZ, ADDON-WPB-45000-M, PLESK_POWER_PACK_FOR_VZ, 8CPU_250CT_PVA, 1-LANGUAGE-PACK-FOR-PPA, UO-UNL-W-M, 2CPU_5VC_PVA, ADDON-WPB-15000-M, PLESK_RELOADED_POWER_PACK, ADDON-WPB-7500-M, PLESK-1000-SITES-FOR-VZ, 10_UNITY_MOBILE_SITES, 8CPU_70CT_PVA, UNLIMITED_MAILBOXES, STH-WMP-PRO-M, SB10X-45000, 8CPU_1HV_PVA, NEWSFEED_OFF, 4CPU_80CT_PIM, UO-1-W-1Y, 10000_SITES_MULTI_SERVER, 8CPU_UNLIMITEDHV_PVA, 2_BATTLEFIELD_SERVERS, CLNX-M, 8CPU_60CT_PVA, 100_SITES_MULTI_SERVER, 2CPU_UNLIMITEDVC_PVA, 2CPU_UNLIMITED_HV_PVA, 10_EXT_WHITELABEL, REINSTATE_SUS, ADDONVZ-HMP-L-M, UO-1-L-M, 8CPU_5CT_PVA, 4CPU_100CT_PIM, SB10X-1000, ADDON-WPB-5000-M, 2CPU_5CT_PIM, 10_EXT, 5_UNITY_MOBILE_SITES, 4CPU_200CT_PIM, ADDON-WPB-40000-M, ADDON-WPB-30000-M, 5-LANGUAGE-PACKS-FOR-PPA, 3-LANGUAGE-PACKS-FOR-PPA, PCS-RKU, ADDONVZ-CT-OAS-L-M, 2-LANGUAGE-PACKS-FOR-PPA, 3_LANGUAGE_PACKS_FOR_VZ, 2CPU_30CT_PIM, ENTERPRISE, 2CPU_50CT_PIM, ADDON-HMP-W-M, 2_LANGUAGE_PACKS_FOR_VZ, 4_LANGUAGE_PACKS_FOR_VMM, UO-UNL-L-M, SB10X-12500, 4CPU_50CT_PIM, ADDON-WPB-20000-M, HSPHERE_10000_ACCOUNTS, 4CPU_3CT_PIM, 3_LANGUAGE_PACKS, 8CPU_90CT_PVA, 5000_SITES, 100_SITES, PLESK_POWER_PACK, 8CPU_400CT_PVA, 500_EXT, 5000_SITES_MULTI_SERVER, 5_LANGUAGE_PACKS_FOR_VMM, UNLIMITED_BATTLEFIELD_SERVERS, ADDON-WPB-35000-M, PLESK-100-SITES-FOR-VMM, ADDON-WPB-50000-M, 8CPU_4HV_PVA, 8CPU_5HV_PVA, 2CPU_10HV_PVA, ADDON-WPB-300-M, 2CPU_2HV_PVA, 300_SITES_MULTI_SERVER, 10_DOMAINS_FOR_VZ, 1_LANGUAGE_PACK, 4CPU_10CT_PIM, ADDON-WPB-700-M, 2CPU_30VC_PVA, 2CPU_1HV_PVA, 5_USERS_FOR_VPS, 2CPU_10CT_PIM, 500_SITES_MULTI_SERVER, 300_DOMAINS, 10000_SITES, 8CPU_2HV_PVA, ADDON-WPB-10000-M, PLESK_POWER_PACK_FOR_WIN_FOR_VMM, PLESK-1000-SITES-FOR-VMM, 5_LANGUAGE_PACKS, 1_LANGUAGE_PACK_FOR_VZ, 2CPU_200CT_PIM, VIRTUOZZO_PROMO_OFF, SB10X-5000, 8CPU_7HV_PVA, 10_DOMAINS, PRO, 500_SITES, 2CPU_70CT_PIM, 1_BATTLEFIELD_SERVER, 2CPU_150CT_PIM, 2CPU_80CT_PIM, ADDONVMM-HMP-L-M, UNLIMITED_USERS, 4CPU_30CT_PIM, PLESK_POWER_PACK_FOR_WIN_FOR_VZ, 8CPU_300CT_PVA, 5_USERS, 4CPU_150CT_PIM, 10_BATTLEFIELD_SERVERS, ADDON-WPB-100-M, 8CPU_3HV_PVA, ADDON-WPB-2500-M, 5_LANGUAGE_PACKS_FOR_VZ, 5_BATTLEFIELD_SERVERS, DISABLE_GOOGLE_TOOLS, 500_EXT_WHITELABEL, UNLIMITED_DOMAINS_FOR_VZ, SB10X-15000, UNLIMITED_MAILBOXES_FOR_VZ, 2CPU_5HV_PVA, PLESK_7X_FOR_WIN_POWER_PACK, PLESK-1000-SITES, DISABLE_FEATURE_UPGRADES, SB10X-20000, ENTRY, 2CPU_6HV_PVA, 8CPU_30CT_PVA, UO-UNL-W-1Y, 2_LANGUAGE_PACKS, 8CPU_UNLIMITEDVC_PVA, 100_DOMAINS, 8CPU_20CT_PVA, 2CPU_3HV_PVA, ADD_1_MANAGED_MSSQL, 100_EXT, 100_EXTENSIONS_FOR_VZ, ADDON-WPB-500-M, 8CPU_3CT_PVA, 2CPU_9HV_PVA, 1_LANGUAGE_PACK_FOR_VMM, 8CPU_10CT_PVA, 2CPU_15HV_PVA, 2CPU_8HV_PVA, STARTER, ADDONVMM-HMP-W-M, 7500_SITES, 4CPU_40CT_PIM, SB10X-30000, PROFESSIONAL, 1000_SITES, 8CPU_350CT_PVA, 2CPU_60CT_PIM, HSPHERE_200_ACCOUNTS, 8CPU_500CT_PVA, SB10X-10000, STH-WMP-BSC-M, ADDON-WPB-25000-M.
934
		[keyTypes] => Array
935
		(
936
		[0] => GLOBAL_MENTORING_LIVE_EXPERT_STANDARD_CARE
937
		[1] => PSBM_45_SPE
938
		[2] => PLESK-10-AND-LATER-FOR-VMM
939
		[3] => PLESK_ANTIVIRUS_BY_KAV_FOR_WIN_FOR_VZ
940
		[4] => PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-L-M
941
		[5] => MYLITTLEADMIN_2000
942
		[6] => MYLITTLEADMIN_2005
943
		[7] => PLESK_ANTIVIRUS_BY_DRWEB_FOR_WIN
944
		[8] => CRT-5-UNL-L
945
		[9] => GLOBAL_MENTORING_TOTAL_CARE
946
		[10] => LINUXMAGIC_MAGICSPAM
947
		[11] => PLESK_ANTIVIRUS_BY_KAV_FOR_VZ
948
		[12] => PINNACLE_CART_ECOMMERCE_SHOPPING_CART
949
		[13] => SYMANTEC_NORTON_INTERNET_SECURITY_10SEATS_MONTHLY
950
		[14] => ATI_PRO_FOR_WIN
951
		[15] => STOPTHEHACKER-M
952
		[16] => PARALLELS_PREMIUM_ANTIVIRUS_FOR_WIN_FOR_VZ
953
		[17] => SB10X-PA
954
		[18] => ATI_PRO
955
		[19] => CRT-30-UNL-L
956
		[20] => 4PSA_VOIPNOW_25_PROFESSIONAL
957
		[21] => CLOUDLINUX-L-M
958
		[22] => ATMAIL_WEBMAIL
959
		[23] => PLESK_10_AND_LATER_FOR_WIN
960
		[24] => CRT-5-100-L
961
		[25] => PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-FOR-VZ-L-1Y
962
		[26] => UNITY-ONE-W-M
963
		[27] => PLESK-10-AND-LATER-FOR-WIN-FOR-VMM
964
		[28] => GLOBAL_MENTORING_LIVE_EXPERT_BASIC
965
		[29] => CRT-50-UNL-L
966
		[30] => VIRTUOZZO_CONTAINERS_4
967
		[31] => PARALLELS_PREMIUM_ANTIVIRUS_FOR_VZ
968
		[32] => PLESK_10_AND_LATER_FOR_VZ
969
		[33] => PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-FOR-VZ-L-M
970
		[34] => CRT-50-100-L
971
		[35] => UNITY-ONE-L-M
972
		[36] => PLESK_ANTIVIRUS_BY_DRWEB
973
		[37] => SYMANTEC_NORTON_INTERNET_SECURITY_MONTHLY
974
		[38] => CRT-100-UNL-L
975
		[39] => PARALLELS-CLOUD-SERVER
976
		[40] => PARALLELS-PREMIUM-OUTBOUND-ANTISPAM-L-1Y
977
		[41] => CRT-100-100-L
978
		[42] => PLESK_10_AND_LATER_FOR_WIN_FOR_VZ
979
		[43] => PPA-L-M
980
		[44] => PARALLELS_PREMIUM_ANTIVIRUS_FOR_WIN
981
		[45] => PARALLELS-PREMIUM-ANTIVIRUS-FOR-VMM
982
		[46] => PLESK_ANTIVIRUS_BY_KAV_FOR_WIN
983
		[47] => PLESK_ANTIVIRUS_BY_DRWEB_FOR_VZ
984
		[48] => SYMANTEC_NORTON_INTERNET_SECURITY_5SEATS_MONTHLY
985
		[49] => UNITY_MOBILE
986
		[50] => PLESK_ANTIVIRUS_BY_DRWEB_FOR_WIN_FOR_VZ
987
		[51] => SB10X
988
		[52] => UNITY_MOBILE_FOR_WIN
989
		[53] => PARALLELS-CLOUD-STORAGE
990
		[54] => CRT-30-100-L
991
		[55] => CLOUDFLARE-M
992
		[56] => VIRTUOZZO_CONTAINERS_4_FOR_WIN
993
		[57] => PLESK_10_AND_LATER
994
		[58] => PARALLELS_PREMIUM_ANTIVIRUS
995
		[59] => SYMANTEC_NORTON_INTERNET_SECURITY_3SEATS_MONTHLY
996
		[60] => PLESK_ANTIVIRUS_BY_KAV
997
		[61] => KEEPIT_ONLINE_BACKUP
998
		)
999
1000
		)
1001
		*/
1002
	}
1003
1004
}
1005