serviceAddon.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <?php
  2. /**
  3. * Service Addon Provisioning Module
  4. *
  5. * sending product independent mails
  6. *
  7. * Addon Name = $params['model']->productAddon->name
  8. * Addon Description = $params['model']->productAddon->description
  9. *
  10. * @copyright Copyright (c) Thurdata GmbH 2020
  11. * @license GPL
  12. */
  13. if (!defined("WHMCS")) {
  14. die("This file cannot be accessed directly");
  15. }
  16. function serviceAddon_CreateAccount(array $params) {
  17. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  18. if($emailTemplates[0] != 'none') {
  19. return $emailTemplates[0];
  20. }
  21. if(empty($params['model']->subscriptionid)) {
  22. $params['model']->subscriptionid = strtoupper(bin2hex(random_bytes(3)));
  23. $params['model']->save();
  24. }
  25. if($params['Create_Mail'] > 0) {
  26. return serviceAddonSendEmail(
  27. $emailTemplates[
  28. $params['Create_Mail']
  29. ],
  30. $params['serviceid'],
  31. $params['model']->subscriptionid,
  32. $params['model']->productAddon->name,
  33. $params['model']->qty
  34. );
  35. }
  36. return 'success';
  37. }
  38. function serviceAddon_SuspendAccount(array $params) {
  39. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  40. if($emailTemplates[0] != 'none') {
  41. return $emailTemplates[0];
  42. }
  43. if($params['Suspend_Mail'] > 0) {
  44. return serviceAddonSendEmail(
  45. $emailTemplates[
  46. $params['Suspend_Mail']
  47. ],
  48. $params['serviceid'],
  49. $params['model']->subscriptionid,
  50. $params['model']->productAddon->name,
  51. $params['model']->qty
  52. );
  53. }
  54. return 'success';
  55. }
  56. function serviceAddon_UnsuspendAccount(array $params) {
  57. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  58. if($emailTemplates[0] != 'none') {
  59. return $emailTemplates[0];
  60. }
  61. if($params['Unsuspend_Mail'] > 0) {
  62. return serviceAddonSendEmail(
  63. $emailTemplates[
  64. $params['Unsuspend_Mail']
  65. ],
  66. $params['serviceid'],
  67. $params['model']->subscriptionid,
  68. $params['model']->productAddon->name,
  69. $params['model']->qty
  70. );
  71. }
  72. return 'success';
  73. }
  74. function serviceAddon_TerminateAccount(array $params) {
  75. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  76. if($emailTemplates[0] != 'none') {
  77. return $emailTemplates[0];
  78. }
  79. if($params['Terminate_Mail'] > 0) {
  80. return serviceAddonSendEmail(
  81. $emailTemplates[
  82. $params['Terminate_Mail']
  83. ],
  84. $params['serviceid'],
  85. $params['model']->subscriptionid,
  86. $params['model']->productAddon->name,
  87. $params['model']->qty
  88. );
  89. }
  90. return 'success';
  91. }
  92. function serviceAddon_ChangePackage(array $params) {
  93. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  94. if($emailTemplates[0] != 'none') {
  95. return $emailTemplates[0];
  96. }
  97. if($params['ChangePackage_Mail'] > 0) {
  98. return serviceAddonSendEmail(
  99. $emailTemplates[
  100. $params['ChangePackage_Mail']
  101. ],
  102. $params['serviceid'],
  103. $params['model']->subscriptionid,
  104. $params['model']->productAddon->name,
  105. $params['model']->qty
  106. );
  107. }
  108. return 'success';
  109. }
  110. function serviceAddon_TestConnection(array $params) {
  111. return 'success';
  112. }
  113. function serviceAddon_UsageUpdate(array $params) {
  114. return 'success';
  115. }
  116. function serviceAddon_ConfigOptions(array $params) {
  117. $emailTemplates = serviceAddonGetEmailTemplatesArray();
  118. if($emailTemplates[0] != 'none') {
  119. return array(
  120. "error" => [
  121. "Type" => "text",
  122. "Default" => $emailTemplates[0],
  123. ]
  124. );
  125. }
  126. $configOptions = array(
  127. "Create_Mail" => [
  128. "Type" => "dropdown",
  129. "Options" => $emailTemplates,
  130. "Description" => "E-Mail Template auswählen",
  131. "Default" => "option1"
  132. ],
  133. "Suspend_Mail" => [
  134. "Type" => "dropdown",
  135. "Options" => $emailTemplates,
  136. "Description" => "E-Mail Template auswählen",
  137. "Default" => "option1"
  138. ],
  139. "Unsuspend_Mail" => [
  140. "Type" => "dropdown",
  141. "Options" => $emailTemplates,
  142. "Description" => "E-Mail Template auswählen",
  143. "Default" => "option1"
  144. ],
  145. "ChangePackage_Mail" => [
  146. "Type" => "dropdown",
  147. "Options" => $emailTemplates,
  148. "Description" => "E-Mail Template auswählen",
  149. "Default" => "option1"
  150. ],
  151. "Terminate_Mail" => [
  152. "Type" => "dropdown",
  153. "Options" => $emailTemplates,
  154. "Description" => "E-Mail Template auswählen",
  155. "Default" => "option1"
  156. ],
  157. );
  158. return $configOptions;
  159. }
  160. function serviceAddon_MetaData() {
  161. }
  162. function serviceAddon_AdminCustomButtonArray($params) {
  163. }
  164. function serviceAddon_AdminServicesTabFields($params) {
  165. }
  166. function serviceAddon_ClientArea($params) {
  167. return array(
  168. 'vars' => [
  169. 'subscriptionid' => $params['model']->subscriptionid
  170. ],
  171. );
  172. }
  173. function serviceAddonGetEmailTemplatesArray() {
  174. $emailTemplates = array('none');
  175. $response = localAPI('GetEmailTemplates');
  176. if($response['result'] == 'success') {
  177. foreach ($response['emailtemplates']['emailtemplate'] as $emailTemplate) {
  178. if ($emailTemplate['custom'] == 1) {
  179. $emailTemplates[$emailTemplate['id']] = $emailTemplate['name'];
  180. }
  181. }
  182. } else {
  183. $emailTemplates[0] = $response['message'];
  184. }
  185. return $emailTemplates;
  186. }
  187. function serviceAddonSendEmail($templateName,$serviceId, $serviceCode, $serviceName, $serviceQty) {
  188. $result = localAPI(
  189. 'SendEmail',[
  190. 'messagename' => $templateName,
  191. 'id' => $serviceId,
  192. 'customvars' => [
  193. 'servicecode' => $serviceCode,
  194. 'servicename' => $serviceName,
  195. 'serviceqty' => $serviceQty
  196. ]
  197. ]
  198. );
  199. if ($result['result'] == 'success') {
  200. return 'success';
  201. } else {
  202. return $result['message'];
  203. }
  204. };