/** * Get and merge hook data by checking the files exist in $hookDirs * * @param array $hookDirs - it can be an array('Espo/Hooks', 'Espo/Custom/Hooks', 'Espo/Modules/Crm/Hooks') * * @return array */ protected function getHookData($hookDirs) { if (is_string($hookDirs)) { $hookDirs = (array) $hookDirs; } $hooks = array(); foreach ($hookDirs as $hookDir) { if (file_exists($hookDir)) { $fileList = $this->getFileManager()->getFileList($hookDir, 1, '\\.php$', 'file'); foreach ($fileList as $scopeName => $hookFiles) { $hookScopeDirPath = Util::concatPath($hookDir, $scopeName); $scopeHooks = array(); foreach ($hookFiles as $hookFile) { $hookFilePath = Util::concatPath($hookScopeDirPath, $hookFile); $className = Util::getClassName($hookFilePath); foreach ($this->hookList as $hookName) { if (method_exists($className, $hookName)) { $scopeHooks[$hookName][$className::$order][] = $className; } } } //sort hooks by order foreach ($scopeHooks as $hookName => $hookList) { ksort($hookList); $sortedHookList = array(); foreach ($hookList as $hookDetails) { $sortedHookList = array_merge($sortedHookList, $hookDetails); } $hooks[$scopeName][$hookName] = isset($hooks[$scopeName][$hookName]) ? array_merge($hooks[$scopeName][$hookName], $sortedHookList) : $sortedHookList; } } } } return $hooks; }
public function testGetClassName() { $this->assertEquals('\\Espo\\EntryPoints\\Donwload', Util::getClassName('application/Espo/EntryPoints/Donwload.php')); $this->assertEquals('\\Espo\\EntryPoints\\Donwload', Util::getClassName('custom/Espo/EntryPoints/Donwload.php')); $this->assertEquals('\\Espo\\EntryPoints\\Donwload', Util::getClassName('Espo/EntryPoints/Donwload.php')); $this->assertEquals('\\Espo\\EntryPoints\\Donwload', Util::getClassName('application/Espo/EntryPoints/Donwload')); }
protected function getClassNameHash($dirs) { if (is_string($dirs)) { $dirs = (array) $dirs; } $data = array(); foreach ($dirs as $dir) { if (file_exists($dir)) { $fileList = $this->getFileManager()->getFileList($dir, false, '\\.php$', 'file'); foreach ($fileList as $file) { $filePath = Util::concatPath($dir, $file); $className = Util::getClassName($filePath); $fileName = $this->getFileManager()->getFileName($filePath); $data[$fileName] = $className; } } } return $data; }
protected function initFieldTypes() { foreach ($this->fieldTypePaths as $path) { $typeList = $this->getFileManager()->getFileList($path, false, '\\.php$'); if ($typeList !== false) { foreach ($typeList as $name) { $typeName = preg_replace('/\\.php$/i', '', $name); $dbalTypeName = strtolower($typeName); $filePath = Util::concatPath($path, $typeName); $class = Util::getClassName($filePath); if (!Type::hasType($dbalTypeName)) { Type::addType($dbalTypeName, $class); } else { Type::overrideType($dbalTypeName, $class); } $dbTypeName = method_exists($class, 'getDbTypeName') ? $class::getDbTypeName() : $dbalTypeName; $this->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping($dbTypeName, $dbalTypeName); } } } }
protected function getClassNameHash($dirs) { if (is_string($dirs)) { $dirs = (array) $dirs; } $data = array(); foreach ($dirs as $dir) { if (file_exists($dir)) { $fileList = $this->getFileManager()->getFileList($dir, false, '\\.php$', true); foreach ($fileList as $file) { $filePath = Util::concatPath($dir, $file); $className = Util::getClassName($filePath); $fileName = $this->getFileManager()->getFileName($filePath); $scopeName = ucfirst($fileName); $normalizedScopeName = Util::normilizeScopeName($scopeName); if (empty($this->allowedMethods)) { $data[$normalizedScopeName] = $className; continue; } foreach ($this->allowedMethods as $methodName) { if (method_exists($className, $methodName)) { $data[$normalizedScopeName] = $className; } } } } } return $data; }