Skip to content

Commit f45ef4d

Browse files
Merge pull request #19 from vbaranovskiy-plesk/master
Add permissions node to reseller's get operations
2 parents 5147f35 + 7968718 commit f45ef4d

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

src/PleskX/Api/Operator/Reseller.php

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,39 @@ public function delete($field, $value)
4242
*/
4343
public function get($field, $value)
4444
{
45-
$items = $this->_getItems(Struct\GeneralInfo::class, 'gen-info', $field, $value);
45+
$items = $this->getAll($field, $value);
4646
return reset($items);
4747
}
4848

4949
/**
50+
* @param string $field
51+
* @param integer|string $value
5052
* @return Struct\GeneralInfo[]
5153
*/
52-
public function getAll()
54+
public function getAll($field = null, $value = null)
5355
{
54-
return $this->_getItems(Struct\GeneralInfo::class, 'gen-info');
56+
$packet = $this->_client->getPacket();
57+
$getTag = $packet->addChild($this->_wrapperTag)->addChild('get');
58+
59+
$filterTag = $getTag->addChild('filter');
60+
if (!is_null($field)) {
61+
$filterTag->addChild($field, $value);
62+
}
63+
64+
$datasetTag = $getTag->addChild('dataset');
65+
$datasetTag->addChild('gen-info');
66+
$datasetTag->addChild('permissions');
67+
68+
$response = $this->_client->request($packet, \PleskX\Api\Client::RESPONSE_FULL);
69+
70+
$items = [];
71+
foreach ($response->xpath('//result') as $xmlResult) {
72+
$item = new Struct\GeneralInfo($xmlResult->data);
73+
$item->id = (int)$xmlResult->id;
74+
$items[] = $item;
75+
}
76+
77+
return $items;
5578
}
5679

5780

src/PleskX/Api/Struct/Reseller/GeneralInfo.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,28 @@
55

66
class GeneralInfo extends \PleskX\Api\Struct
77
{
8+
/** @var int */
9+
public $id;
10+
811
/** @var string */
912
public $personalName;
1013

1114
/** @var string */
1215
public $login;
1316

17+
/** @var array */
18+
public $permissions;
19+
1420
public function __construct($apiResponse)
1521
{
16-
$this->_initScalarProperties($apiResponse, [
22+
$this->_initScalarProperties($apiResponse->{'gen-info'}, [
1723
['pname' => 'personalName'],
1824
'login',
1925
]);
26+
27+
$this->permissions = [];
28+
foreach ($apiResponse->permissions->permission as $permissionInfo) {
29+
$this->permissions[(string)$permissionInfo->name] = (string)$permissionInfo->value;
30+
}
2031
}
21-
}
32+
}

tests/ResellerTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public function testGet()
3232
$resellerInfo = static::$_client->reseller()->get('id', $reseller->id);
3333
$this->assertEquals('John Reseller', $resellerInfo->personalName);
3434
$this->assertEquals('reseller-unit-test', $resellerInfo->login);
35+
$this->assertGreaterThan(0, count($resellerInfo->permissions));
3536

3637
static::$_client->reseller()->delete('id', $reseller->id);
3738
}

0 commit comments

Comments
 (0)