UsageUpdate.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\App\Http\Actions;
  3. use ThurData\Servers\KerioEmail\App\Helpers\KerioManager;
  4. use ThurData\Servers\KerioEmail\Core\App\Controllers\Instances\AddonController;
  5. use ThurData\Servers\KerioEmail\Core\Models\Whmcs;
  6. use ThurData\Servers\KerioEmail\Api\KerioWhmcs;
  7. class UsageUpdate extends AddonController
  8. {
  9. public function execute($params = null)
  10. {
  11. $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
  12. try {
  13. $api->login($params['serverhostname'], $params['serverusername'], $params['serverpassword']);
  14. $domains = $api->getDomains(['id','name']);
  15. } catch (KerioApiException $error) {
  16. logModuleCall(
  17. 'kerioEmail',
  18. __FUNCTION__,
  19. $error,
  20. 'Debug Error',
  21. $error->getMessage()
  22. );
  23. return ['error' => $error->getMessage()];
  24. }
  25. foreach ($domains as $domain)
  26. {
  27. try
  28. {
  29. $domainName = $domain['name'];
  30. $domainID = $domain['id'];
  31. $fields = array(
  32. 'loginName',
  33. 'fullName',
  34. 'consumedSize'
  35. );
  36. $users = $api->getUsers($fields,$domainID);
  37. $mailboxes = count($users);
  38. $totalUsage = 0;
  39. if ($mailboxes > 0) {
  40. foreach ($users as $user) {
  41. switch($user['consumedSize']['units']) {
  42. case 'Bytes' :
  43. $usage = $user['consumedSize']['value']/1024/1024;
  44. break;
  45. case 'KiloBytes' :
  46. $usage = $user['consumedSize']['value']/1024;
  47. break;
  48. case 'MegaBytes' :
  49. $usage = $user['consumedSize']['value'];
  50. break;
  51. case 'GigaBytes' :
  52. $usage = $user['consumedSize']['value']*1024;
  53. break;
  54. }
  55. $totalUsage += $usage;
  56. }
  57. }
  58. $storage = $totalUsage == 0 ? 0 : round($totalUsage);
  59. $serverId = $params['serverid'];
  60. Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['bwusage' => $mailboxes]);
  61. Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['diskusage' => $storage]);
  62. usleep(5000);
  63. }
  64. catch (\Exception $ex)
  65. {
  66. }
  67. }
  68. }
  69. }