Merge pull request #5760 from sudhabisht/SMSissue
[civicrm-core.git] / CRM / Core / BAO / MessageTemplate.php
index 0182b2eae1115745ff2a95a832b5875eb24fdca1..48518b8be7077b26f11c983d33ff888adaa86457 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 4.6                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014                                |
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
  | GNU Affero General Public License or the licensing of CiviCRM,     |
  | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
  +--------------------------------------------------------------------+
-*/
+ */
 
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2014
+ * @copyright CiviCRM LLC (c) 2004-2015
  * $Id$
  *
  */
@@ -41,13 +41,14 @@ require_once 'Mail/mime.php';
 class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
 
   /**
-   * Fetch object based on array of properties
+   * Fetch object based on array of properties.
    *
-   * @param array $params   (reference ) an assoc array of name/value pairs
-   * @param array $defaults (reference ) an assoc array to hold the flattened values
+   * @param array $params
+   *   (reference ) an assoc array of name/value pairs.
+   * @param array $defaults
+   *   (reference ) an assoc array to hold the flattened values.
    *
-   * @return CRM_Core_BAO_MessageTemplate object
-   * @static
+   * @return CRM_Core_BAO_MessageTemplate
    */
   public static function retrieve(&$params, &$defaults) {
     $messageTemplates = new CRM_Core_DAO_MessageTemplate();
@@ -60,24 +61,26 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
   }
 
   /**
-   * Update the is_active flag in the db
+   * Update the is_active flag in the db.
    *
-   * @param int      $id        id of the database record
-   * @param boolean  $is_active value we want to set the is_active field
+   * @param int $id
+   *   Id of the database record.
+   * @param bool $is_active
+   *   Value we want to set the is_active field.
    *
-   * @return Object             DAO object on sucess, null otherwise
-   * @static
+   * @return Object
+   *   DAO object on success, NULL otherwise
    */
   public static function setIsActive($id, $is_active) {
     return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_MessageTemplate', $id, 'is_active', $is_active);
   }
 
   /**
-   * Add the Message Templates
+   * Add the Message Templates.
    *
-   * @param array $params reference array contains the values submitted by the form
+   * @param array $params
+   *   Reference array contains the values submitted by the form.
    *
-   * @static
    *
    * @return object
    */
@@ -94,13 +97,10 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
   }
 
   /**
-   * Delete the Message Templates
-   *
-   * @static
+   * Delete the Message Templates.
    *
    * @param int $messageTemplatesID
-   *
-   * @return object
+   * @return void
    */
   public static function del($messageTemplatesID) {
     // make sure messageTemplatesID is an integer
@@ -123,9 +123,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
   }
 
   /**
-   * Get the Message Templates
+   * Get the Message Templates.
    *
-   * @static
    *
    * @param bool $all
    *
@@ -155,20 +154,20 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
    * @param int $messageTemplateID
    * @param $from
    *
-   * @return bool|null
+   * @return bool|NULL
    */
   public static function sendReminder($contactId, $email, $messageTemplateID, $from) {
 
     $messageTemplates = new CRM_Core_DAO_MessageTemplate();
     $messageTemplates->id = $messageTemplateID;
 
-    $domain     = CRM_Core_BAO_Domain::getDomain();
-    $result     = NULL;
+    $domain = CRM_Core_BAO_Domain::getDomain();
+    $result = NULL;
     $hookTokens = array();
 
     if ($messageTemplates->find(TRUE)) {
-      $body_text    = $messageTemplates->msg_text;
-      $body_html    = $messageTemplates->msg_html;
+      $body_text = $messageTemplates->msg_text;
+      $body_html = $messageTemplates->msg_html;
       $body_subject = $messageTemplates->msg_subject;
       if (!$body_text) {
         $body_text = CRM_Utils_String::htmlToText($body_html);
@@ -188,8 +187,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
 
       // get tokens to be replaced
       $tokens = array_merge(CRM_Utils_Token::getTokens($body_text),
-                            CRM_Utils_Token::getTokens($body_html),
-                            CRM_Utils_Token::getTokens($body_subject));
+        CRM_Utils_Token::getTokens($body_html),
+        CRM_Utils_Token::getTokens($body_subject));
 
       // get replacement text for these tokens
       $returnProperties = array("preferred_mail_format" => 1);
@@ -199,11 +198,11 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
         }
       }
       list($details) = CRM_Utils_Token::getTokenDetails(array($contactId),
-                                                        $returnProperties,
-                                                        null, null, false,
-                                                        $tokens,
-                                                        'CRM_Core_BAO_MessageTemplate');
-      $contact = reset( $details );
+        $returnProperties,
+        NULL, NULL, FALSE,
+        $tokens,
+        'CRM_Core_BAO_MessageTemplate');
+      $contact = reset($details);
 
       // call token hook
       $hookTokens = array();
