'relationship_start_date' => 'relation_start',
'relationship_end_date' => 'relation_end',
'event' => 'event',
+ 'created_date' => 'log',
+ 'modified_date' => 'log',
];
foreach ($fields as $field) {
}
+ public function renameLogFields() {
+ $addedDate = FALSE;
+ foreach ($this->getSearchesWithField('log_date') as $savedSearch) {
+ $formValues = $savedSearch['form_values'];
+ foreach ($formValues as $index => $formValue) {
+ if (isset($formValue[0]) && $formValue[0] === 'log_date') {
+ if ($formValue[2] == 1) {
+ $addedDate = TRUE;
+ }
+ else {
+ $addedDate = FALSE;
+ }
+ }
+ if (isset($formValue[0]) && ($formValue[0] === 'log_date_high' || $formValue[0] === 'log_date_low')) {
+ $isHigh = substr($index, -5, 5) === '_high';
+ if ($addedDate) {
+ $fieldName = 'created_date';
+ }
+ else {
+ $fieldName = 'modified_date';
+ }
+ if ($isHigh) {
+ $fieldName .= '_high';
+ }
+ else {
+ $fieldName .= '_low';
+ }
+ $formValues[$index][0] = $fieldName;
+ }
+ }
+ if ($formValues !== $savedSearch['form_values']) {
+ civicrm_api3('SavedSearch', 'create', ['id' => $savedSearch['id'], 'form_values' => $formValues]);
+ }
+ }
+ }
+
}
['old' => 'event_end_date_high', 'new' => 'event_high'],
],
]);
+ $this->addTask('Convert Log date searches to their final names either created date or modified date', 'updateSmartGroups', [
+ 'renameLogFields' => [],
+ ]);
$this->addTask('Update smart groups where jcalendar fields have been converted to datepicker', 'updateSmartGroups', [
'datepickerConversion' => [
'birth_date',
'relationship_end_date',
'event',
'relation_active_period_date',
+ 'created_date',
+ 'modified_date',
],
]);
$this->addTask('Clean up unused table "civicrm_persistent"', 'dropTableIfEmpty', 'civicrm_persistent');
}
}
+ /**
+ * Test Log Date conversion
+ */
+ public function testLogDateConversion() {
+ // Create two sets of searches one set for added by and one for modified by
+ // Each set contains a relative search on this.month and a specific date search low
+ $this->callAPISuccess('SavedSearch', 'create', [
+ 'form_values' => [
+ ['log_date', '=', 1],
+ ['log_date_low', '=', '20191001000000'],
+ ['log_date_high', '=', '20191031235959'],
+ 'relative_dates' => [
+ 'log' => 'this.month',
+ ],
+ ],
+ ]);
+ $this->callAPISuccess('SavedSearch', 'create', [
+ 'form_values' => [
+ ['log_date', '=', 1],
+ ['log_date_low', '=', '20191001000000'],
+ ],
+ ]);
+ $this->callAPISuccess('SavedSearch', 'create', [
+ 'form_values' => [
+ ['log_date', '=', 2],
+ ['log_date_low', '=', '20191001000000'],
+ ['log_date_high', '=', '20191031235959'],
+ 'relative_dates' => [
+ 'log' => 'this.month',
+ ],
+ ],
+ ]);
+ $this->callAPISuccess('SavedSearch', 'create', [
+ 'form_values' => [
+ ['log_date', '=', 2],
+ ['log_date_low', '=', '20191001000000'],
+ ],
+ ]);
+ $smartGroupConversionObject = new CRM_Upgrade_Incremental_SmartGroups();
+ $smartGroupConversionObject->renameLogFields();
+ $smartGroupConversionObject->updateGroups([
+ 'datepickerConversion' => [
+ 'created_date',
+ 'modified_date',
+ ],
+ ]);
+ $savedSearhes = $this->callAPISuccess('SavedSearch', 'get', []);
+ $expectedResults = [
+ 1 => [
+ 0 => ['log_date', '=', 1],
+ 'relative_dates' => [],
+ 3 => ['created_date_relative', '=', 'this.month'],
+ ],
+ 2 => [
+ 0 => ['log_date', '=', 1],
+ 1 => ['created_date_low', '=', '2019-10-01 00:00:00'],
+ 2 => ['created_date_relative', '=', 0],
+ ],
+ 3 => [
+ 0 => ['log_date', '=', 2],
+ 'relative_dates' => [],
+ 3 => ['modified_date_relative', '=', 'this.month'],
+ ],
+ 4 => [
+ 0 => ['log_date', '=', 2],
+ 1 => ['modified_date_low', '=', '2019-10-01 00:00:00'],
+ 2 => ['modified_date_relative', '=', 0],
+ ],
+ ];
+ }
+
/**
* Test converting relationship fields
*/