UsageUpdate.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\Http\Actions;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Helpers\ZimbraManager;
  4. use ModulesGarden\Servers\ZimbraEmail\Core\App\Controllers\Instances\AddonController;
  5. use ModulesGarden\Servers\ZimbraEmail\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 ZimbraManager())
  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. $storage = $this->getDomainUsage($domainName);
  24. $storage = $storage == 0 ? 0 : round($storage/1024/1024);
  25. $serverId =$params['serverid'];
  26. Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['diskusage' => $storage]);
  27. usleep(5000);
  28. }
  29. catch (\Exception $ex)
  30. {
  31. }
  32. }
  33. }
  34. private function getDomainUsage($tenant)
  35. {
  36. $accounts =(new ZimbraManager())
  37. ->getApiByServer($this->moduleParams['serverid'])
  38. ->soap
  39. ->repository()
  40. ->accounts
  41. ->getUsages($tenant);
  42. $totalUsage = 0;
  43. foreach ($accounts as $account)
  44. {
  45. $usage = $account->getUsed();
  46. $totalUsage += $usage;
  47. }
  48. return $totalUsage;
  49. }
  50. }