示例#1
0
 /**
  * Generate new DAOs and along with entries in civicrm_recurring_entity table.
  *
  * @return array
  */
 public function generateEntities()
 {
     self::setStatus(self::RUNNING);
     $newEntities = array();
     $findCriteria = array();
     if (!empty($this->recursionDates)) {
         if ($this->entity_id) {
             $findCriteria = array('id' => $this->entity_id);
             // save an entry with initiating entity-id & entity-table
             if ($this->entity_table && !$this->find(TRUE)) {
                 $this->parent_id = $this->entity_id;
                 $this->save();
             }
         }
         if (empty($findCriteria)) {
             CRM_Core_Error::fatal("Find criteria missing to generate form. Make sure entity_id and table is set.");
         }
         $count = 0;
         foreach ($this->recursionDates as $key => $dateCols) {
             $newCriteria = $dateCols;
             foreach ($this->overwriteColumns as $col => $val) {
                 $newCriteria[$col] = $val;
             }
             // create main entities
             $obj = CRM_Core_BAO_RecurringEntity::copyCreateEntity($this->entity_table, $findCriteria, $newCriteria, $this->isRecurringEntityRecord);
             if (is_a($obj, 'CRM_Core_DAO') && $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;
                     }
                     // create linked entities
                     $linkedObj = CRM_Core_BAO_RecurringEntity::copyCreateEntity($linkedInfo['table'], $linkedInfo['findCriteria'], $newCriteria, CRM_Utils_Array::value('isRecurringEntityRecord', $linkedInfo, TRUE));
                     if (is_a($linkedObj, 'CRM_Core_DAO') && $linkedObj->id) {
                         $newEntities[$linkedInfo['table']][$count] = $linkedObj->id;
                     }
                 }
             }
             $count++;
         }
     }
     self::$status = NULL;
     return $newEntities;
 }