Merge commit '1ebbf8bfc16f4' into 4.5-missing-prs
[civicrm-core.git] / CRM / Admin / Form / ScheduleReminders.php
index 9f81d2e847e9c2e41cd60f9a6f795af899e766fd..154079b8fdec1fb858f39bda65cb0110f47a1b55 100644 (file)
@@ -135,12 +135,10 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
 
     //reminder_interval
     $this->add('select', 'start_action_offset', ts('When'), $numericOptions);
-    $title = ts('Email');
     $isActive = ts('Send email');
     $recordActivity = ts('Record activity for automated email');
     if ($providersCount) {
       $this->assign('sms', $providersCount);
-      $title = ts('Email or SMS');
       $isActive = ts('Send email or SMS');
       $recordActivity = ts('Record activity for automated email or SMS');
       $options = CRM_Core_OptionGroup::values('msg_mode');
@@ -152,10 +150,9 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
       foreach ($providers as $provider) {
         $providerSelect[$provider['id']] = $provider['title'];
       }
-      $this->add('select', 'sms_provider_id', ts('From'), $providerSelect, TRUE);
+      $this->add('select', 'sms_provider_id', ts('SMS Provider'), $providerSelect, TRUE);
     }
 
-    $this->assign('title', $title);
     foreach ($this->_freqUnits as $val => $label) {
       $freqUnitsDisplay[$val] = ts('%1(s)', array(1 => $label));
     }
@@ -187,7 +184,7 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
     $this->add('select', 'end_date', ts('Date Field'), $sel4, TRUE);
 
     $this->add('text', 'from_name', ts('From Name'));
-    $this->add('text', 'from_email', ts('From Email'));    
+    $this->add('text', 'from_email', ts('From Email'));
 
     $recipient = 'activity_contacts';
     $recipientListingOptions = array();
@@ -260,7 +257,7 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
       }
     }
 
-    if (!empty($fields['is_active']) &&
+    if (!empty($fields['is_active']) && $fields['mode'] != 'SMS' &&
       CRM_Utils_System::isNull($fields['subject'])
     ) {
       $errors['subject'] = ts('Subject is a required field.');
@@ -315,7 +312,9 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
       }
       $defaults['text_message'] = CRM_Utils_Array::value('body_text', $defaults);
       $defaults['html_message'] = CRM_Utils_Array::value('body_html', $defaults);
+      $defaults['sms_text_message'] = CRM_Utils_Array::value('sms_body_text', $defaults);
       $defaults['template'] = CRM_Utils_Array::value('msg_template_id', $defaults);
+      $defaults['SMStemplate'] = CRM_Utils_Array::value('sms_template_id', $defaults);
       if (!empty($defaults['group_id'])) {
         $defaults['recipient'] = 'group';
       }
@@ -367,6 +366,8 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
       $params[$key] = CRM_Utils_Array::value($key, $values);
     }
 
