X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FBAO%2FCustomField.php;h=71e597832d062bcb3f17654d6419551eaab1c0b4;hb=cf726992aa4ce457eb4fba768b075085167ad7cb;hp=acd49480b5a55917fffb0758074bdfb5ff279eb5;hpb=7587f8eb070efc81b8a73fa8d45af682addb44a3;p=civicrm-core.git diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index acd49480b5..71e597832d 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -1093,11 +1093,11 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { else { // FIXME: This won't work with customFieldOptions hook $attributes += array( - 'entity' => 'option_value', + 'entity' => 'OptionValue', 'placeholder' => $placeholder, 'multiple' => $search, 'api' => array( - 'params' => array('option_group_id' => $field->option_group_id), + 'params' => array('option_group_id' => $field->option_group_id, 'is_active' => 1), ), ); $element = $qf->addEntityRef($elementName, $label, $attributes, $useRequired && !$search); @@ -1216,8 +1216,8 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $value = CRM_Utils_Array::explodePadded($value); } // CRM-12989 fix - if ($field['html_type'] == 'CheckBox') { - CRM_Utils_Array::formatArrayKeys($value); + if ($field['html_type'] == 'CheckBox' && $value) { + $value = CRM_Utils_Array::convertCheckboxFormatToArray($value); } $display = is_array($value) ? implode(', ', $value) : (string) $value; @@ -1497,7 +1497,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { list($path) = CRM_Core_BAO_File::path($fileID, $entityId); $fileHash = CRM_Core_BAO_File::generateFileHash($entityId, $fileID); $url = CRM_Utils_System::url('civicrm/file', - "reset=1&id=$fileID&eid=$contactID&fcs=$fileHash", + "reset=1&id=$fileID&eid=$entityId&fcs=$fileHash", $absolute, NULL, TRUE, TRUE ); $result['file_url'] = CRM_Utils_File::getFileURL($path, $fileType, $url); @@ -1508,7 +1508,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $fileID, 'uri' ); - $fileHash = CRM_Core_BAO_File::generateFileHash($entityId, $fileID); + $fileHash = CRM_Core_BAO_File::generateFileHash($contactID, $fileID); $url = CRM_Utils_System::url('civicrm/file', "reset=1&id=$fileID&eid=$contactID&fcs=$fileHash", $absolute, NULL, TRUE, TRUE @@ -2249,42 +2249,43 @@ ORDER BY html_type"; * Get custom field ID from field/group name/title. * * @param string $fieldName Field name or label - * @param string|null $groupTitle (Optional) Group name or label + * @param string|null $groupName (Optional) Group name or label * @param bool $fullString Whether to return "custom_123" or "123" * * @return string|int|null * @throws \CiviCRM_API3_Exception */ - public static function getCustomFieldID($fieldName, $groupTitle = NULL, $fullString = FALSE) { - if (!isset(Civi::$statics['CRM_Core_BAO_CustomField'][$fieldName])) { + public static function getCustomFieldID($fieldName, $groupName = NULL, $fullString = FALSE) { + $cacheKey = $groupName . '.' . $fieldName; + if (!isset(Civi::$statics['CRM_Core_BAO_CustomField'][$cacheKey])) { $customFieldParams = [ 'name' => $fieldName, 'label' => $fieldName, 'options' => ['or' => [["name", "label"]]], ]; - if ($groupTitle) { - $customFieldParams['custom_group_id.name'] = $groupTitle; - $customFieldParams['custom_group_id.title'] = $groupTitle; + if ($groupName) { + $customFieldParams['custom_group_id.name'] = $groupName; + $customFieldParams['custom_group_id.title'] = $groupName; $customFieldParams['options'] = ['or' => [["name", "label"], ["custom_group_id.name", "custom_group_id.title"]]]; } $field = civicrm_api3('CustomField', 'get', $customFieldParams); if (empty($field['id'])) { - Civi::$statics['CRM_Core_BAO_CustomField'][$fieldName]['id'] = NULL; - Civi::$statics['CRM_Core_BAO_CustomField'][$fieldName]['string'] = NULL; + Civi::$statics['CRM_Core_BAO_CustomField'][$cacheKey]['id'] = NULL; + Civi::$statics['CRM_Core_BAO_CustomField'][$cacheKey]['string'] = NULL; } else { - Civi::$statics['CRM_Core_BAO_CustomField'][$fieldName]['id'] = $field['id']; - Civi::$statics['CRM_Core_BAO_CustomField'][$fieldName]['string'] = 'custom_' . $field['id']; + Civi::$statics['CRM_Core_BAO_CustomField'][$cacheKey]['id'] = $field['id']; + Civi::$statics['CRM_Core_BAO_CustomField'][$cacheKey]['string'] = 'custom_' . $field['id']; } } if ($fullString) { - return Civi::$statics['CRM_Core_BAO_CustomField'][$fieldName]['string']; + return Civi::$statics['CRM_Core_BAO_CustomField'][$cacheKey]['string']; } - return Civi::$statics['CRM_Core_BAO_CustomField'][$fieldName]['id']; + return Civi::$statics['CRM_Core_BAO_CustomField'][$cacheKey]['id']; } /**