From 54d3188dcb4f14c6bc3b8cefb4e494a7a6031fe7 Mon Sep 17 00:00:00 2001 From: Luddinus Date: Tue, 2 Aug 2016 22:08:36 +0200 Subject: [PATCH 1/2] Recursive search filename This adds recursive search in paths in order to find a image in a sub-directory, useful in a case like this: https://github.com/Intervention/imagecache/issues/36#issuecomment-127094597 --- .../Image/ImageCacheController.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Intervention/Image/ImageCacheController.php b/src/Intervention/Image/ImageCacheController.php index 7fca05d..dd43f28 100644 --- a/src/Intervention/Image/ImageCacheController.php +++ b/src/Intervention/Image/ImageCacheController.php @@ -125,17 +125,23 @@ private function getTemplate($template) private function getImagePath($filename) { // find file + $finder = new Finder; + foreach (config('imagecache.paths') as $path) { - // don't allow '..' in filenames - $image_path = $path.'/'.str_replace('..', '', $filename); - if (file_exists($image_path) && is_file($image_path)) { - // file found - return $image_path; - } + $finder->in($path); + } + + $finder->files()->name($filename); + + $files = iterator_to_array($finder->getIterator()); + + if (count($files)) { + return array_keys($files)[0]; } // file not found abort(404); + } /** From d22dac5652beec9008e4462b61ab4eda94935788 Mon Sep 17 00:00:00 2001 From: Luddinus Date: Wed, 3 Aug 2016 15:17:47 +0200 Subject: [PATCH 2/2] Update ImageCacheController.php --- src/Intervention/Image/ImageCacheController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Intervention/Image/ImageCacheController.php b/src/Intervention/Image/ImageCacheController.php index dd43f28..4d8ddc1 100644 --- a/src/Intervention/Image/ImageCacheController.php +++ b/src/Intervention/Image/ImageCacheController.php @@ -6,6 +6,7 @@ use Intervention\Image\ImageManager; use Illuminate\Routing\Controller as BaseController; use Illuminate\Http\Response as IlluminateResponse; +use Symfony\Component\Finder\Finder; use Config; class ImageCacheController extends BaseController