return params for generated entities
authorpriyankakaran26 <priyanka.karan26@gmail.com>
Sat, 13 Sep 2014 16:03:42 +0000 (17:03 +0100)
committerdeepak-srivastava <deepak.srivastava.0303@gmail.com>
Fri, 3 Oct 2014 09:08:26 +0000 (10:08 +0100)
CRM/Core/BAO/RecurringEntity.php
tests/phpunit/CRM/Core/BAO/RecurringEntityTest.php

index 6ed728d357ea4016d46f2b57e0f36c594af8167b..29d55f093b57401ceb8210007cfafb7c74125003 100644 (file)
@@ -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++;
       }
     }
 
index 8e9bd7f6cb66919f593fe4f7de742e8b82caefc0..287a96784a4c19b5ee6328c4b75532cdad969b35 100644 (file)
@@ -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