/** * creates dependent records after creating the parent record * * @param Tinebase_Record_Interface $_createdRecord * @param Tinebase_Record_Interface $_record * @param string $_property * @param array $_fieldConfig */ protected function _createDependentRecords(Tinebase_Record_Interface $_createdRecord, Tinebase_Record_Interface $_record, $_property, $_fieldConfig) { if (!(isset($_fieldConfig['dependentRecords']) || array_key_exists('dependentRecords', $_fieldConfig)) || !$_fieldConfig['dependentRecords']) { return; } if ($_record->has($_property) && $_record->{$_property}) { $recordClassName = $_fieldConfig['recordClassName']; $new = new Tinebase_Record_RecordSet($recordClassName); $ccn = $_fieldConfig['controllerClassName']; $controller = $ccn::getInstance(); // legacy - should be already done in frontend json - remove if all record properties are record sets before getting to controller if (is_array($_record->{$_property})) { $rs = new Tinebase_Record_RecordSet($recordClassName); foreach ($_record->{$_property} as $recordArray) { $rec = new $recordClassName(array(), true); $rec->setFromJsonInUsersTimezone($recordArray); if (strlen($rec->getId()) < 40) { $rec->{$rec->getIdProperty()} = Tinebase_Record_Abstract::generateUID(); } $rs->addRecord($rec); } $_record->{$_property} = $rs; } else { foreach ($_record->{$_property} as $rec) { if (strlen($rec->getId()) < 40) { $rec->{$rec->getIdProperty()} = Tinebase_Record_Abstract::generateUID(); } } } // legacy end if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) { Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Creating ' . $_record->{$_property}->count() . ' dependent records on property ' . $_property . ' for ' . $this->_applicationName . ' ' . $this->_modelName); } foreach ($_record->{$_property} as $record) { $record->{$_fieldConfig['refIdField']} = $_createdRecord->getId(); if (!$record->getId() || strlen($record->getId()) != 40) { $record->{$record->getIdProperty()} = NULL; } $new->add($controller->create($record)); } $_createdRecord->{$_property} = $new->toArray(); } }