/** * * @param zool\file\File $resourceFile * @return File */ private function copyToResources($resourceFile, $resourcePath) { $baseName = $resourceFile->getFileNameWithoutExtension(); $extension = $resourceFile->getExtension(); $fileHash = HashGenerator::instance()->hash($resourceFile->getMTime(), 7); $hashedBaseName = $baseName . '_' . $fileHash; $hashedResourcePath = str_replace($baseName, $hashedBaseName, $resourcePath); $targetPath = RESOURCES_PATH . '/' . $hashedResourcePath; $targetFile = new File($targetPath); if (!$targetFile->exists()) { /* * Delete previous versions of file */ $targetDir = $targetFile->getDirectory(); if ($targetDir->exists()) { $baseName = $targetFile->getFileNameWithoutExtension(); $prevFilesPattern = '/^' . $baseName . '_(.){7}\\.' . $extension . '$/i'; $prevoiusFiles = $targetDir->getFiles(false, $prevFilesPattern); foreach ($prevoiusFiles as $prevFilePath) { (new File($prevFilePath))->delete(); } } $targetFile->content($resourceFile->content()); } return [$targetFile, RESOURCES_DIRNAME . '/' . $hashedResourcePath]; }