Nextrek
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
<?php
namespace Intervention\Image;
use Illuminate\Support\ServiceProvider;
use Illuminate\Http\Response as IlluminateResponse;
class ImageServiceProviderLaravel4 extends ServiceProvider
{
/**
* Bootstrap the application events.
*
* @return void
*/
public function boot()
{
$this->package('intervention/image');
// try to create imagecache route only if imagecache is present
if (class_exists('Intervention\\Image\\ImageCache')) {
$app = $this->app;
// load imagecache config
$app['config']->package('intervention/imagecache', __DIR__.'/../../../../imagecache/src/config', 'imagecache');
$config = $app['config'];
// create dynamic manipulation route
if (is_string($config->get('imagecache::route'))) {
// add original to route templates
$config->set('imagecache::templates.original', null);
// setup image manipulator route
$app['router']->get($config->get('imagecache::route').'/{template}/{filename}', array('as' => 'imagecache', function ($template, $filename) use ($app, $config) {
// disable session cookies for image route
$app['config']->set('session.driver', 'array');
// 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\\.\\/\\-]+'));
}
}
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$app = $this->app;
$app['image'] = $app->share(function ($app) {
return new ImageManager($app['config']->get('image::config'));
});
}
}
|
Revision |
Author |
Commited |
Message |
1464
|
MOliva
|
Tue 13 Oct, 2020 11:16:56 +0000 |
|