+ /**
+ * Update image details
+ * @param $imageId
+ * @param Request $request
+ * @return \Illuminate\Http\JsonResponse
+ */
+ public function update($imageId, Request $request)
+ {
+ $this->checkPermission('image-update');
+ $this->validate($request, [
+ 'name' => 'required|min:2|string'
+ ]);
+ $image = $this->image->findOrFail($imageId);
+ $image->fill($request->all());
+ $image->save();
+ return response()->json($this->image);
+ }
+
+ /**
+ * Deletes an image and all thumbnail/image files
+ * @param $id
+ * @return \Illuminate\Http\JsonResponse
+ */
+ public function destroy($id)
+ {
+ $this->checkPermission('image-delete');
+ $image = $this->image->findOrFail($id);
+
+ // Delete files
+ $folder = public_path() . dirname($image->url);
+ $fileName = basename($image->url);
+
+ // Delete thumbnails
+ foreach (glob($folder . '/*') as $file) {
+ if (is_dir($file)) {
+ $thumbName = $file . '/' . $fileName;
+ if (file_exists($file)) {
+ unlink($thumbName);
+ }
+ // Remove thumb folder if empty
+ if (count(glob($file . '/*')) === 0) {
+ rmdir($file);
+ }
+ }
+ }
+
+ // Delete file and database entry
+ unlink($folder . '/' . $fileName);
+ $image->delete();
+
+ // Delete parent folder if empty
+ if (count(glob($folder . '/*')) === 0) {
+ rmdir($folder);
+ }
+ return response()->json('Image Deleted');
+ }
+