/** * 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; }
/** * Check if module will be disabled after upgrade * * :TRICKY: check if the "getMajorVersion" is not declared in the main module class * * @param \XLite\Model\Module $module Module to check * * @return boolean */ protected function isModuleToDisable(\XLite\Model\Module $module) { $versionCore = \XLite\Upgrade\Cell::getInstance()->getCoreMajorVersion(); $versionModule = $module->getMajorVersion(); $classModule = \Includes\Utils\ModulesManager::getClassNameByModuleName($module->getActualName()); $reflection = new \ReflectionMethod($classModule, 'getMajorVersion'); $classModule = \Includes\Utils\Converter::prepareClassName($classModule); $classActual = \Includes\Utils\Converter::prepareClassName($reflection->getDeclaringClass()->getName()); return version_compare($versionModule, $versionCore, '<') || $classModule !== $classActual; }
/** * 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; }
/** * Check if class is an LC one * * @param string $name Class name * * @return boolean */ public static function checkIfLCClass($name) { return 0 === strpos(\Includes\Utils\Converter::prepareClassName($name), LC_NAMESPACE); }