From 3c15495c6a8ba2fba27398bd4e48f3938d546b46 Mon Sep 17 00:00:00 2001 From: eileen Date: Wed, 17 Jul 2013 16:35:17 +1200 Subject: [PATCH] CRM-13067 code tidy up - move import specific function to import class --- CRM/Member/Import/Parser/Membership.php | 154 +++++++++++++++++++++++- CRM/Utils/DeprecatedUtils.php | 145 ---------------------- 2 files changed, 151 insertions(+), 148 deletions(-) diff --git a/CRM/Member/Import/Parser/Membership.php b/CRM/Member/Import/Parser/Membership.php index bafe8e31ea..70f02e77a5 100644 --- a/CRM/Member/Import/Parser/Membership.php +++ b/CRM/Member/Import/Parser/Membership.php @@ -344,9 +344,10 @@ class CRM_Member_Import_Parser_Membership extends CRM_Member_Import_Parser { $formatValues[$key] = $field; } - require_once 'CRM/Utils/DeprecatedUtils.php'; - //TODO calling API function directly is unsupported. - $formatError = _civicrm_api3_deprecated_membership_format_params($formatValues, $formatted, TRUE); + + //format params to meet api v2 requirements. + //@todo find a way to test removing this formatting + $formatError = $this->membership_format_params($formatValues, $formatted, TRUE); if ($formatError) { array_unshift($values, $formatError['error_message']); @@ -616,5 +617,152 @@ class CRM_Member_Import_Parser_Membership extends CRM_Member_Import_Parser { } } } + /** + * @deprecated - this function formats params according to v2 standards but + * need to be sure about the impact of not calling it so retaining on the import class + * take the input parameter list as specified in the data model and + * convert it into the same format that we use in QF and BAO object + * + * @param array $params Associative array of property name/value + * pairs to insert in new contact. + * @param array $values The reformatted properties that we can use internally + * + * @param array $create Is the formatted Values array going to + * be used for CRM_Member_BAO_Membership:create() + * + * @return array|error + * @access public + */ + function membership_format_params($params, &$values, $create = FALSE) { + require_once 'api/v3/utils.php'; + $fields = CRM_Member_DAO_Membership::fields(); + _civicrm_api3_store_values($fields, $params, $values); + + $customFields = CRM_Core_BAO_CustomField::getFields( 'Membership'); + + foreach ($params as $key => $value) { + // ignore empty values or empty arrays etc + if (CRM_Utils_System::isNull($value)) { + continue; + } + + //Handling Custom Data + if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($key)) { + $values[$key] = $value; + $type = $customFields[$customFieldID]['html_type']; + if( $type == 'CheckBox' || $type == 'Multi-Select' || $type == 'AdvMulti-Select') { + $mulValues = explode( ',' , $value ); + $customOption = CRM_Core_BAO_CustomOption::getCustomOption($customFieldID, true); + $values[$key] = array(); + foreach( $mulValues as $v1 ) { + foreach($customOption as $customValueID => $customLabel) { + $customValue = $customLabel['value']; + if (( strtolower($customLabel['label']) == strtolower(trim($v1)) ) || + ( strtolower($customValue) == strtolower(trim($v1)) )) { + if ( $type == 'CheckBox' ) { + $values[$key][$customValue] = 1; + } else { + $values[$key][] = $customValue; + } + } + } + } + } + } + + switch ($key) { + case 'membership_contact_id': + if (!CRM_Utils_Rule::integer($value)) { + return civicrm_api3_create_error("contact_id not valid: $value"); + } + $dao = new CRM_Core_DAO(); + $qParams = array(); + $svq = $dao->singleValueQuery("SELECT id FROM civicrm_contact WHERE id = $value", + $qParams + ); + if (!$svq) { + return civicrm_api3_create_error("Invalid Contact ID: There is no contact record with contact_id = $value."); + } + $values['contact_id'] = $values['membership_contact_id']; + unset($values['membership_contact_id']); + break; + + case 'membership_type_id': + if (!CRM_Utils_Array::value($value, CRM_Member_PseudoConstant::membershipType())) { + return civicrm_api3_create_error('Invalid Membership Type Id'); + } + $values[$key] = $value; + break; + + case 'membership_type': + $membershipTypeId = CRM_Utils_Array::key(ucfirst($value), + CRM_Member_PseudoConstant::membershipType() + ); + if ($membershipTypeId) { + if (CRM_Utils_Array::value('membership_type_id', $values) && + $membershipTypeId != $values['membership_type_id'] + ) { + return civicrm_api3_create_error('Mismatched membership Type and Membership Type Id'); + } + } + else { + return civicrm_api3_create_error('Invalid Membership Type'); + } + $values['membership_type_id'] = $membershipTypeId; + break; + + case 'status_id': + if (!CRM_Utils_Array::value($value, CRM_Member_PseudoConstant::membershipStatus())) { + return civicrm_api3_create_error('Invalid Membership Status Id'); + } + $values[$key] = $value; + break; + + case 'membership_status': + $membershipStatusId = CRM_Utils_Array::key(ucfirst($value), + CRM_Member_PseudoConstant::membershipStatus() + ); + if ($membershipStatusId) { + if (CRM_Utils_Array::value('status_id', $values) && + $membershipStatusId != $values['status_id'] + ) { + return civicrm_api3_create_error('Mismatched membership Status and Membership Status Id'); + } + } + else { + return civicrm_api3_create_error('Invalid Membership Status'); + } + $values['status_id'] = $membershipStatusId; + break; + + default: + break; + } + } + + _civicrm_api3_custom_format_params($params, $values, 'Membership'); + + + if ($create) { + // CRM_Member_BAO_Membership::create() handles membership_start_date, + // membership_end_date and membership_source. So, if $values contains + // membership_start_date, membership_end_date or membership_source, + // convert it to start_date, end_date or source + $changes = array( + 'membership_start_date' => 'start_date', + 'membership_end_date' => 'end_date', + 'membership_source' => 'source', + ); + + foreach ($changes as $orgVal => $changeVal) { + if (isset($values[$orgVal])) { + $values[$changeVal] = $values[$orgVal]; + unset($values[$orgVal]); + } + } + } + + return NULL; + } } diff --git a/CRM/Utils/DeprecatedUtils.php b/CRM/Utils/DeprecatedUtils.php index 8177c20756..c6c23ddd9d 100644 --- a/CRM/Utils/DeprecatedUtils.php +++ b/CRM/Utils/DeprecatedUtils.php @@ -1220,152 +1220,7 @@ function _civicrm_api3_deprecated_validate_formatted_contact(&$params) { return civicrm_api3_create_success(TRUE); } -/** - * take the input parameter list as specified in the data model and - * convert it into the same format that we use in QF and BAO object - * - * @param array $params Associative array of property name/value - * pairs to insert in new contact. - * @param array $values The reformatted properties that we can use internally - * - * @param array $create Is the formatted Values array going to - * be used for CRM_Member_BAO_Membership:create() - * - * @return array|error - * @access public - */ -function _civicrm_api3_deprecated_membership_format_params($params, &$values, $create = FALSE) { - - $fields = CRM_Member_DAO_Membership::fields(); - _civicrm_api3_store_values($fields, $params, $values); - - require_once 'CRM/Core/OptionGroup.php'; - $customFields = CRM_Core_BAO_CustomField::getFields( 'Membership'); - foreach ($params as $key => $value) { - // ignore empty values or empty arrays etc - if (CRM_Utils_System::isNull($value)) { - continue; - } - - //Handling Custom Data - if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($key)) { - $values[$key] = $value; - $type = $customFields[$customFieldID]['html_type']; - if( $type == 'CheckBox' || $type == 'Multi-Select' || $type == 'AdvMulti-Select') { - $mulValues = explode( ',' , $value ); - $customOption = CRM_Core_BAO_CustomOption::getCustomOption($customFieldID, true); - $values[$key] = array(); - foreach( $mulValues as $v1 ) { - foreach($customOption as $customValueID => $customLabel) { - $customValue = $customLabel['value']; - if (( strtolower($customLabel['label']) == strtolower(trim($v1)) ) || - ( strtolower($customValue) == strtolower(trim($v1)) )) { - if ( $type == 'CheckBox' ) { - $values[$key][$customValue] = 1; - } else { - $values[$key][] = $customValue; - } - } - } - } - } - } - - switch ($key) { - case 'membership_contact_id': - if (!CRM_Utils_Rule::integer($value)) { - return civicrm_api3_create_error("contact_id not valid: $value"); - } - $dao = new CRM_Core_DAO(); - $qParams = array(); - $svq = $dao->singleValueQuery("SELECT id FROM civicrm_contact WHERE id = $value", - $qParams - ); - if (!$svq) { - return civicrm_api3_create_error("Invalid Contact ID: There is no contact record with contact_id = $value."); - } - $values['contact_id'] = $values['membership_contact_id']; - unset($values['membership_contact_id']); - break; - - case 'membership_type_id': - if (!CRM_Utils_Array::value($value, CRM_Member_PseudoConstant::membershipType())) { - return civicrm_api3_create_error('Invalid Membership Type Id'); - } - $values[$key] = $value; - break; - - case 'membership_type': - $membershipTypeId = CRM_Utils_Array::key(ucfirst($value), - CRM_Member_PseudoConstant::membershipType() - ); - if ($membershipTypeId) { - if (CRM_Utils_Array::value('membership_type_id', $values) && - $membershipTypeId != $values['membership_type_id'] - ) { - return civicrm_api3_create_error('Mismatched membership Type and Membership Type Id'); - } - } - else { - return civicrm_api3_create_error('Invalid Membership Type'); - } - $values['membership_type_id'] = $membershipTypeId; - break; - - case 'status_id': - if (!CRM_Utils_Array::value($value, CRM_Member_PseudoConstant::membershipStatus())) { - return civicrm_api3_create_error('Invalid Membership Status Id'); - } - $values[$key] = $value; - break; - - case 'membership_status': - $membershipStatusId = CRM_Utils_Array::key(ucfirst($value), - CRM_Member_PseudoConstant::membershipStatus() - ); - if ($membershipStatusId) { - if (CRM_Utils_Array::value('status_id', $values) && - $membershipStatusId != $values['status_id'] - ) { - return civicrm_api3_create_error('Mismatched membership Status and Membership Status Id'); - } - } - else { - return civicrm_api3_create_error('Invalid Membership Status'); - } - $values['status_id'] = $membershipStatusId; - break; - - default: - break; - } - } - - _civicrm_api3_custom_format_params($params, $values, 'Membership'); - - - if ($create) { - // CRM_Member_BAO_Membership::create() handles membership_start_date, - // membership_end_date and membership_source. So, if $values contains - // membership_start_date, membership_end_date or membership_source, - // convert it to start_date, end_date or source - $changes = array( - 'membership_start_date' => 'start_date', - 'membership_end_date' => 'end_date', - 'membership_source' => 'source', - ); - - foreach ($changes as $orgVal => $changeVal) { - if (isset($values[$orgVal])) { - $values[$changeVal] = $values[$orgVal]; - unset($values[$orgVal]); - } - } - } - - return NULL; -} /** * @deprecated - this is part of the import parser not the API & needs to be moved on out -- 2.25.1