public function __construct() { parent::__construct(); if (empty($this->entityType)) { $name = get_class($this); if (preg_match('@\\\\([\\w]+)$@', $name, $matches)) { $name = $matches[1]; } if ($name != 'Record') { $this->entityType = Util::normilizeScopeName($name); } } $this->entityName = $this->entityType; }
/** * 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$', true); 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); } $normalizedScopeName = Util::normilizeScopeName($scopeName); $hooks[$normalizedScopeName][$hookName] = isset($hooks[$normalizedScopeName][$hookName]) ? array_merge($hooks[$normalizedScopeName][$hookName], $sortedHookList) : $sortedHookList; } } } } return $hooks; }
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; }