CRM-15625 - Add support for contribution api honor_type_id param
authorColeman Watts <coleman@civicrm.org>
Thu, 20 Nov 2014 21:16:39 +0000 (16:16 -0500)
committerColeman Watts <coleman@civicrm.org>
Thu, 20 Nov 2014 21:16:39 +0000 (16:16 -0500)
CRM/Contribute/BAO/Contribution.php
api/v3/Contribution.php

index bffeb39cd3e139b8dc9ead66327ad99fc691460c..2e0fc7551fef722909a774ba44c79c200ea7fdb6 100644 (file)
@@ -3093,6 +3093,13 @@ WHERE  contribution_id = %1 ";
           $types = (array) CRM_Utils_Array::value('payment_processor', $page, 0);
           $params['condition'] = 'id IN (' . implode(',', $types) . ')';
         }
+        break;
+      // CRM-13981 This field was combined with soft_credits in 4.5 but the api still supports it
+      case 'honor_type_id':
+        $className = 'CRM_Contribute_BAO_ContributionSoft';
+        $fieldName = 'soft_credit_type_id';
+        $params['condition'] = "v.name IN ('in_honor_of','in_memory_of')";
+        break;
     }
     return CRM_Core_PseudoConstant::get($className, $fieldName, $params, $context);
   }
index 80216edb4ca03ebabcc91dcb1f997b9de79e974b..052d488ca058157de8f6999927cb384ac6022067 100644 (file)
@@ -100,18 +100,25 @@ function _civicrm_api3_contribution_create_spec(&$params) {
   );
   $params['soft_credit_to'] = array(
     'name' => 'soft_credit_to',
-    'title' => 'Soft Credit contact ID',
+    'title' => 'Soft Credit contact ID (legacy)',
     'type' => 1,
-    'description' => 'ID of Contact to be Soft credited to',
+    'description' => 'ID of Contact to be Soft credited to (deprecated - use contribution_soft api)',
     'FKClassName' => 'CRM_Contact_DAO_Contact',
   );
   $params['honor_contact_id'] = array(
     'name' => 'honor_contact_id',
-    'title' => 'Honoree contact ID',
+    'title' => 'Honoree contact ID (legacy)',
     'type' => 1,
-    'description' => 'ID of honoree contact',
+    'description' => 'ID of honoree contact (deprecated - use contribution_soft api)',
     'FKClassName' => 'CRM_Contact_DAO_Contact',
   );
+  $params['honor_type_id'] = array(
+    'name' => 'honor_type_id',
+    'title' => 'Honoree Type (legacy)',
+    'type' => 1,
+    'description' => 'Type of honoree contact (deprecated - use contribution_soft api)',
+    'pseudoconstant' => TRUE,
+  );
   // note this is a recommended option but not adding as a default to avoid
   // creating unnecessary changes for the dev
   $params['skipRecentView'] = array(
@@ -143,16 +150,18 @@ function _civicrm_api3_contribution_create_spec(&$params) {
 function _civicrm_api3_contribution_create_legacy_support_45(&$params){
   //legacy soft credit handling - recommended approach is chaining
   if(!empty($params['soft_credit_to'])){
-    $params['soft_credit'] = array(array(
+    $params['soft_credit'][] = array(
       'contact_id'          => $params['soft_credit_to'],
       'amount'              => $params['total_amount'],
-      'soft_credit_type_id' => CRM_Core_OptionGroup::getDefaultValue("soft_credit_type")));
+      'soft_credit_type_id' => CRM_Core_OptionGroup::getDefaultValue("soft_credit_type")
+    );
   }
   if(!empty($params['honor_contact_id'])){
-    $params['soft_credit'] = array(array(
+    $params['soft_credit'][] = array(
       'contact_id'          => $params['honor_contact_id'],
       'amount'              => $params['total_amount'],
-      'soft_credit_type_id' => CRM_Core_OptionGroup::getValue('soft_credit_type', 'in_honor_of', 'name')));
+      'soft_credit_type_id' => CRM_Utils_Array::value('honor_type_id', $params, CRM_Core_OptionGroup::getValue('soft_credit_type', 'in_honor_of', 'name'))
+    );
   }
 }