+    $params['is_repeat'] = CRM_Utils_Array::value('is_repeat', $values, 0);
+
     $moreKeys = array(
       'start_action_offset',
       'start_action_unit',
@@ -382,6 +383,7 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
 
     if ($absoluteDate = CRM_Utils_Array::value('absolute_date', $params)) {
       $params['absolute_date'] = CRM_Utils_Date::processDate($absoluteDate);
+      $params['is_repeat'] = 0;
       foreach ($moreKeys as $mkey) {
         $params[$mkey] = 'null';
       }
@@ -394,6 +396,7 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
     }
 
     $params['body_text'] = CRM_Utils_Array::value('text_message', $values);
+    $params['sms_body_text'] = CRM_Utils_Array::value('sms_text_message', $values);
     $params['body_html'] = CRM_Utils_Array::value('html_message', $values);
 
     if (CRM_Utils_Array::value('recipient', $values) == 'manual') {
@@ -426,7 +429,6 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
     }
 
     $params['is_active'] = CRM_Utils_Array::value('is_active', $values, 0);
-    $params['is_repeat'] = CRM_Utils_Array::value('is_repeat', $values, 0);
 
     if (CRM_Utils_Array::value('is_repeat', $values) == 0) {
       $params['repetition_frequency_unit'] = 'null';
@@ -445,6 +447,17 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
       $params['name'] = CRM_Utils_String::munge($params['title'], '_', 64);
     }
 
+    $modePrefixes = array('Mail' => NULL, 'SMS' => 'SMS');
+
+    if ($params['mode'] == 'Email' || empty($params['sms_provider_id'])) {
+      unset($modePrefixes['SMS']);
+    }
+    elseif ($params['mode'] == 'SMS') {
+      unset($modePrefixes['Mail']);
+    }
+
+    //TODO: handle postprocessing of SMS and/or Email info based on $modePrefixes
+
     $composeFields = array(
       'template', 'saveTemplate',
       'updateTemplate', 'saveTemplateName',
@@ -452,44 +465,71 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
     $msgTemplate = NULL;
     //mail template is composed
 
-    $composeParams = array();
-    foreach ($composeFields as $key) {
-      if (!empty($values[$key])) {
-        $composeParams[$key] = $values[$key];
+    foreach ($modePrefixes as $prefix) {
+      $composeParams = array();
+      foreach ($composeFields as $key) {
+        $key = $prefix . $key;
+        if (!empty($values[$key])) {
+          $composeParams[$key] = $values[$key];
+        }
       }
-    }
-
-    if (!empty($composeParams['updateTemplate'])) {
-      $templateParams = array(
-        'msg_text' => $params['body_text'],
-        'msg_html' => $params['body_html'],
-        'msg_subject' => $params['subject'],
-        'is_active' => TRUE,
-      );
-
-      $templateParams['id'] = $values['template'];
 
-      $msgTemplate = CRM_Core_BAO_MessageTemplate::add($templateParams);
-    }
-
-    if (!empty($composeParams['saveTemplate'])) {
-      $templateParams = array(
-        'msg_text' => $params['body_text'],
-        'msg_html' => $params['body_html'],
-        'msg_subject' => $params['subject'],
-        'is_active' => TRUE,
-      );
-
-      $templateParams['msg_title'] = $composeParams['saveTemplateName'];
+      if (!empty($composeParams[$prefix . 'updateTemplate'])) {
+        $templateParams = array('is_active' => TRUE);
+        if ($prefix == 'SMS') {
+          $templateParams += array(
+            'msg_text' => $params['sms_body_text'],
+            'is_sms' => TRUE,
+        );
+        }
+        else {
+          $templateParams += array(
+            'msg_text' => $params['body_text'],
+            'msg_html' => $params['body_html'],
+            'msg_subject' => $params['subject'],
+          );
+        }
+        $templateParams['id'] = $values[$prefix . 'template'];
+
+        $msgTemplate = CRM_Core_BAO_MessageTemplate::add($templateParams);
+      }
 
-      $msgTemplate = CRM_Core_BAO_MessageTemplate::add($templateParams);
-    }
+      if (!empty($composeParams[$prefix . 'saveTemplate'])) {
+        $templateParams = array('is_active' => TRUE);
+        if ($prefix == 'SMS') {
+          $templateParams += array(
+            'msg_text' => $params['sms_body_text'],
+            'is_sms' => TRUE,
+          );
+        }
+        else {
+          $templateParams += array(
+            'msg_text' => $params['body_text'],
+            'msg_html' => $params['body_html'],
+            'msg_subject' => $params['subject'],
+          );
+        }
+        $templateParams['msg_title'] = $composeParams[$prefix . 'saveTemplateName'];
+
+        $msgTemplate = CRM_Core_BAO_MessageTemplate::add($templateParams);
+      }
 
-    if (isset($msgTemplate->id)) {
-      $params['msg_template_id'] = $msgTemplate->id;
-    }
-    else {
-      $params['msg_template_id'] = CRM_Utils_Array::value('template', $values);
+      if ($prefix == 'SMS') {
+        if (isset($msgTemplate->id)) {
+          $params['sms_template_id'] = $msgTemplate->id;
+        }
+        else {
+          $params['sms_template_id'] = CRM_Utils_Array::value('SMStemplate', $values);
+        }
+      }
+      else {
+        if (isset($msgTemplate->id)) {
+          $params['msg_template_id'] = $msgTemplate->id;
+        }
+        else {
+          $params['msg_template_id'] = CRM_Utils_Array::value('template', $values);
+        }
+      }
     }
 
     $bao = CRM_Core_BAO_ActionSchedule::add($params);