From 4bcfd71fef8645b058c07d85485c6e8db7346942 Mon Sep 17 00:00:00 2001 From: eileen Date: Wed, 21 Aug 2013 16:35:18 +1200 Subject: [PATCH] CRM-13234 use translated profile id --- api/v3/Profile.php | 29 ++++++++++++---------------- api/v3/examples/ProfileGetFields.php | 1 + 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/api/v3/Profile.php b/api/v3/Profile.php index d470a0620f..7c41d54d96 100644 --- a/api/v3/Profile.php +++ b/api/v3/Profile.php @@ -148,19 +148,21 @@ function _civicrm_api3_profile_get_spec(&$params) { */ function civicrm_api3_profile_submit($params) { $profileID = _civicrm_api3_profile_getProfileID($params['profile_id']); - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $params['profile_id'], 'is_active')) { + + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $profileID, 'is_active')) { + //@todo declare pseudoconstant & let api do this throw new API_Exception('Invalid value for profile_id'); } - $isContactActivityProfile = CRM_Core_BAO_UFField::checkContactActivityProfileType($params['profile_id']); + $isContactActivityProfile = CRM_Core_BAO_UFField::checkContactActivityProfileType($profileID); - if (CRM_Core_BAO_UFField::checkProfileType($params['profile_id']) && !$isContactActivityProfile) { - throw new API_Exception('Can not retrieve values for profiles include fields for more than one record type.'); + if (!empty($params['id']) && CRM_Core_BAO_UFField::checkProfileType($profileID) && !$isContactActivityProfile) { + throw new API_Exception('Update profiles including more than one entity not currently supported'); } $contactParams = $activityParams = $missingParams = array(); - $profileFields = CRM_Core_BAO_UFGroup::getFields($params['profile_id'], + $profileFields = CRM_Core_BAO_UFGroup::getFields($profileID, FALSE, NULL, NULL, @@ -177,7 +179,7 @@ function civicrm_api3_profile_submit($params) { $errors = CRM_Profile_Form::validateContactActivityProfile($params['activity_id'], $params['contact_id'], - $params['profile_id'] + $profileID ); if (!empty($errors)) { throw new API_Exception(array_pop($errors)); @@ -212,9 +214,8 @@ function civicrm_api3_profile_submit($params) { throw new API_Exception("Missing required parameters for profile id {$params['profile_id']}: " . implode(', ', $missingParams)); } - $contactParams['version'] = 3; $contactParams['contact_id'] = CRM_Utils_Array::value('contact_id', $params); - $contactParams['profile_id'] = $params['profile_id']; + $contactParams['profile_id'] = $profileID; $contactParams['skip_custom'] = 1; $contactProfileParams = civicrm_api3_profile_apply($contactParams); @@ -245,7 +246,7 @@ function civicrm_api3_profile_submit($params) { return civicrm_api3('contact', 'create', $profileParams); $ufGroupDetails = array(); - $ufGroupParams = array('id' => $params['profile_id']); + $ufGroupParams = array('id' => $profileID); CRM_Core_BAO_UFGroup::retrieve($ufGroupParams, $ufGroupDetails); if (isset($profileFields['group'])) { @@ -325,12 +326,6 @@ function civicrm_api3_profile_set($params) { */ function civicrm_api3_profile_apply($params) { - civicrm_api3_verify_mandatory($params, NULL, array('profile_id')); - - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $params['profile_id'], 'is_active')) { - return civicrm_api3_create_error('Invalid value for profile_id'); - } - $profileFields = CRM_Core_BAO_UFGroup::getFields($params['profile_id'], FALSE, NULL, @@ -577,7 +572,7 @@ function _civicrm_api3_map_profile_fields_to_entity(&$field) { * how we add a a pseudoconstant to this pseudoapi to make that work */ function _civicrm_api3_profile_getProfileID($profileID) { - if(!empty($profileID) && !strtolower($profileID) == 'billing' && !is_numeric($profileID)) { + if(!empty($profileID) && strtolower($profileID) != 'billing' && !is_numeric($profileID)) { $profileID = civicrm_api3('uf_group', 'getvalue', array('return' => 'id', 'name' => $profileID)); } return $profileID; @@ -604,7 +599,7 @@ function _civicrm_api3_profile_appendaliases($values, $entity) { } //special case on membership & contribution - can't see how to handle in a generic way if(in_array($entity, array('Membership', 'Contribution'))) { - $values['send_receipt'] = array('title' => 'Send Receipt', 'type' => 16); + $values['send_receipt'] = array('title' => 'Send Receipt', 'type' => (int) 16); } return $values; } \ No newline at end of file diff --git a/api/v3/examples/ProfileGetFields.php b/api/v3/examples/ProfileGetFields.php index c4ab716249..4ec7519344 100644 --- a/api/v3/examples/ProfileGetFields.php +++ b/api/v3/examples/ProfileGetFields.php @@ -138,6 +138,7 @@ function profile_getfields_expectedresult(){ 'date_format' => '', 'time_format' => '', 'name' => 'custom_1', + 'type' => 2, ), 'profile_id' => array( 'api.required' => true, -- 2.25.1