From 342c3f9e5b13705fe19c8b0943df797a42287876 Mon Sep 17 00:00:00 2001 From: priyankakaran26 Date: Sat, 13 Sep 2014 17:03:42 +0100 Subject: [PATCH] return params for generated entities --- CRM/Core/BAO/RecurringEntity.php | 9 ++++- .../CRM/Core/BAO/RecurringEntityTest.php | 39 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/CRM/Core/BAO/RecurringEntity.php b/CRM/Core/BAO/RecurringEntity.php index 6ed728d357..29d55f093b 100644 --- a/CRM/Core/BAO/RecurringEntity.php +++ b/CRM/Core/BAO/RecurringEntity.php @@ -150,6 +150,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity { CRM_Core_Error::fatal("Find criteria missing to generate from. Make sure entity_id and table is set."); } + $count = 0; foreach ($this->recursionDates as $key => $dateCols) { $newCriteria = $dateCols; foreach ($this->overwriteColumns as $col => $val) { @@ -163,6 +164,8 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity { if ($obj->id) { $newCriteria = array(); + $newEntities[$this->entity_table][$count] = $obj->id; + foreach ($this->linkedEntities as $linkedInfo) { foreach ($linkedInfo['linkedColumns'] as $col) { $newCriteria[$col] = $obj->id; @@ -172,9 +175,13 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity { $newCriteria, CRM_Utils_Array::value('isRecurringEntityRecord', $linkedInfo, TRUE) ); + + if ($linkedObj->id) { + $newEntities[$linkedInfo['table']][$count] = $linkedObj->id; + } } } - $newEntities[] = $obj->id; + $count++; } } diff --git a/tests/phpunit/CRM/Core/BAO/RecurringEntityTest.php b/tests/phpunit/CRM/Core/BAO/RecurringEntityTest.php index 8e9bd7f6cb..287a96784a 100644 --- a/tests/phpunit/CRM/Core/BAO/RecurringEntityTest.php +++ b/tests/phpunit/CRM/Core/BAO/RecurringEntityTest.php @@ -136,6 +136,45 @@ class CRM_Core_BAO_RecurringEntityTest extends CiviUnitTestCase { 'used_for' => 'event' ); + $recursion->linkedEntities = array( + array( + 'table' => 'civicrm_price_set_entity', + 'findCriteria' => array( + 'entity_id' => $recursion->entity_id, + 'entity_table' => 'civicrm_event' + ), + 'linkedColumns' => array('entity_id'), + 'isRecurringEntityRecord' => FALSE, + ), + array( + 'table' => 'civicrm_uf_join', + 'findCriteria' => array( + 'entity_id' => $recursion->entity_id, + 'entity_table' => 'civicrm_event' + ), + 'linkedColumns' => array('entity_id'), + 'isRecurringEntityRecord' => FALSE, + ), + array( + 'table' => 'civicrm_tell_friend', + 'findCriteria' => array( + 'entity_id' => $recursion->entity_id, + 'entity_table' => 'civicrm_event' + ), + 'linkedColumns' => array('entity_id'), + 'isRecurringEntityRecord' => TRUE, + ), + array( + 'table' => 'civicrm_pcp_block', + 'findCriteria' => array( + 'entity_id' => $recursion->entity_id, + 'entity_table' => 'civicrm_event' + ), + 'linkedColumns' => array('entity_id'), + 'isRecurringEntityRecord' => TRUE, + ), + ); + $generatedEntities = $recursion->generate(); // set mode to ALL, i.e any change to changing event affects all related recurring activities -- 2.25.1