diff --git a/src/Intervention/Image/ImageServiceProviderLaravel5.php b/src/Intervention/Image/ImageServiceProviderLaravel5.php index 3104426d..ed811c16 100644 --- a/src/Intervention/Image/ImageServiceProviderLaravel5.php +++ b/src/Intervention/Image/ImageServiceProviderLaravel5.php @@ -73,59 +73,22 @@ class ImageServiceProviderLaravel5 extends ServiceProvider 'imagecache' ); - $config = $app['config']; + // imagecache route + if (is_string(config('imagecache.route'))) { - // create dynamic manipulation route - if (is_string($config->get('imagecache.route'))) { + $filename_pattern = '[ \w\\.\\/\\-]+'; - // add original to route templates - $config->set('imagecache.templates.original', null); + // route to access original file + $app['router']->get( + config('imagecache.route').'/original/{filename}', + 'Intervention\Image\ImageCacheController@getOriginal' + )->where(array('filename' => $filename_pattern)); - $app['router']->get($config->get('imagecache.route').'/{template}/{filename}', array('as' => 'imagecache', function ($template, $filename) use ($app, $config) { - - // find file - foreach ($config->get('imagecache.paths') as $path) { - // don't allow '..' in filenames - $image_path = $path.'/'.str_replace('..', '', $filename); - if (file_exists($image_path) && is_file($image_path)) { - break; - } else { - $image_path = false; - } - } - - // abort if file not found - if ($image_path === false) { - $app->abort(404); - } - - // define template callback - $callback = $config->get("imagecache.templates.{$template}"); - - if (is_callable($callback)) { - - // image manipulation based on callback - $content = $app['image']->cache(function ($image) use ($image_path, $callback) { - return $callback($image->make($image_path)); - }, $config->get('imagecache.lifetime')); - - } else { - - // get original image file contents - $content = file_get_contents($image_path); - } - - // define mime type - $mime = finfo_buffer(finfo_open(FILEINFO_MIME_TYPE), $content); - - // return http response - return new IlluminateResponse($content, 200, array( - 'Content-Type' => $mime, - 'Cache-Control' => 'max-age='.($config->get('imagecache.lifetime')*60).', public', - 'Etag' => md5($content) - )); - - }))->where(array('template' => join('|', array_keys($config->get('imagecache.templates'))), 'filename' => '[ \w\\.\\/\\-]+')); + // route to access template applied image file + $app['router']->get( + config('imagecache.route').'/{template}/{filename}', + 'Intervention\Image\ImageCacheController@getImage' + )->where(array('filename' => $filename_pattern)); } } }