<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.3 |
+ | CiviCRM version 4.4 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2013 |
+--------------------------------------------------------------------+
*
* currentlty we are using importable fields as exportable fields
*
- * @param int $contactType contact Type
+ * @param int|string $contactType contact Type
* @param boolean $status true while exporting primary contacts
* @param boolean $export true when used during export
* @param boolean $search true when used during search, might conflict with export param?
*
+ * @param bool $withMultiRecord
+ *
* @return array array of exportable Fields
* @access public
* @static
* given a set of flat profile style field names, create a hierarchy
* for query to use and crete the right sql
*
- * @param array $properties a flat return properties name value array
- * @param int $contactId contact id
+ * @param $fields
+ * @param int $contactId contact id
*
+ * @internal param array $properties a flat return properties name value array
* @return array a hierarchical property tree if appropriate
* @access public
* @static
* $params boolean $isPrimaryExist if true, return primary contact location type otherwise null
* $params boolean $skipDefaultPriamry if true, return primary contact location type otherwise null
*
+ * @param $contactId
+ * @param bool $skipDefaultPriamry
+ * @param null $block
+ *
* @return int $locationType location_type_id
* @access public
* @static
}
// get the billing location type
- $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id');
+ $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id', array(), 'validate');
$billingLocationTypeId = array_search('Billing', $locationTypes);
$blocks = array('email', 'phone', 'im', 'openid');
}
$primaryPhoneLoc = NULL;
+ $session = CRM_Core_Session::singleton();
foreach ($params as $key => $value) {
$fieldName = $locTypeId = $typeId = NULL;
list($fieldName, $locTypeId, $typeId) = CRM_Utils_System::explode('-', $key, 3);
$value .= ' ' . $params[$key . '_time'];
}
+ // if auth source is not checksum / login && $value is blank, do not proceed - CRM-10128
+ if (($session->get('authSrc') & (CRM_Core_Permission::AUTH_SRC_CHECKSUM + CRM_Core_Permission::AUTH_SRC_LOGIN)) == 0 &&
+ ($value == '' || !isset($value))) {
+ continue;
+ }
+
$valueId = NULL;
if (CRM_Utils_Array::value('customRecordValues', $params)) {
if (is_array($params['customRecordValues']) && !empty($params['customRecordValues'])) {
}
}
}
+ else if (in_array($key,
+ array('nick_name',
+ 'job_title',
+ 'middle_name',
+ 'birth_date',
+ 'gender_id',
+ 'current_employer',
+ 'prefix_id',
+ 'suffix_id')) &&
+ ($value == '' || !isset($value)) &&
+ ($session->get('authSrc') & (CRM_Core_Permission::AUTH_SRC_CHECKSUM + CRM_Core_Permission::AUTH_SRC_LOGIN)) == 0) {
+ // CRM-10128: if auth source is not checksum / login && $value is blank, do not fill $data with empty value
+ // to avoid update with empty values
+ continue;
+ }
else {
$data[$key] = $value;
}
// fields that are required to calculate greeting and
// also other fields used in tokens etc,
// hence we need to retrieve it again.
- $contact->find(TRUE);
+ if ( $contact->_query !== FALSE ) {
+ $contact->find(TRUE);
+ }
// store object values to an array
$contactDetails = array();