@@ -216,10 +215,10 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
         $bodyType = "body_{$value}";
         if ($$bodyType) {
           CRM_Utils_Token::replaceGreetingTokens($$bodyType, NULL, $contact['contact_id']);
-          $$bodyType = CRM_Utils_Token::replaceDomainTokens($$bodyType, $domain, true, $tokens, true);
-          $$bodyType = CRM_Utils_Token::replaceContactTokens($$bodyType, $contact, false, $tokens, false, true);
-          $$bodyType = CRM_Utils_Token::replaceComponentTokens($$bodyType, $contact, $tokens, true);
-          $$bodyType = CRM_Utils_Token::replaceHookTokens($$bodyType, $contact , $categories, true);
+          $$bodyType = CRM_Utils_Token::replaceDomainTokens($$bodyType, $domain, TRUE, $tokens, TRUE);
+          $$bodyType = CRM_Utils_Token::replaceContactTokens($$bodyType, $contact, FALSE, $tokens, FALSE, TRUE);
+          $$bodyType = CRM_Utils_Token::replaceComponentTokens($$bodyType, $contact, $tokens, TRUE);
+          $$bodyType = CRM_Utils_Token::replaceHookTokens($$bodyType, $contact, $categories, TRUE);
         }
       }
       $html = $body_html;
@@ -227,15 +226,17 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
 
       $smarty = CRM_Core_Smarty::singleton();
       foreach (array(
-        'text', 'html') as $elem) {
+                 'text',
+                 'html',
+               ) as $elem) {
         $$elem = $smarty->fetch("string:{$$elem}");
       }
 
       // do replacements in message subject
-      $messageSubject = CRM_Utils_Token::replaceContactTokens($body_subject, $contact, false, $tokens);
-      $messageSubject = CRM_Utils_Token::replaceDomainTokens($messageSubject, $domain, true, $tokens);
-      $messageSubject = CRM_Utils_Token::replaceComponentTokens($messageSubject, $contact, $tokens, true);
-      $messageSubject = CRM_Utils_Token::replaceHookTokens($messageSubject, $contact, $categories, true);
+      $messageSubject = CRM_Utils_Token::replaceContactTokens($body_subject, $contact, FALSE, $tokens);
+      $messageSubject = CRM_Utils_Token::replaceDomainTokens($messageSubject, $domain, TRUE, $tokens);
+      $messageSubject = CRM_Utils_Token::replaceComponentTokens($messageSubject, $contact, $tokens, TRUE);
+      $messageSubject = CRM_Utils_Token::replaceHookTokens($messageSubject, $contact, $categories, TRUE);
 
       $messageSubject = $smarty->fetch("string:{$messageSubject}");
 
@@ -255,7 +256,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
       }
       if ($html && ($contact['preferred_mail_format'] == 'HTML' ||
           $contact['preferred_mail_format'] == 'Both'
-        )) {
+        )
+      ) {
         $mailParams['html'] = $html;
       }
 
@@ -270,12 +272,12 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
   /**
    * Revert a message template to its default subject+text+HTML state
    *
-   * @param integer id  id of the template
+   * @param int $id id of the template
    *
    * @return void
    */
   public static function revert($id) {
-    $diverted = new self;
+    $diverted = new CRM_Core_BAO_MessageTemplate();
     $diverted->id = (int) $id;
     $diverted->find(1);
 
@@ -283,7 +285,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
       CRM_Core_Error::fatal(ts('Did not find a message template with id of %1.', array(1 => $id)));
     }
 
-    $orig              = new self;
+    $orig = new CRM_Core_BAO_MessageTemplate();
     $orig->workflow_id = $diverted->workflow_id;
     $orig->is_reserved = 1;
     $orig->find(1);
@@ -300,11 +302,13 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
   }
 
   /**
-   * Send an email from the specified template based on an array of params
+   * Send an email from the specified template based on an array of params.
    *
-   * @param array $params  a string-keyed array of function params, see function body for details
+   * @param array $params
+   *   A string-keyed array of function params, see function body for details.
    *
-   * @return array  of four parameters: a boolean whether the email was sent, and the subject, text and HTML templates
+   * @return array
+   *   Array of four parameters: a boolean whether the email was sent, and the subject, text and HTML templates
    */
   public static function sendTemplate($params) {
     $defaults = array(
@@ -371,14 +375,17 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
         CRM_Core_Error::fatal(ts('No such message template: id=%1.', array(1 => $params['messageTemplateID'])));
       }
       else {
-        CRM_Core_Error::fatal(ts('No such message template: option group %1, option value %2.', array(1 => $params['groupName'], 2 => $params['valueName'])));
+        CRM_Core_Error::fatal(ts('No such message template: option group %1, option value %2.', array(
+              1 => $params['groupName'],
+              2 => $params['valueName'],
+            )));
       }
     }
 
     $subject = $dao->subject;
