Dan Brown

Fixed image folder deletion. Fixes #22.

...@@ -177,14 +177,30 @@ class ImageController extends Controller ...@@ -177,14 +177,30 @@ class ImageController extends Controller
177 177
178 // Delete files 178 // Delete files
179 $folder = public_path() . dirname($image->url); 179 $folder = public_path() . dirname($image->url);
180 - $pattern = '/' . preg_quote(basename($image->url)). '/'; 180 + $fileName = basename($image->url);
181 - $dir = new RecursiveDirectoryIterator($folder); 181 +
182 - $ite = new RecursiveIteratorIterator($dir); 182 + // Delete thumbnails
183 - $files = new RegexIterator($ite, $pattern, RegexIterator::ALL_MATCHES); 183 + foreach(glob($folder . '/*') as $file) {
184 - foreach($files as $path => $file) { 184 + if(is_dir($file)) {
185 - unlink($path); 185 + $thumbName = $file . '/' . $fileName;
186 + if(file_exists($file)) {
187 + unlink($thumbName);
188 + }
189 + // Remove thumb folder if empty
190 + if(count(glob($file . '/*')) === 0) {
191 + rmdir($file);
192 + }
193 + }
186 } 194 }
195 +
196 + // Delete file and database entry
197 + unlink($folder . '/' . $fileName);
187 $image->delete(); 198 $image->delete();
199 +
200 + // Delete parent folder if empty
201 + if(count(glob($folder . '/*')) === 0) {
202 + rmdir($folder);
203 + }
188 return response()->json('Image Deleted'); 204 return response()->json('Image Deleted');
189 } 205 }
190 206
......
...@@ -70,6 +70,7 @@ Route::group(['middleware' => 'auth'], function() { ...@@ -70,6 +70,7 @@ Route::group(['middleware' => 'auth'], function() {
70 Route::get('/images/all', 'ImageController@getAll'); 70 Route::get('/images/all', 'ImageController@getAll');
71 Route::put('/images/update/{imageId}', 'ImageController@update'); 71 Route::put('/images/update/{imageId}', 'ImageController@update');
72 Route::delete('/images/{imageId}', 'ImageController@destroy'); 72 Route::delete('/images/{imageId}', 'ImageController@destroy');
73 + Route::get('/images/{imageId}/delete', 'ImageController@destroy');
73 Route::get('/images/all/{page}', 'ImageController@getAll'); 74 Route::get('/images/all/{page}', 'ImageController@getAll');
74 Route::get('/images/{any}', 'ImageController@getImage')->where('any', '.*'); 75 Route::get('/images/{any}', 'ImageController@getImage')->where('any', '.*');
75 76
......