|
|
@@ -7,30 +7,50 @@ namespace ThurData\Servers\KerioEmail\App\Http\Actions;
|
|
|
use ThurData\Servers\KerioEmail\App\Helpers\KerioManager;
|
|
|
use ThurData\Servers\KerioEmail\Core\App\Controllers\Instances\AddonController;
|
|
|
use ThurData\Servers\KerioEmail\Core\Models\Whmcs;
|
|
|
+use ThurData\Servers\KerioEmail\Api\KerioWhmcs;
|
|
|
|
|
|
class UsageUpdate extends AddonController
|
|
|
{
|
|
|
- protected $moduleParams;
|
|
|
-
|
|
|
public function execute($params = null)
|
|
|
{
|
|
|
- $this->moduleParams = $params;
|
|
|
+ $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
|
|
|
+
|
|
|
+ try {
|
|
|
+ $api->login($params['serverhostname'], $params['serverusername'], $params['serverpassword']);
|
|
|
+ $domains = $api->getDomains(['id','name']);
|
|
|
+ } catch (KerioApiException $error) {
|
|
|
+ logModuleCall(
|
|
|
+ 'kerioEmail',
|
|
|
+ __FUNCTION__,
|
|
|
+ $error,
|
|
|
+ 'Debug Error',
|
|
|
+ $error->getMessage()
|
|
|
+ );
|
|
|
+ return ['error' => $error->getMessage()];
|
|
|
+ }
|
|
|
|
|
|
- $domains =(new KerioManager())
|
|
|
- ->getApiByServer($this->moduleParams['serverid'])
|
|
|
- ->soap
|
|
|
- ->repository()
|
|
|
- ->domains()
|
|
|
- ->getAll();
|
|
|
foreach ($domains as $domain)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- $domainName = $domain->getName();
|
|
|
- $usage = $this->getDomainUsage($domainName);
|
|
|
- $mailboxes = $usage['mailboxes'];
|
|
|
- $storage = $usage['usage'];
|
|
|
- $storage = $storage == 0 ? 0 : round($storage/1024/1024);
|
|
|
+ $domainName = $domain['name'];
|
|
|
+ $domainID = $domain['id'];
|
|
|
+ $fields = array(
|
|
|
+ 'loginName',
|
|
|
+ 'fullName',
|
|
|
+ 'consumedSize'
|
|
|
+ );
|
|
|
+ $users = $api->getUsers($fields,$domainID);
|
|
|
+ $mailboxes = $users['totalItems'];
|
|
|
+ $totalUsage = 0;
|
|
|
+ if ($users['totalItems'] > 0) {
|
|
|
+ foreach ($users['list'] as $user) {
|
|
|
+ $usage = $user['consumedSize']['value'];
|
|
|
+ $totalUsage += $usage;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $storage = $totalUsage == 0 ? 0 : round($totalUsage/1024/1024);
|
|
|
$serverId =$params['serverid'];
|
|
|
|
|
|
Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['bwusage' => $mailboxes]);
|
|
|
@@ -45,23 +65,4 @@ class UsageUpdate extends AddonController
|
|
|
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- private function getDomainUsage($tenant)
|
|
|
- {
|
|
|
- $client = (new KerioManager())
|
|
|
- ->getApiByServer($this->moduleParams['serverid'])
|
|
|
- ->soap
|
|
|
- ->repository()
|
|
|
- ->accounts;
|
|
|
- $accounts = $client->getUsages($tenant);
|
|
|
- $mailboxes = count($client->getMailboxes($tenant));
|
|
|
- $totalUsage = 0;
|
|
|
- foreach ($accounts as $account)
|
|
|
- {
|
|
|
- $usage = $account->getUsed();
|
|
|
- $totalUsage += $usage;
|
|
|
- }
|
|
|
-
|
|
|
- return array('usage' => $totalUsage, 'mailboxes' => $mailboxes);
|
|
|
- }
|
|
|
}
|