UsageUpdate.php 3.1 KB

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