This change adds an 'inline' route to uploads which sets the 'Content-Disposition' HTTP header to 'inline'. This allows modules to embed and display uploads in an HTML 'embed' element.
		
			
				
	
	
		
			185 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Common;
 | |
| 
 | |
| use App\Abstracts\Http\Controller;
 | |
| use App\Models\Common\Media;
 | |
| use App\Traits\Uploads as Helper;
 | |
| use Illuminate\Support\Facades\Storage;
 | |
| use Illuminate\Http\Request;
 | |
| 
 | |
| class Uploads extends Controller
 | |
| {
 | |
|     use Helper;
 | |
| 
 | |
|     /**
 | |
|      * Get the specified resource.
 | |
|      *
 | |
|      * @param  $id
 | |
|      * @return mixed
 | |
|      */
 | |
|     public function get($id)
 | |
|     {
 | |
|         try {
 | |
|             $media = Media::find($id);
 | |
|         } catch (\Exception $e) {
 | |
|             return response(null, 204);
 | |
|         }
 | |
| 
 | |
|         // Get file path
 | |
|         if (!$this->getMediaPathOnStorage($media)) {
 | |
|             return response(null, 204);
 | |
|         }
 | |
| 
 | |
|         return $this->streamMedia($media);
 | |
|     }
 | |
| 
 | |
|     public function inline($id)
 | |
|     {
 | |
|         try {
 | |
|             $media = Media::find($id);
 | |
|         } catch (\Exception $e) {
 | |
|             return response(null, 204);
 | |
|         }
 | |
| 
 | |
|         // Get file path
 | |
|         if (!$this->getMediaPathOnStorage($media)) {
 | |
|             return response(null, 204);
 | |
|         }
 | |
| 
 | |
|         return $this->streamMedia($media, 'inline');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the specified resource.
 | |
|      *
 | |
|      * @param  $id
 | |
|      * @return mixed
 | |
|      */
 | |
|     public function show($id, Request $request)
 | |
|     {
 | |
|         $file = false;
 | |
|         $options = false;
 | |
|         $column_name = 'attachment';
 | |
| 
 | |
|         if ($request->has('column_name')) {
 | |
|             $column_name = $request->get('column_name');
 | |
|         }
 | |
| 
 | |
|         if ($request->has('page')) {
 | |
|             $options = [
 | |
|                 'page' => $request->get('page'),
 | |
|                 'key' => $request->get('key'),
 | |
|             ];
 | |
|         }
 | |
| 
 | |
|         try {
 | |
|             $media = Media::find($id);
 | |
|         } catch (\Exception $e) {
 | |
|             return response()->json([
 | |
|                 'success' => false,
 | |
|                 'error'   => true,
 | |
|                 'data'    => [],
 | |
|                 'message' => 'null',
 | |
|                 'html'    => '',
 | |
|             ]);
 | |
|         }
 | |
| 
 | |
|         // Get file path
 | |
|         if (!$this->getMediaPathOnStorage($media)) {
 | |
|             return response()->json([
 | |
|                 'success' => false,
 | |
|                 'error'   => true,
 | |
|                 'data'    => [],
 | |
|                 'message' => 'null',
 | |
|                 'html'    => '',
 | |
|             ]);
 | |
|         }
 | |
| 
 | |
|         $file = $media;
 | |
| 
 | |
|         $html = view('components.media.file', compact('file', 'column_name', 'options'))->render();
 | |
| 
 | |
|         return response()->json([
 | |
|             'success' => true,
 | |
|             'error'   => false,
 | |
|             'data'    => [],
 | |
|             'message' => 'null',
 | |
|             'html'    => $html,
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Download the specified resource.
 | |
|      *
 | |
|      * @param  $id
 | |
|      * @return mixed
 | |
|      */
 | |
|     public function download($id)
 | |
|     {
 | |
|         try {
 | |
|             $media = Media::find($id);
 | |
|         } catch (\Exception $e) {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         // Get file path
 | |
|         if (!$this->getMediaPathOnStorage($media)) {
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         return $this->streamMedia($media);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Destroy the specified resource.
 | |
|      *
 | |
|      * @param  $id
 | |
|      * @return callable
 | |
|      */
 | |
|     public function destroy($id, Request $request)
 | |
|     {
 | |
|         $return = back();
 | |
| 
 | |
|         if ($request->has('ajax') && $request->get('ajax')) {
 | |
|             $return = [
 | |
|                 'success' => true,
 | |
|                 'errors' => false,
 | |
|                 'message' => '',
 | |
|                 'redirect' => $request->get('redirect')
 | |
|             ];
 | |
|         }
 | |
| 
 | |
|         try {
 | |
|             $media = Media::find($id);
 | |
|         } catch (\Exception $e) {
 | |
|             return $return;
 | |
|         }
 | |
| 
 | |
|         // Get file path
 | |
|         if (!$path = $this->getMediaPathOnStorage($media)) {
 | |
|             $message = trans('messages.warning.deleted', ['name' => $media->basename, 'text' => $media->basename]);
 | |
| 
 | |
|             flash($message)->warning()->important();
 | |
| 
 | |
|             return $return;
 | |
|         }
 | |
| 
 | |
|         $media->delete(); //will not delete files
 | |
| 
 | |
|         Storage::delete($path);
 | |
| 
 | |
|         if (!empty($request->input('page'))) {
 | |
|             switch ($request->input('page')) {
 | |
|                 case 'setting':
 | |
|                     setting()->set($request->input('key'), '');
 | |
| 
 | |
|                     setting()->save();
 | |
|                     break;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return $return;
 | |
|     }
 | |
| }
 |