-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathamazonsns.php
executable file
·87 lines (73 loc) · 2.63 KB
/
amazonsns.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
require_once __DIR__ . '/vendor/autoload.php';
require_once 'amazonsns.civix.php';
/**
* Implements hook_civicrm_config().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_config
*/
function amazonsns_civicrm_config(&$config) {
_amazonsns_civix_civicrm_config($config);
}
/**
* Implements hook_civicrm_install().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_install
*/
function amazonsns_civicrm_install() {
_amazonsns_civix_civicrm_install();
}
/**
* Implements hook_civicrm_enable().
*
* @link http://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_enable
*/
function amazonsns_civicrm_enable() {
_amazonsns_civix_civicrm_enable();
}
/**
* Implements hook_civicrm_buildForm, to add SMS Type field required by Amazon
* SNS, and to check if phone numbers being used on a batch SMS sending job are
* valid E.164 numbers.
*
* @param string $formName
* @param object $form
*/
function amazonsns_civicrm_buildForm($formName, &$form) {
// Add SMS Type Field
if ($formName == 'CRM_Contact_Form_Task_SMS' || $formName == 'CRM_SMS_Form_Upload') {
$amazonSMSTypes = array('Promotional' => ts('Promotional'), 'Transactional' => ts('Transactional'));
$form->add('select', 'sms_type', ts('SMS Type'), $amazonSMSTypes, TRUE);
$templatePath = realpath(dirname(__FILE__)."/templates");
$template = ($formName == 'CRM_Contact_Form_Task_SMS' ? 'SMSTypeField.tpl' : 'BatchSMSTypeField.tpl');
CRM_Core_Region::instance('page-body')->add(array(
'template' => "{$templatePath}/CRM/Amazonsns/$template"
));
}
// Find Invalid Phones on Batch SMS Sending
if ($formName == 'CRM_SMS_Form_Upload') {
$invalidPhonesCount = CRM_Amazonsns_SMS_PhoneValidator::countMailingInvalidPhones($form->_mailingID);
if ($invalidPhonesCount > 0) {
$invalidPhones = CRM_Amazonsns_SMS_PhoneValidator::getMailingInvalidPhonesSample($form->_mailingID);
$form->assign('invalidPhonesCount', $invalidPhonesCount);
$form->assign('invalidPhones', $invalidPhones);
}
}
}
/**
* Implements hook_civicrm_postProcess, to store SMS Type field selected for a
* batch SMS mailing job as a template option, so it may be available when the
* actual SMS sending operation is executed.
*
* @param string $formName
* @param object $form
*/
function amazonsns_civicrm_postProcess($formName, &$form) {
if ($formName == 'CRM_SMS_Form_Upload') {
$smsType = CRM_Utils_Request::retrieve('sms_type', 'String') ?: 'Promotional';
civicrm_api3('Mailing', 'create', array(
'id' => $form->_mailingID,
'template_options' => array('sms_type' => $smsType),
));
}
}