serviceManager = $serviceManager; } /** * Check write permissions to generation folders * * @return bool */ public function check() { $initParams = $this->serviceManager->get(InitParamListener::BOOTSTRAP_PARAM); $filesystemDirPaths = isset($initParams[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS]) ? $initParams[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] : []; $directoryList = new DirectoryList(BP, $filesystemDirPaths); $driverPool = new DriverPool(); $fileWriteFactory = new WriteFactory($driverPool); $generationDirs = [ DirectoryList::GENERATED, DirectoryList::GENERATED_CODE, DirectoryList::GENERATED_METADATA ]; foreach ($generationDirs as $generationDirectory) { $directoryPath = $directoryList->getPath($generationDirectory); $directoryWrite = $fileWriteFactory->create($directoryPath); if (!$directoryWrite->isExist()) { try { $directoryWrite->create(); } catch (\Exception $e) { return false; } } if (!$directoryWrite->isWritable()) { return false; } } return true; } }