3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
17 class CRM_SMS_BAO_Provider
extends CRM_SMS_DAO_Provider
{
22 public function __construct() {
23 parent
::__construct();
29 public static function activeProviderCount() {
30 $activeProviders = CRM_Core_DAO
::singleValueQuery('SELECT count(id) FROM civicrm_sms_provider WHERE is_active = 1 AND (domain_id = %1 OR domain_id IS NULL)',
31 [1 => [CRM_Core_Config
::domainID(), 'Positive']]);
32 return $activeProviders;
36 * Retrieves the list of providers from the database.
38 * $selectArr array of coloumns to fetch
39 * $getActive boolean to get active providers
41 * @param null $selectArr
43 * @param bool $getActive
44 * @param string $orderBy
48 public static function getProviders($selectArr = NULL, $filter = NULL, $getActive = TRUE, $orderBy = 'id') {
52 $dao = new CRM_SMS_DAO_Provider();
53 if ($filter && !array_key_exists('is_active', $filter) && $getActive) {
56 if ($filter && is_array($filter)) {
57 foreach ($filter as $key => $value) {
61 if ($selectArr && is_array($selectArr)) {
62 $select = implode(',', $selectArr);
63 $dao->selectAdd($select);
65 $dao->whereAdd("(domain_id = " . CRM_Core_Config
::domainID() . " OR domain_id IS NULL)");
66 $dao->orderBy($orderBy);
68 while ($dao->fetch()) {
69 CRM_Core_DAO
::storeValues($dao, $temp);
70 $providers[$dao->id
] = $temp;
76 * Create or Update an SMS provider
77 * @param array $params
78 * @return array saved values
80 public static function create(&$params) {
81 $id = $params['id'] ??
NULL;
84 CRM_Utils_Hook
::pre('edit', 'SmsProvider', $id, $params);
87 CRM_Utils_Hook
::pre('create', 'SmsProvider', NULL, $params);
90 $provider = new CRM_SMS_DAO_Provider();
93 $provider->find(TRUE);
96 $provider->domain_id
= CRM_Utils_Array
::value('domain_id', $params, $provider->domain_id
);
99 $provider->domain_id
= CRM_Utils_Array
::value('domain_id', $params, CRM_Core_Config
::domainID());
101 $provider->copyValues($params);
102 $result = $provider->save();
104 CRM_Utils_Hook
::post('edit', 'SmsProvider', $provider->id
, $provider);
107 CRM_Utils_Hook
::post('create', 'SmsProvider', NULL, $provider);
118 public static function setIsActive($id, $is_active) {
119 return CRM_Core_DAO
::setFieldValue('CRM_SMS_DAO_Provider', $id, 'is_active', $is_active);
123 * @param int $providerID
126 * @throws CRM_Core_Exception
128 public static function del($providerID) {
130 throw new CRM_Core_Exception(ts('Invalid value passed to delete function.'));
133 $dao = new CRM_SMS_DAO_Provider();
134 $dao->id
= $providerID;
135 $dao->whereAdd
= "(domain_id = " . CRM_Core_Config
::domainID() . "OR domain_id IS NULL)";
136 if (!$dao->find(TRUE)) {
143 * @param int $providerID
144 * @param null $returnParam
145 * @param null $returnDefaultString
149 public static function getProviderInfo($providerID, $returnParam = NULL, $returnDefaultString = NULL) {
150 static $providerInfo = [];
152 if (!array_key_exists($providerID, $providerInfo)) {
153 $providerInfo[$providerID] = [];
155 $dao = new CRM_SMS_DAO_Provider();
156 $dao->id
= $providerID;
157 if ($dao->find(TRUE)) {
158 CRM_Core_DAO
::storeValues($dao, $providerInfo[$providerID]);
159 $inputLines = explode("\n", $providerInfo[$providerID]['api_params']);
161 foreach ($inputLines as $value) {
163 list($key, $val) = explode("=", $value);
164 $inputVals[trim($key)] = trim($val);
167 $providerInfo[$providerID]['api_params'] = $inputVals;
169 // Replace the api_type ID with the string value
170 $apiTypes = CRM_Core_OptionGroup
::values('sms_api_type');
171 $apiTypeId = $providerInfo[$providerID]['api_type'];
172 $providerInfo[$providerID]['api_type'] = CRM_Utils_Array
::value($apiTypeId, $apiTypes, $apiTypeId);
177 return CRM_Utils_Array
::value($returnParam, $providerInfo[$providerID], $returnDefaultString);
179 return $providerInfo[$providerID];