UsageUpdate.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace ModulesGarden\Servers\KerioEmail\App\Http\Actions;
  3. use ModulesGarden\Servers\KerioEmail\App\Helpers\KerioManager;
  4. use ModulesGarden\Servers\KerioEmail\Core\App\Controllers\Instances\AddonController;
  5. use ModulesGarden\Servers\KerioEmail\Core\Models\Whmcs;
  6. class UsageUpdate extends AddonController
  7. {
  8. protected $moduleParams;
  9. public function execute($params = null)
  10. {
  11. $this->moduleParams = $params;
  12. $domains =(new KerioManager())
  13. ->getApiByServer($this->moduleParams['serverid'])
  14. ->soap
  15. ->repository()
  16. ->domains()
  17. ->getAll();
  18. foreach ($domains as $domain)
  19. {
  20. try
  21. {
  22. $domainName = $domain->getName();
  23. $usage = $this->getDomainUsage($domainName);
  24. $mailboxes = $usage['mailboxes'];
  25. $storage = $usage['usage'];
  26. $storage = $storage == 0 ? 0 : round($storage/1024/1024);
  27. $serverId =$params['serverid'];
  28. Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['bwusage' => $mailboxes]);
  29. Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['diskusage' => $storage]);
  30. usleep(5000);
  31. }
  32. catch (\Exception $ex)
  33. {
  34. }
  35. }
  36. }
  37. private function getDomainUsage($tenant)
  38. {
  39. $client = (new KerioManager())
  40. ->getApiByServer($this->moduleParams['serverid'])
  41. ->soap
  42. ->repository()
  43. ->accounts;
  44. $accounts = $client->getUsages($tenant);
  45. $mailboxes = count($client->getMailboxes($tenant));
  46. $totalUsage = 0;
  47. foreach ($accounts as $account)
  48. {
  49. $usage = $account->getUsed();
  50. $totalUsage += $usage;
  51. }
  52. return array('usage' => $totalUsage, 'mailboxes' => $mailboxes);
  53. }
  54. }