Fix failure to save relative dates on legacy fields
authoreileen <emcnaughton@wikimedia.org>
Mon, 2 Sep 2019 22:50:37 +0000 (10:50 +1200)
committereileen <emcnaughton@wikimedia.org>
Tue, 3 Sep 2019 00:45:01 +0000 (12:45 +1200)
CRM/Contact/BAO/SavedSearch.php
tests/phpunit/api/v3/EventTest.php

index 19942540c58330390218c13ae001d06213a01a16..4037b828565e08991f62fe8ce96bc3eea4248816 100644 (file)
@@ -437,9 +437,29 @@ LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_
     // This is required only until all fields are converted to datepicker fields as the new format is truer to the
     // form format and simply saves (e.g) custom_3_relative => "this.year"
     $relativeDates = ['relative_dates' => []];
-    $specialDateFields = ['event_relative', 'case_from_relative', 'case_to_relative', 'participant_relative', 'log_date_relative'];
+    $specialDateFields = [
+      'event_relative',
+      'case_from_relative',
+      'case_to_relative',
+      'participant_relative',
+      'log_date_relative',
+      'pledge_payment_date_relative',
+      'pledge_start_date_relative',
+      'pledge_end_date_relative',
+      'pledge_create_date_relative',
+      'member_join_date_relative',
+      'member_start_date_relative',
+      'member_end_date_relative',
+      'birth_date_relative',
+      'deceased_date_relative',
+      'mailing_date_relative',
+      'relation_date_relative',
+      'relation_start_date_relative',
+      'relation_end_date_relative',
+      'relation_action_date_relative',
+    ];
     foreach ($formValues as $id => $value) {
-      if ((preg_match('/_date$/', $id) || in_array($id, $specialDateFields)) && !empty($value)) {
+      if (in_array($id, $specialDateFields) && !empty($value)) {
         $entityName = strstr($id, '_date', TRUE);
         if (empty($entityName)) {
           $entityName = strstr($id, '_relative', TRUE);
index 5422b5223c747a72a741a063d0832765ec5a2800..46efb5e8b78b1bd2a42dc8a3e06ad30f5d54891e 100644 (file)
@@ -945,7 +945,7 @@ class api_v3_EventTest extends CiviUnitTestCase {
     ]);
     $eventResult = $this->callAPISuccess('Event', 'getsingle', ['id' => $eventResult['id']]);
     foreach ($templateParams as $param => $value) {
-      $this->assertEquals($value, $eventResult[$param]);
+      $this->assertEquals($value, $eventResult[$param], print_r($eventResult, 1));
     }
   }