/**
  * Fetch the object and store the values in the values array.
  *
  * @param array $params
  *   Input parameters to find object.
  * @param array $values
  *   Output values of the object.
  *
  * @return CRM_Contact_BAO_Contact|null
  *   The found object or null
  */
 public static function getValues(&$params, &$values)
 {
     $contact = new CRM_Contact_BAO_Contact();
     $contact->copyValues($params);
     if ($contact->find(TRUE)) {
         CRM_Core_DAO::storeValues($contact, $values);
         $privacy = array();
         foreach (self::$_commPrefs as $name) {
             if (isset($contact->{$name})) {
                 $privacy[$name] = $contact->{$name};
             }
         }
         if (!empty($privacy)) {
             $values['privacy'] = $privacy;
         }
         // communication Prefferance
         $preffComm = $comm = array();
         $comm = explode(CRM_Core_DAO::VALUE_SEPARATOR, $contact->preferred_communication_method);
         foreach ($comm as $value) {
             $preffComm[$value] = 1;
         }
         $temp = array('preferred_communication_method' => $contact->preferred_communication_method);
         $names = array('preferred_communication_method' => array('newName' => 'preferred_communication_method_display', 'groupName' => 'preferred_communication_method'));
         CRM_Core_OptionGroup::lookupValues($temp, $names, FALSE);
         $values['preferred_communication_method'] = $preffComm;
         $values['preferred_communication_method_display'] = CRM_Utils_Array::value('preferred_communication_method_display', $temp);
         $preferredMailingFormat = CRM_Core_SelectValues::pmf();
         $values['preferred_mail_format'] = $preferredMailingFormat[$contact->preferred_mail_format];
         // get preferred languages
         if (!empty($contact->preferred_language)) {
             $values['preferred_language'] = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'preferred_language', $contact->preferred_language);
         }
         // Calculating Year difference
         if ($contact->birth_date) {
             $birthDate = CRM_Utils_Date::customFormat($contact->birth_date, '%Y%m%d');
             if ($birthDate < date('Ymd')) {
                 $age = CRM_Utils_Date::calculateAge($birthDate);
                 $values['age']['y'] = CRM_Utils_Array::value('years', $age);
                 $values['age']['m'] = CRM_Utils_Array::value('months', $age);
             }
             list($values['birth_date']) = CRM_Utils_Date::setDateDefaults($contact->birth_date, 'birth');
             $values['birth_date_display'] = $contact->birth_date;
         }
         if ($contact->deceased_date) {
             list($values['deceased_date']) = CRM_Utils_Date::setDateDefaults($contact->deceased_date, 'birth');
             $values['deceased_date_display'] = $contact->deceased_date;
         }
         $contact->contact_id = $contact->id;
         return $contact;
     }
     return NULL;
 }
Example #2
0
 /**
  * Given the list of params in the params array, fetch the object
  * and store the values in the values array
  *
  * @param array $params input parameters to find object
  * @param array $values output values of the object
  *
  * @return CRM_Contact_BAO_Contact|null the found object or null
  * @access public
  * @static
  */
 private static function _getValues(&$params, &$values)
 {
     $contact = new CRM_Contact_BAO_Contact();
     $contact->copyValues($params);
     if ($contact->find(true)) {
         CRM_Core_DAO::storeValues($contact, $values);
         $privacy = array();
         foreach (self::$_commPrefs as $name) {
             if (isset($contact->{$name})) {
                 $privacy[$name] = $contact->{$name};
             }
         }
         if (!empty($privacy)) {
             $values['privacy'] = $privacy;
         }
         // communication Prefferance
         $preffComm = $comm = array();
         $comm = explode(CRM_Core_BAO_CustomOption::VALUE_SEPERATOR, $contact->preferred_communication_method);
         foreach ($comm as $value) {
             $preffComm[$value] = 1;
         }
         $temp = array('preferred_communication_method' => $contact->preferred_communication_method);
         $names = array('preferred_communication_method' => array('newName' => 'preferred_communication_method_display', 'groupName' => 'preferred_communication_method'));
         require_once 'CRM/Core/OptionGroup.php';
         CRM_Core_OptionGroup::lookupValues($temp, $names, false);
         $values['preferred_communication_method'] = $preffComm;
         $values['preferred_communication_method_display'] = CRM_Utils_Array::value('preferred_communication_method_display', $temp);
         CRM_Contact_DAO_Contact::addDisplayEnums($values);
         // get preferred languages
         if (!empty($contact->preferred_language)) {
             $languages =& CRM_Core_PseudoConstant::languages();
             $values['preferred_language'] = CRM_Utils_Array::value($contact->preferred_language, $languages);
         }
         // Calculating Year difference
         if ($contact->birth_date) {
             $birthDate = CRM_Utils_Date::customFormat($contact->birth_date, '%Y%m%d');
             if ($birthDate < date('Ymd')) {
                 $age = CRM_Utils_Date::calculateAge($birthDate);
                 $values['age']['y'] = CRM_Utils_Array::value('years', $age);
                 $values['age']['m'] = CRM_Utils_Array::value('months', $age);
             }
             list($values['birth_date']) = CRM_Utils_Date::setDateDefaults($contact->birth_date, 'birth');
             $values['birth_date_display'] = $contact->birth_date;
         }
         if ($contact->deceased_date) {
             list($values['deceased_date']) = CRM_Utils_Date::setDateDefaults($contact->deceased_date, 'birth');
             $values['deceased_date_display'] = $contact->deceased_date;
         }
         $contact->contact_id = $contact->id;
         return $contact;
     }
     return null;
 }