UsageUpdate.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. logModuleCall(
  12. 'kerioEmail',
  13. __FUNCTION__,
  14. $params,
  15. 'Debug Usage',
  16. $api
  17. );
  18. $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
  19. try {
  20. $api->login($params['serverhostname'], $params['serverusername'], $params['serverpassword']);
  21. $domains = $api->getDomains(['id','name']);
  22. } catch (KerioApiException $error) {
  23. logModuleCall(
  24. 'kerioEmail',
  25. __FUNCTION__,
  26. $error,
  27. 'Debug Error',
  28. $error->getMessage()
  29. );
  30. return ['error' => $error->getMessage()];
  31. }
  32. foreach ($domains as $domain)
  33. {
  34. try
  35. {
  36. $domainName = $domain['name'];
  37. $domainID = $domain['id'];
  38. $fields = array(
  39. 'loginName',
  40. 'fullName',
  41. 'consumedSize'
  42. );
  43. $users = $api->getUsers($fields,$domainID);
  44. $mailboxes = count($users);
  45. $totalUsage = 0;
  46. if ($mailboxes > 0) {
  47. foreach ($users as $user) {
  48. switch($user['consumedSize']['units']) {
  49. case 'Bytes' :
  50. $usage = $user['consumedSize']['value']/1024/1024;
  51. break;
  52. case 'KiloBytes' :
  53. $usage = $user['consumedSize']['value']/1024;
  54. break;
  55. case 'MegaBytes' :
  56. $usage = $user['consumedSize']['value'];
  57. break;
  58. case 'GigaBytes' :
  59. $usage = $user['consumedSize']['value']*1024;
  60. break;
  61. }
  62. $totalUsage += $usage;
  63. }
  64. }
  65. $storage = $totalUsage == 0 ? 0 : round($totalUsage);
  66. $serverId = $params['serverid'];
  67. Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['bwusage' => $mailboxes]);
  68. Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['diskusage' => $storage]);
  69. usleep(5000);
  70. }
  71. catch (\Exception $ex)
  72. {
  73. }
  74. }
  75. }
  76. }