/** * @param $filename * @param string $ext * @return string */ protected function getImageSavePath($filename, $ext = 'jpg') { $convertedImageFileName = trim($this->config->get('IMAGE_PATH')->value, '/'); if (!is_dir('Public' . DIRECTORY_SEPARATOR . $convertedImageFileName)) { mkdir('Public' . DIRECTORY_SEPARATOR . $convertedImageFileName, 0755, true); } $convertedImageFileName .= DIRECTORY_SEPARATOR . $filename . '.' . $ext; return 'Public' . DIRECTORY_SEPARATOR . trim($this->fileManager->convertDirSeparator($convertedImageFileName), '/'); }
/** * @return array */ public function getModelDirs() { $entities = $this->fileManager->findFiles($this->core->getApplicationDir() . DIRECTORY_SEPARATOR . 'Entity', GLOB_ONLYDIR); foreach ($entities as $k => $entity) { $pathWithoutAppDir = str_ireplace($this->core->getApplicationDir(), '', $entity); if (preg_match('@^.*/\\b(tests|test)\\b/?.*$@i', $pathWithoutAppDir)) { unset($entities[$k]); } } return $entities; }
/** * @return $this */ public function load() { $phpFiles = $this->fileManager->findFiles('Hook' . DIRECTORY_SEPARATOR . '*.php'); foreach ($phpFiles as $phpFile) { require_once $phpFile; $loadedClasses = get_declared_classes(); $class = end($loadedClasses); $reflector = new \ReflectionClass($class); $parentClass = $reflector->getParentClass(); if ($parentClass) { $shortNameClass = str_replace('Fraym\\Hook\\', 'Fraym\\', $reflector->getName()); $shortNameClassHook = $parentClass->getName(); if ($shortNameClass === $shortNameClassHook) { $this->serviceLocator->set($parentClass->name, $this->serviceLocator->get($class)); $this->_hooks[$class] = $parentClass->name; } } } return $this; }
/** * @return array */ public function getExtensions() { $extensions = []; $coreFiles = $this->fileManager->findFiles($this->core->getApplicationDir() . DIRECTORY_SEPARATOR . 'Fraym' . DIRECTORY_SEPARATOR . '*.php'); $extensionFiles = $this->fileManager->findFiles($this->core->getApplicationDir() . DIRECTORY_SEPARATOR . 'Extension' . DIRECTORY_SEPARATOR . '*.php'); $files = array_merge($coreFiles, $extensionFiles); foreach ($files as $file) { $classname = basename($file, '.php'); $namespace = str_ireplace($this->core->getApplicationDir(), '', dirname($file)); $namespace = str_replace('/', '\\', $namespace) . '\\'; $namespace = preg_replace('#^' . preg_quote('\\') . 'Extension' . preg_quote('\\') . '#', '\\Fraym\\Extension\\', $namespace); $namespace = preg_replace('#^' . preg_quote('\\') . 'Hook' . preg_quote('\\') . '#', '\\Fraym\\Hook\\', $namespace); $namespace = preg_replace('#^' . preg_quote('\\') . 'Test' . preg_quote('\\') . '#', '\\Fraym\\Test\\', $namespace); $class = $namespace . $classname; if (is_file($file)) { require_once $file; if (class_exists($class)) { $classAnnotation = $this->getRegistryConfig($class); if ($classAnnotation) { $registryEntry = $this->db->getRepository('\\Fraym\\Registry\\Entity\\Registry')->findOneByClassName($class); $extensions[$class] = (array) $classAnnotation; if ($classAnnotation->composerPackage === true) { $package = $this->getPackage($classAnnotation->repositoryKey); if ($package) { $package = $this->getLatestPackageVersion($package); $extensions[$class]['package'] = $package->getName(); $extensions[$class]['description'] = $package->getDescription(); $extensions[$class]['version'] = $package->getVersion(); $extensions[$class]['homepage'] = $package->getHomepage(); $extensions[$class]['author'] = $this->getAuthorsFromPackage($package); } } else { $extensions[$class]['package'] = $classAnnotation->repositoryKey; $extensions[$class]['description'] = ''; $extensions[$class]['version'] = '0.0.0'; $extensions[$class]['homepage'] = null; $extensions[$class]['author'] = null; } $extensions[$class]['registred'] = $registryEntry !== null; } } } } return $extensions; }
/** * @param Entity\Registry $registry * @return bool|string */ public function buildPackage(Entity\Registry $registry) { $classAnnotation = $this->getRegistryConfig($registry->className); $files = array(); foreach ($classAnnotation->files as $path) { $files = array_merge($files, $this->fileManager->findFiles($path)); } $filename = tempnam(sys_get_temp_dir(), 'ext'); $zip = new \ZipArchive(); if ($zip->open($filename, \ZipArchive::CREATE) !== true) { return false; } foreach ($files as $file) { if (is_dir($file)) { $zip->addEmptyDir($file); } else { $zip->addFile($file); } } $zip->close(); return $filename; }
/** * @Fraym\Annotation\Route("cacheClearAll", name="cacheClearAll") */ public function clearAll() { // clear PHP opcache if (function_exists('opcache_reset')) { opcache_reset(); } // clear APC/APCu Cache if (function_exists('apc_clear_cache')) { apc_clear_cache('user'); apc_clear_cache(); } if (defined('CACHE_DI_PATH')) { $this->fileManager->deleteFolder(CACHE_DI_PATH); } if (defined('CACHE_DOCTRINE_PROXY_PATH')) { $this->fileManager->deleteFolder(CACHE_DOCTRINE_PROXY_PATH); } $this->fileManager->deleteFolder(self::DIR_PAGES); $this->fileManager->deleteFolder(self::DIR_CUSTOM_DATA); $this->fileManager->deleteFolder('Public' . CONSOLIDATE_FOLDER); self::createCacheFolders(); }
/** * @return array */ public function getModelDirs() { $entities = $this->fileManager->findFiles($this->core->getApplicationDir() . DIRECTORY_SEPARATOR . 'Entity', GLOB_ONLYDIR); return $entities; }
/** * @return array */ protected function getTemplateFiles() { $path = $this->getTemplatePath(); return $this->fileManager->getFiles($path); }
/** * @return $this */ protected function initAnnotationRoutes() { \Doctrine\Common\Annotations\AnnotationRegistry::registerFile($this->core->getApplicationDir() . '/Fraym/Annotation/Route.php'); $coreFiles = $this->fileManager->findFiles($this->core->getApplicationDir() . DIRECTORY_SEPARATOR . 'Fraym' . DIRECTORY_SEPARATOR . '*.php'); $extensionFiles = $this->fileManager->findFiles($this->core->getApplicationDir() . DIRECTORY_SEPARATOR . 'Extension' . DIRECTORY_SEPARATOR . '*.php'); foreach (array_merge($coreFiles, $extensionFiles) as $file) { $classname = basename($file, '.php'); $namespace = str_ireplace($this->core->getApplicationDir(), '', dirname($file)); $namespace = str_replace('/', '\\', $namespace) . '\\'; $namespace = preg_replace('#^' . preg_quote('\\') . 'Extension' . preg_quote('\\') . '#', '\\Fraym\\Extension\\', $namespace); $namespace = preg_replace('#^' . preg_quote('\\') . 'Test' . preg_quote('\\') . '#', '\\Fraym\\Test\\', $namespace); $namespace = preg_replace('#^' . preg_quote('\\') . 'Hook' . preg_quote('\\') . '#', '\\Fraym\\Hook\\', $namespace); $class = $namespace . $classname; if (is_file($file)) { require_once $file; if (class_exists($class)) { $this->initClassAnnotationRoutes($class); foreach (get_class_methods($class) as $method) { $key = null; $refMethod = new \ReflectionMethod($class, $method); $methodAnnotation = $this->db->getAnnotationReader()->getMethodAnnotation($refMethod, 'Fraym\\Annotation\\Route'); if (empty($methodAnnotation) === false) { $route = $methodAnnotation->value; $key = $methodAnnotation->name; $regex = $methodAnnotation->regex; $permission = $methodAnnotation->permission; $callback = [$class, $method]; $contextCallback = null; $this->addVirtualRoute($key, $route, $callback, $contextCallback, $regex, $permission); } } } } } }
/** * @param $dir * @return bool */ private function deleteFolder($dir) { return $this->fileManager->deleteFolder($dir); }
/** * @param $dir * @return bool */ protected function deleteFolder($dir) { return $this->fileManager->deleteFolder($dir); }