serviceAddon.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. /**
  3. * Service Addon Provisioning Module
  4. *
  5. * sending product independent mails
  6. *
  7. * @copyright Copyright (c) Thurdata GmbH 2020
  8. * @license GPL
  9. */
  10. if (!defined("WHMCS")) {
  11. die("This file cannot be accessed directly");
  12. }
  13. use WHMCS\Database\Capsule;
  14. function serviceAddon_CreateAccount(array $params) {
  15. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  16. if($emailTemplates[0] != 'none') {
  17. return $emailTemplates[0];
  18. }
  19. if($params['name'] == '') {
  20. $serviceCode = bin2hex(random_bytes(3));
  21. try {
  22. Capsule::table('tblhostingaddons')
  23. ->where('id', '=', $params['addonId'])
  24. ->update(
  25. array(
  26. 'name' => $serviceCode,
  27. )
  28. );
  29. } catch (\Exception $e) {
  30. logModuleCall(
  31. 'serviceAddon',
  32. __FUNCTION__,
  33. $params,
  34. 'Error: could save servcieCode in database',
  35. $e->getMessage()
  36. );
  37. return 'Error: could save servcieCode in database';
  38. }
  39. } else {
  40. $serviceCode = $params['name'];
  41. }
  42. if($params['Create_Mail'] > 0) {
  43. return serviceAddonSendEmail($emailTemplates[$params['Create_Mail']], $params['serviceid'], $serviceCode);
  44. }
  45. return 'success';
  46. }
  47. function serviceAddon_SuspendAccount(array $params) {
  48. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  49. if($emailTemplates[0] != 'none') {
  50. return $emailTemplates[0];
  51. }
  52. if($params['Suspend_Mail'] > 0) {
  53. return serviceAddonSendEmail($emailTemplates[$params['Suspend_Mail']], $params['serviceid'], $params['name']);
  54. }
  55. return 'success';
  56. }
  57. function serviceAddon_UnsuspendAccount(array $params) {
  58. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  59. if($emailTemplates[0] != 'none') {
  60. return $emailTemplates[0];
  61. }
  62. if($params['Unsuspend_Mail'] > 0) {
  63. return serviceAddonSendEmail($emailTemplates[$params['Unsuspend_Mail']], $params['serviceid'], $params['name']);
  64. }
  65. return 'success';
  66. }
  67. function serviceAddon_TerminateAccount(array $params) {
  68. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  69. if($emailTemplates[0] != 'none') {
  70. return $emailTemplates[0];
  71. }
  72. if($params['Terminate_Mail'] > 0) {
  73. return serviceAddonSendEmail($emailTemplates[$params['Terminate_Mail']], $params['serviceid'], $params['name']);
  74. }
  75. return 'success';
  76. }
  77. function serviceAddon_ChangePackage(array $params) {
  78. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  79. if($emailTemplates[0] != 'none') {
  80. return $emailTemplates[0];
  81. }
  82. if($params['ChangePackage_Mail'] > 0) {
  83. return serviceAddonSendEmail($emailTemplates[$params['ChangePackage_Mail']], $params['serviceid'], $params['name']);
  84. }
  85. return 'success';
  86. }
  87. function serviceAddon_TestConnection(array $params) {
  88. return 'success';
  89. }
  90. function serviceAddon_UsageUpdate(array $params) {
  91. return 'success';
  92. }
  93. function serviceAddon_ConfigOptions(array $params) {
  94. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  95. if($emailTemplates[0] != 'none') {
  96. return array(
  97. "error" => [
  98. "Type" => "text",
  99. "Default" => $emailTemplates[0],
  100. ]
  101. );
  102. }
  103. $configOptions = array(
  104. "Create_Mail" => [
  105. "Type" => "dropdown",
  106. "Options" => $emailTemplates,
  107. "Description" => "E-Mail Template auswählen",
  108. "Default" => "option1"
  109. ],
  110. "Suspend_Mail" => [
  111. "Type" => "dropdown",
  112. "Options" => $emailTemplates,
  113. "Description" => "E-Mail Template auswählen",
  114. "Default" => "option1"
  115. ],
  116. "Unsuspend_Mail" => [
  117. "Type" => "dropdown",
  118. "Options" => $emailTemplates,
  119. "Description" => "E-Mail Template auswählen",
  120. "Default" => "option1"
  121. ],
  122. "ChangePackage_Mail" => [
  123. "Type" => "dropdown",
  124. "Options" => $emailTemplates,
  125. "Description" => "E-Mail Template auswählen",
  126. "Default" => "option1"
  127. ],
  128. "Terminate_Mail" => [
  129. "Type" => "dropdown",
  130. "Options" => $emailTemplates,
  131. "Description" => "E-Mail Template auswählen",
  132. "Default" => "option1"
  133. ],
  134. );
  135. return $configOptions;
  136. }
  137. function serviceAddon_MetaData() {
  138. }
  139. function serviceAddon_AdminCustomButtonArray($params) {
  140. }
  141. function serviceAddon_AdminServicesTabFields($params) {
  142. }
  143. function serviceAddon_ClientArea($params) {
  144. }
  145. function serviceAddonGetEmailTemplatesArray() {
  146. $emailTemplates = array('none');
  147. $response = localAPI('GetEmailTemplates');
  148. if($response['result'] == 'success') {
  149. foreach ($response['emailtemplates']['emailtemplate'] as $emailTemplate) {
  150. if ($emailTemplate['custom'] == 1) {
  151. $emailTemplates[$emailTemplate['id']] = $emailTemplate['name'];
  152. }
  153. }
  154. } else {
  155. $emailTemplates[0] = $response['message'];
  156. }
  157. return $emailTemplates;
  158. }
  159. function serviceAddonSendEmail($templateName,$serviceId, $serviceCode) {
  160. $result = localAPI('SendEmail', ['messagename' => $templateName, 'id' => $serviceId, 'customvars' => ['servicecode' => $serviceCode]]);
  161. if ($result['result'] == 'success') {
  162. return 'success';
  163. } else {
  164. return $result['message'];
  165. }
  166. };