CRM-13234 use translated profile id
authoreileen <eileen@fuzion.co.nz>
Wed, 21 Aug 2013 04:35:18 +0000 (16:35 +1200)
committereileen <eileen@fuzion.co.nz>
Wed, 21 Aug 2013 04:35:18 +0000 (16:35 +1200)
api/v3/Profile.php
api/v3/examples/ProfileGetFields.php

index d470a0620f3abcb009d4381ca4b4eb9f7177cc29..7c41d54d96d70f2c5776aa475ccde60764450d0b 100644 (file)
@@ -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
index c4ab716249ae2119c3f1fcbd466215d0ba87c4f6..4ec751934410cd8a8aa38876739682f5fea17623 100644 (file)
@@ -138,6 +138,7 @@ function profile_getfields_expectedresult(){
           'date_format' => '',
           'time_format' => '',
           'name' => 'custom_1',
+          'type' => 2,
         ),
       'profile_id' => array(
           'api.required' => true,