Skip to content

Commit

Permalink
Allow modifying parameters of new recurring entities and allow inclus…
Browse files Browse the repository at this point in the history
…ion of date of parent entity
  • Loading branch information
mattwire committed Aug 16, 2018
1 parent 512365b commit e82f3bb
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
19 changes: 14 additions & 5 deletions CRM/Core/BAO/RecurringEntity.php
Original file line number Diff line number Diff line change
Expand Up @@ -226,10 +226,10 @@ public function mode($mode) {
*
* @return array
*/
public function generate() {
public function generate($newParams = []) {
$this->generateRecursiveDates();

return $this->generateEntities();
return $this->generateEntities($newParams);
}

/**
Expand Down Expand Up @@ -263,7 +263,7 @@ public function generateRecursion() {
*
* @return array
*/
public function generateEntities() {
public function generateEntities($newParams = []) {
self::setStatus(self::RUNNING);

$newEntities = array();
Expand All @@ -285,6 +285,9 @@ public function generateEntities() {
$count = 0;
foreach ($this->recursionDates as $key => $dateCols) {
$newCriteria = $dateCols;
if (isset($newParams[$this->entity_table])) {
$newCriteria = array_merge($dateCols, $newParams[$this->entity_table]);
}
foreach ($this->overwriteColumns as $col => $val) {
$newCriteria[$col] = $val;
}
Expand Down Expand Up @@ -343,10 +346,16 @@ public function generateRecursiveDates() {
$exRangeEnd = $this->excludeDateRangeColumns[1];
}

$count = 1;
if ($this->dontSkipStartDate) {
$count = 0;
$this->recursion->count($initialCount+1);
}
else {
$count = 1;
}
while ($result = $this->recursion->next()) {
$skip = FALSE;
if ($result == $this->recursion_start_date) {
if ((!$this->dontSkipStartDate) && $result == $this->recursion_start_date) {
// skip the recursion-start-date from the list we going to generate
$skip = TRUE;
}
Expand Down
8 changes: 7 additions & 1 deletion CRM/Core/Form/RecurringEntity.php
Original file line number Diff line number Diff line change
Expand Up @@ -481,7 +481,13 @@ public static function postProcess($params = array(), $type, $linkedEntities = a
$recursion->linkedEntities = $linkedEntities;
}

$recursion->generate();
if (!empty($params['dont_skip_start_date'])) {
$recursion->dontSkipStartDate = TRUE;
}
if (empty($params['new_params'])) {
$params['new_params'] = [];
}
$recursion->generate($params['new_params']);

$status = ts('Repeat Configuration has been saved');
CRM_Core_Session::setStatus($status, ts('Saved'), 'success');
Expand Down
3 changes: 3 additions & 0 deletions templates/CRM/Core/Form/RecurringEntity.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@
<td class="label">{$form.exclude_date_list.label} {help id="id-exclude-date" entityType=$recurringEntityType file="CRM/Core/Form/RecurringEntity.hlp"}</td>
<td>{$form.exclude_date_list.html}</td>
</tr>
{if $dontSkipStartDate}
{$form.dont_skip_start_date.html}
{/if}
</table>
{if !$recurringFormIsEmbedded}
<div class="crm-submit-buttons">
Expand Down

0 comments on commit e82f3bb

Please sign in to comment.