/** * @param string $nodeId * @param ModelRelationsAndAttributesToReportAdapter $modelToReportAdapter * @param RedBeanModel $precedingModel * @param string $precedingRelation */ protected function resolvePrecedingModelRelationAndAdapterByNodeId($nodeId, &$modelToReportAdapter, &$precedingModel, &$precedingRelation) { assert('$modelToReportAdapter instanceof ModelRelationsAndAttributesToReportAdapter'); if ($nodeId == 'source') { return; } $relations = explode(FormModelUtil::RELATION_DELIMITER, $nodeId); $lastRelation = end($relations); foreach ($relations as $relation) { $relationModelClassName = $modelToReportAdapter->getRelationModelClassName($relation); $precedingRelation = $relation; if ($relation != $lastRelation) { $precedingModel = new $relationModelClassName(false); } elseif (count($relations) == 1) { $precedingModel = $modelToReportAdapter->getModel(); } $modelToReportAdapter = $this->makeModelRelationsAndAttributesToReportAdapter($relationModelClassName::getModuleClassName(), $relationModelClassName); } }