Пример #1
0
 /**
  * Function to Copy household address, if use_household_address option is checked.
  *
  * @param array $params  the input form values
  *
  * @return void
  * @access public
  * @static
  */
 static function copyHouseholdAddress(&$params)
 {
     if ($params['shared_household']) {
         $params['mail_to_household_id'] = $params['shared_household'];
     }
     if (!$params['mail_to_household_id']) {
         CRM_Core_Error::statusBounce(ts("Shared Household-ID not found."));
     }
     $locParams = array('version' => '3.0', 'contact_id' => $params['mail_to_household_id']);
     $location_types = array();
     require_once 'api/v2/Location.php';
     $values =& _civicrm_location_get($locParams, $location_types);
     $addressFields = CRM_Core_DAO_Address::fields();
     foreach ($addressFields as $key => $val) {
         if (!CRM_Utils_Array::value($key, $values['address'][1])) {
             $values['address'][1][$key] = "";
         }
     }
     if ($is_billing = $params['address'][1]['is_billing']) {
         $values['address'][1]['is_billing'] = $is_billing;
     }
     if ($values['address'][1]['country_id'] == "null") {
         $values['address'][1]['country_id'] = 0;
     }
     if ($values['address'][1]['state_province_id'] == "null") {
         $values['address'][1]['state_province_id'] = 0;
     }
     $params['address'][1] = $values['address'][1];
     // unset all the ids and unwanted fields
     $unsetFields = array('id', 'location_id', 'timezone', 'note');
     foreach ($unsetFields as $fld) {
         unset($params['address'][1][$fld]);
     }
 }
Пример #2
0
/**
 * Returns array of location(s) for a contact
 * 
 * @param array $contact  a valid array of contact parameters
 *
 * @return array  an array of location parameters arrays
 *
 * @access public
 */
function civicrm_location_get($contact)
{
    _civicrm_initialize();
    if (!is_array($contact)) {
        return civicrm_create_error('Params need to be of type array!');
    }
    if (!isset($contact['contact_id'])) {
        return civicrm_create_error('$contact is not valid contact datatype');
    }
    $locationTypes = CRM_Utils_Array::value('location_type', $contact);
    if (is_array($locationTypes) && !count($locationTypes)) {
        return civicrm_create_error('Location type array can not be empty');
    }
    $location =& _civicrm_location_get($contact, $locationTypes);
    return $location;
}
Пример #3
0
 /**
  * This function synchronizes (updates) the address of individuals,
  * sharing the address of the passed household-contact-ID.
  * @param integer $householdContactID  the household contact id.
  *
  * @return void
  * @access public
  * @static
  */
 static function synchronizeIndividualAddresses($householdContactID)
 {
     require_once 'api/v2/Location.php';
     require_once 'CRM/Core/BAO/Location.php';
     $locValues =& _civicrm_location_get(array('version' => '3.0', 'contact_id' => $householdContactID));
     $query = "\nSELECT cc.id as id,ca.id address_id \nFROM civicrm_contact cc LEFT JOIN civicrm_address ca ON cc.id = ca.contact_id \nWHERE mail_to_household_id = {$householdContactID};";
     $contact = CRM_Core_DAO::executeQuery($query);
     $query = "UPDATE civicrm_address ca, civicrm_contact cc\nSET is_primary = 0 \nWHERE ca.contact_id = cc.id AND mail_to_household_id = {$householdContactID};";
     $update = CRM_Core_DAO::singleValueQuery($query);
     if (CRM_Utils_Array::value('address', $locValues) && count($locValues['address'])) {
         while ($contact->fetch()) {
             $locParams = array('contact_id' => $contact->id, 'address' => array(1 => $locValues['address'][1]));
             // removing unwanted ids from the params array
             foreach (array('timezone', 'contact_id') as $fld) {
                 if (isset($locParams['address'][1][$fld])) {
                     unset($locParams['address'][1][$fld]);
                 }
             }
             $locParams['address'][1]['id'] = $contact->address_id;
             CRM_Core_BAO_Location::create($locParams);
         }
     }
 }