From 7355d78876470487d769e68bbd8efb7c70b9303b Mon Sep 17 00:00:00 2001 From: Pengyi Zhang Date: Thu, 15 Aug 2019 09:32:37 +1000 Subject: [PATCH] CIVICRM-1223 adopt to the latest When package and handle error when generate recursion --- CRM/Core/BAO/RecurringEntity.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/CRM/Core/BAO/RecurringEntity.php b/CRM/Core/BAO/RecurringEntity.php index 95ef8907ecb0..0639f3275bc0 100644 --- a/CRM/Core/BAO/RecurringEntity.php +++ b/CRM/Core/BAO/RecurringEntity.php @@ -31,8 +31,10 @@ * @copyright CiviCRM LLC (c) 2004-2019 */ -require_once 'packages/When/When.php'; +require_once 'packages/When/src/Valid.php'; +require_once 'packages/When/src/When.php'; +use When\When; /** * Class CRM_Core_BAO_RecurringEntity. */ @@ -334,7 +336,7 @@ public function generateRecursiveDates() { $this->generateRecursion(); $recursionDates = []; - if (is_a($this->recursion, 'When')) { + if (is_a($this->recursion, 'When\When')) { $initialCount = CRM_Utils_Array::value('start_action_offset', $this->schedule); $exRangeStart = $exRangeEnd = NULL; @@ -344,7 +346,13 @@ public function generateRecursiveDates() { } $count = 1; - while ($result = $this->recursion->next()) { + try { + $this->recursion->generateOccurrences(); + } catch (Exception $e) { + CRM_Core_Error::statusBounce($e->getMessage()); + return $recursionDates; + } + foreach ($this->recursion->occurrences as $result) { $skip = FALSE; if ($result == $this->recursion_start_date) { // skip the recursion-start-date from the list we going to generate @@ -1010,7 +1018,8 @@ public function getRecursionFromSchedule($scheduleReminderDetails = []) { $repetition_frequency_unit = "dai"; } $repetition_frequency_unit = $repetition_frequency_unit . 'ly'; - $r->recur($start, $repetition_frequency_unit); + $r->startDate($start) + ->freq($repetition_frequency_unit); } if ($scheduleReminderDetails['repetition_frequency_interval']) {