UsageUpdate.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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/1024;
  44. break;
  45. case 'KiloBytes' :
  46. $usage = $user['consumedSize']['value']/1024/1024;
  47. break;
  48. case 'MegaBytes' :
  49. $usage = $user['consumedSize']['value']/1024;
  50. break;
  51. case 'GigaBytes' :
  52. $usage = $user['consumedSize']['value'];
  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. logModuleCall(
  63. 'kerioEmail',
  64. __FUNCTION__,
  65. $mailboxes,
  66. 'Debug UsageUpdate',
  67. $storage
  68. );
  69. usleep(5000);
  70. }
  71. catch (\Exception $ex)
  72. {
  73. }
  74. }
  75. }
  76. }