Start extracting the transform funcition
authoreileen <emcnaughton@wikimedia.org>
Tue, 19 Jan 2021 01:51:53 +0000 (14:51 +1300)
committereileen <emcnaughton@wikimedia.org>
Mon, 1 Feb 2021 06:30:31 +0000 (19:30 +1300)
CRM/Activity/Import/Parser/Activity.php

index 9b6a2f1291d93df38ce937f4375ddafb792a65e1..106b32ff78d6f6dd7e6f7d2c2c13e2e3c42d9864 100644 (file)
@@ -159,12 +159,7 @@ class CRM_Activity_Import_Parser_Activity extends CRM_Activity_Import_Parser {
     catch (CRM_Core_Exception $e) {
       return $this->addError($values, [$e->getMessage()]);
     }
-
-    $params = $this->getActiveFieldParams();
-    $activityLabel = array_search('activity_label', $this->_mapperKeys);
-    if ($activityLabel) {
-      $params = array_merge($params, ['activity_label' => $values[$activityLabel]]);
-    }
+    $params = $this->getApiReadyParams($values);
     // For date-Formats.
     $session = CRM_Core_Session::singleton();
     $dateType = $session->get('dateTypes');
@@ -421,4 +416,24 @@ class CRM_Activity_Import_Parser_Activity extends CRM_Activity_Import_Parser {
     $this->validateCustomFields($values);
   }
 
+  /**
+   * Get array of parameters formatted for the api from the submitted values.
+   *
+   * @param array $values
+   *
+   * @return array
+   */
+  protected function getApiReadyParams(array $values): array {
+    $this->setActiveFieldValues($values);
+    $params = $this->getActiveFieldParams();
+    if ($this->getFieldValue($values, 'activity_label')) {
+      $params['activity_type_id'] = array_search(
+         $this->getFieldValue($values, 'activity_label'),
+         CRM_Activity_BAO_Activity::buildOptions('activity_type_id', 'create'),
+        TRUE
+      );
+    }
+    return $params;
+  }
+
 }