-    $text    = $dao->text;
-    $html    = $dao->html;
-    $format  = $dao->format;
+    $text = $dao->text;
+    $html = $dao->html;
+    $format = $dao->format;
     $dao->free();
 
     // add the test banner (if requested)
@@ -392,18 +399,18 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
       $testDao->fetch();
 
       $subject = $testDao->subject . $subject;
-      $text    = $testDao->text . $text;
-      $html    = preg_replace('/<body(.*)$/im', "<body\\1\n{$testDao->html}", $html);
+      $text = $testDao->text . $text;
+      $html = preg_replace('/<body(.*)$/im', "<body\\1\n{$testDao->html}", $html);
       $testDao->free();
     }
 
     // replace tokens in the three elements (in subject as if it was the text body)
-    $domain             = CRM_Core_BAO_Domain::getDomain();
-    $hookTokens         = array();
-    $mailing            = new CRM_Mailing_BAO_Mailing;
+    $domain = CRM_Core_BAO_Domain::getDomain();
+    $hookTokens = array();
+    $mailing = new CRM_Mailing_BAO_Mailing();
     $mailing->body_text = $text;
     $mailing->body_html = $html;
-    $tokens             = $mailing->getTokens();
+    $tokens = $mailing->getTokens();
     CRM_Utils_Hook::tokens($hookTokens);
     $categories = array_keys($hookTokens);
 
@@ -435,14 +442,13 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
     }
 
     $subject = CRM_Utils_Token::replaceDomainTokens($subject, $domain, FALSE, $tokens['text'], TRUE);
-    $text    = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text'], TRUE);
-    $html    = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html'], TRUE);
+    $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text'], TRUE);
+    $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html'], TRUE);
 
     if ($contactID) {
       $subject = CRM_Utils_Token::replaceContactTokens($subject, $contact, FALSE, $tokens['text'], FALSE, TRUE);
-      $text    = CRM_Utils_Token::replaceContactTokens($text, $contact, FALSE, $tokens['text'], FALSE, TRUE);
-      $html    = CRM_Utils_Token::replaceContactTokens($html, $contact, FALSE, $tokens['html'], FALSE, TRUE);
-
+      $text = CRM_Utils_Token::replaceContactTokens($text, $contact, FALSE, $tokens['text'], FALSE, TRUE);
+      $html = CRM_Utils_Token::replaceContactTokens($html, $contact, FALSE, $tokens['html'], FALSE, TRUE);
 
       $contactArray = array($contactID => $contact);
       CRM_Utils_Hook::tokenValues($contactArray,
@@ -455,22 +461,23 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
       $contact = $contactArray[$contactID];
 
       $subject = CRM_Utils_Token::replaceHookTokens($subject, $contact, $categories, TRUE);
-      $text    = CRM_Utils_Token::replaceHookTokens($text, $contact, $categories, TRUE);
-      $html    = CRM_Utils_Token::replaceHookTokens($html, $contact, $categories, TRUE);
+      $text = CRM_Utils_Token::replaceHookTokens($text, $contact, $categories, TRUE);
+      $html = CRM_Utils_Token::replaceHookTokens($html, $contact, $categories, TRUE);
     }
 
     // strip whitespace from ends and turn into a single line
     $subject = "{strip}$subject{/strip}";
 
     // parse the three elements with Smarty
-
-
     $smarty = CRM_Core_Smarty::singleton();
     foreach ($params['tplParams'] as $name => $value) {
       $smarty->assign($name, $value);
     }
     foreach (array(
-      'subject', 'text', 'html') as $elem) {
+               'subject',
+               'text',
+               'html',
+             ) as $elem) {
       $$elem = $smarty->fetch("string:{$$elem}");
     }
 
@@ -479,8 +486,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
 
     // create the params array
     $params['subject'] = $subject;
-    $params['text']    = $text;
-    $params['html']    = $html;
+    $params['text'] = $text;
+    $params['html'] = $html;
 
     if ($params['toEmail']) {
       $contactParams = array(array('email', 'LIKE', $params['toEmail'], 0, 1));
@@ -502,7 +509,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
         if (empty($params['attachments'])) {
           $params['attachments'] = array();
         }
-        $params['attachments'][] =  CRM_Utils_Mail::appendPDF('Invoice.pdf', $pdfHtml, $format) ;
+        $params['attachments'][] = CRM_Utils_Mail::appendPDF('Invoice.pdf', $pdfHtml, $format);
       }
       $pdf_filename = '';
       if ($config->doNotAttachPDFReceipt &&
@@ -528,4 +535,5 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate {
 
     return array($sent, $subject, $text, $html);
   }
+
 }