Merge pull request #2708 from yashodha/sms-reminder
[civicrm-core.git] / CRM / Contact / BAO / Individual.php
index f51d957f589e6f37dd68cb6c332bd7e9b703afa4..104b88976062576f48358dc84449f7accd2dd73a 100644 (file)
@@ -60,8 +60,7 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
 
     // "null" value for example is passed by dedupe merge in order to empty.
     // Display name computation shouldn't consider such values.
-    foreach (array(
-      'first_name', 'middle_name', 'last_name', 'nick_name') as $displayField) {
+    foreach (array('first_name', 'middle_name', 'last_name', 'nick_name', 'formal_title') as $displayField) {
       if (CRM_Utils_Array::value($displayField, $params) == "null") {
         $params[$displayField] = '';
       }
@@ -74,19 +73,15 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
     $nickName   = CRM_Utils_Array::value('nick_name', $params, '');
     $prefix_id  = CRM_Utils_Array::value('prefix_id', $params, '');
     $suffix_id  = CRM_Utils_Array::value('suffix_id', $params, '');
+    $formalTitle = CRM_Utils_Array::value('formal_title', $params, '');
 
     // get prefix and suffix names
-    $prefixes = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'prefix_id');
-    $suffixes = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'suffix_id');
-
     $prefix = $suffix = NULL;
     if ($prefix_id) {
-      $prefix = $prefixes[$prefix_id];
-      $params['individual_prefix'] = $prefix;
+      $params['individual_prefix'] = $prefix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'prefix_id', $prefix_id);
     }
     if ($suffix_id) {
-      $suffix = $suffixes[$suffix_id];
-      $params['individual_suffix'] = $suffix;
+      $params['individual_suffix'] = $suffix = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'suffix_id', $suffix_id);
     }
 
     $params['is_deceased'] = CRM_Utils_Array::value('is_deceased', $params, FALSE);
@@ -101,33 +96,34 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
         //but if db having null value and params contain value, CRM-4330.
         $useDBNames = array();
 
-        foreach (array(
-          'last', 'middle', 'first', 'nick') as $name) {
+        foreach (array('last', 'middle', 'first', 'nick') as $name) {
           $dbName = "{$name}_name";
           $value = $individual->$dbName;
 
           // the db has name values
-          if ($value && CRM_Utils_Array::value('preserveDBName', $params)) {
+          if ($value && !empty($params['preserveDBName'])) {
             $useDBNames[] = $name;
           }
         }
 
-        foreach (array(
-          'prefix', 'suffix') as $name) {
+        foreach (array('prefix', 'suffix') as $name) {
           $dbName = "{$name}_id";
           $value = $individual->$dbName;
-          if ($value && CRM_Utils_Array::value('preserveDBName', $params)) {
+          if ($value && !empty($params['preserveDBName'])) {
             $useDBNames[] = $name;
           }
         }
 
+        if ($individual->formal_title && !empty($params['preserveDBName'])) {
+          $useDBNames[] = 'formal_title';
+        }
+
         // CRM-4430
         //1. preserve db name if want
         //2. lets get value from param if exists.
         //3. if not in params, lets get from db.
 
-        foreach (array(
-          'last', 'middle', 'first', 'nick') as $name) {
+        foreach (array('last', 'middle', 'first', 'nick') as $name) {
           $phpName = "{$name}Name";
           $dbName  = "{$name}_name";
           $value   = $individual->$dbName;
@@ -144,42 +140,47 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
           }
         }
 
-        foreach (array(
-          'prefix', 'suffix') as $name) {
-          $phpName = $name;
+        foreach (array('prefix', 'suffix') as $name) {
           $dbName  = "{$name}_id";
-          $vals    = "{$name}es";
 
           $value = $individual->$dbName;
           if (in_array($name, $useDBNames)) {
             $params[$dbName] = $value;
             $contact->$dbName = $value;
             if ($value) {
-              $temp = $$vals;
-              $$phpName = $temp[$value];
+              $$name = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', $name, $value);
             }
             else {
-              $$phpName = NULL;
+              $$name = NULL;
             }
           }
           elseif (array_key_exists($dbName, $params)) {
-            $temp = $$vals;
             // CRM-5278
             if (!empty($params[$dbName])) {
-              $$phpName = CRM_Utils_Array::value($params[$dbName], $temp);
+              $$name = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', $dbName, $params[$dbName]);
             }
           }
           elseif ($value) {
-            $temp = $$vals;
-            $$phpName = $temp[$value];
+            $$name = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', $name, $value);
           }
         }
+
+        if (in_array('formal_title', $useDBNames)) {
+          $params['formal_title'] = $individual->formal_title;
+          $contact->formal_title  = $individual->formal_title;
+          $formalTitle            = $individual->formal_title;
+        }
+        elseif (array_key_exists('formal_title', $params)) {
+          $formalTitle = $params['formal_title'];
+        }
+        elseif ($individual->formal_title) {
+          $formalTitle = $individual->formal_title;
+        }
       }
     }
 
     //first trim before further processing.
-    foreach (array(
-      'lastName', 'firstName', 'middleName') as $fld) {
+    foreach (array('lastName', 'firstName', 'middleName') as $fld) {
       $$fld = trim($$fld);
     }
 
@@ -195,10 +196,11 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
         'individual_prefix' => $prefix,
         'prefix_id' => $prefix_id,
         'suffix_id' => $suffix_id,
+        'formal_title' => $formalTitle,
       );
       // make sure we have all the name fields.
       foreach ($nameParams as $name => $value) {
-        if (!CRM_Utils_Array::value($name, $formatted) && $value) {
+        if (empty($formatted[$name]) && $value) {
           $formatted[$name] = $value;
         }
       }
@@ -206,7 +208,7 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
       $tokens = array();
       CRM_Utils_Hook::tokens($tokens);
       $tokenFields = array();
-      foreach ($tokens as $category => $catTokens) {
+      foreach ($tokens as $catTokens) {
         foreach ($catTokens as $token => $label) {
           $tokenFields[] = $token;
         }
@@ -234,7 +236,7 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
     //start further check for email.
     if (empty($sortName) || empty($displayName)) {
       $email = NULL;
-      if (CRM_Utils_Array::value('email', $params) &&
+      if (!empty($params['email']) &&
         is_array($params['email'])
       ) {
         foreach ($params['email'] as $emailBlock) {