/** * Returns repository class for model class of current node * * @param \Includes\Decorator\DataStructure\Graph\Classes $node Current node * * @return string */ protected function getRepositoryClass(\Includes\Decorator\DataStructure\Graph\Classes $node) { $repositoryClass = null; if (!($node->isLowLevelNode() || $node->isTopLevelNode() || !$node->isDecorator())) { $children = $node->getChildren(); $repositoryClass = isset($children[0]) ? $this->getRepositoryClass($children[0]) : $this->getDefaultRepositoryClass(''); } else { $repositoryClass = \Includes\Utils\Converter::getPureClassName($node->getClass()); $repositoryClass = \Includes\Utils\Converter::prepareClassName(str_replace('\\Model\\', '\\Model\\Repo\\', $repositoryClass), false); if (!\XLite\Core\Operator::isClassExists($repositoryClass)) { $repositoryClass = $this->getDefaultRepositoryClass($repositoryClass); } } return $repositoryClass; }
/** * Detect custom repository class name by entity class name * * @param string $class Entity class name * * @return string */ protected function detectCustomRepositoryClassName($class) { $class = \Includes\Utils\Converter::getPureClassName($class); $class = \Includes\Utils\Converter::prepareClassName(str_replace('\\Model\\', '\\Model\\Repo\\', $class), false); if (!\XLite\Core\Operator::isClassExists($class)) { $class = '\\XLite\\Model\\Repo\\Base\\' . (preg_match('/\\wTranslation$/Ss', $class) ? 'Translation' : 'Common'); } elseif (\Includes\Pattern\Factory::getClassHandler($class)->isAbstract()) { $class = null; } return $class; }
/** * Return the array of substitutes for the "owner" template * * @param \Doctrine\ORM\Mapping\ClassMetadata $main Current multilang model class metadata * * @return array */ protected function getOwnerSubstitutes(\Doctrine\ORM\Mapping\ClassMetadata $main) { return array('____OWNER_CLASS____' => \Includes\Utils\Converter::getPureClassName($main->name), '____MAIN_CLASS____' => \Includes\Utils\Converter::getPureClassName($main->name), '____MAIN_CLASS_ID____' => array_shift($main->identifier)); }