621 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			621 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Common;
 | |
| 
 | |
| // controllers
 | |
| use App\Http\Controllers\Controller;
 | |
| // requests
 | |
| use App\Http\Requests;
 | |
| use App\Http\Requests\helpdesk\SmtpRequest;
 | |
| use App\Model\helpdesk\Email\Smtp;
 | |
| // models
 | |
| use App\Model\helpdesk\Settings\Plugin;
 | |
| use App\Model\helpdesk\Theme\Widgets;
 | |
| use Config;
 | |
| // classes
 | |
| use Crypt;
 | |
| use Exception;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Support\Collection;
 | |
| use Input;
 | |
| use Lang;
 | |
| 
 | |
| /**
 | |
|  * ***************************
 | |
|  * Settings Controllers
 | |
|  * ***************************
 | |
|  * Controller to keep smtp details and fetch where ever needed.
 | |
|  */
 | |
| class SettingsController extends Controller
 | |
| {
 | |
|     /**
 | |
|      * Create a new controller instance.
 | |
|      *
 | |
|      * @return type void
 | |
|      */
 | |
|     public function __construct()
 | |
|     {
 | |
|         $this->middleware('auth');
 | |
|         $this->middleware('roles');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * get the page to create the footer.
 | |
|      *
 | |
|      * @return response
 | |
|      */
 | |
|     public function widgets()
 | |
|     {
 | |
|         return view('themes.default1.admin.helpdesk.theme.widgets');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * get the page to create the footer.
 | |
|      *
 | |
|      * @return response
 | |
|      */
 | |
|     public function list_widget()
 | |
|     {
 | |
|         return \Datatable::collection(Widgets::where('id', '<', '7')->get())
 | |
|                         ->searchColumns('name')
 | |
|                         ->orderColumns('name', 'title', 'value')
 | |
|                         ->addColumn('name', function ($model) {
 | |
|                             return $model->name;
 | |
|                         })
 | |
|                         ->addColumn('title', function ($model) {
 | |
|                             return $model->title;
 | |
|                         })
 | |
|                         ->addColumn('body', function ($model) {
 | |
|                             return $model->value;
 | |
|                         })
 | |
|                         ->addColumn('Actions', function ($model) {
 | |
|                             return '<span data-toggle="modal" data-target="#edit_widget'.$model->id.'"><a class="btn btn-warning btn-xs">'.\Lang::get('lang.edit').'</a></span>
 | |
|                 <div class="modal fade" id="edit_widget'.$model->id.'">
 | |
|                     <div class="modal-dialog">
 | |
|                         <div class="modal-content">
 | |
|                             <form action="'.url('edit-widget/'.$model->id).'" method="POST">
 | |
|                                 <div class="modal-header">
 | |
|                                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
 | |
|                                     <h4 class="modal-title">'.strtoupper($model->name).' </h4>
 | |
|                                 </div>
 | |
|                                 <div class="modal-body">
 | |
|                                     <div class="form-group" style="width:100%">
 | |
|                                         <label>'.\Lang::get('lang.title').'</label><br/>
 | |
|                                         <input type="text" name="title" value="'.$model->title.'" class="form-control" style="width:100%">
 | |
|                                     </div>
 | |
|                                     <br/>
 | |
|                                     <div class="form-group" style="width:100%">
 | |
|                                         <label>'.\Lang::get('lang.content').'</label><br/>
 | |
|                                         <textarea name="content" class="form-control" style="width:100%" id="Content'.$model->id.'">'.$model->value.'</textarea>
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="modal-footer">
 | |
|                                     <button type="button" class="btn btn-default pull-left" data-dismiss="modal" id="dismis2">'.\Lang::get('lang.close').'</button>
 | |
|                                     <input type="submit" class="btn btn-primary" value="'.\Lang::get('lang.update').'">
 | |
|                                 </div>
 | |
|                                 <script>
 | |
|                                     $(function () {
 | |
|                                         $("#Content'.$model->id.'").wysihtml5();
 | |
|                                     });
 | |
|                                 </script>
 | |
|                             </form>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>';
 | |
|                         })
 | |
|                         ->make();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Post footer.
 | |
|      *
 | |
|      * @param type Footer  $footer
 | |
|      * @param type Request $request
 | |
|      *
 | |
|      * @return type response
 | |
|      */
 | |
|     public function edit_widget($id, Widgets $widgets, Request $request)
 | |
|     {
 | |
|         $widget = $widgets->where('id', '=', $id)->first();
 | |
|         $widget->title = $request->title;
 | |
|         $widget->value = $request->content;
 | |
|         try {
 | |
|             $widget->save();
 | |
| 
 | |
|             return redirect()->back()->with('success', $widget->name.Lang::get('lang.saved_successfully'));
 | |
|         } catch (Exception $e) {
 | |
|             return redirect()->back()->with('fails', $e->getMessage());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * get the page to create the footer.
 | |
|      *
 | |
|      * @return response
 | |
|      */
 | |
|     public function social_buttons()
 | |
|     {
 | |
|         return view('themes.default1.admin.helpdesk.theme.social');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * get the page to create the footer.
 | |
|      *
 | |
|      * @return response
 | |
|      */
 | |
|     public function list_social_buttons()
 | |
|     {
 | |
|         return \Datatable::collection(Widgets::where('id', '>', '6')->get())
 | |
|                         ->searchColumns('name')
 | |
|                         ->orderColumns('name', 'value')
 | |
|                         ->addColumn('name', function ($model) {
 | |
|                             return $model->name;
 | |
|                         })
 | |
|                         ->addColumn('link', function ($model) {
 | |
|                             return $model->value;
 | |
|                         })
 | |
|                         ->addColumn('Actions', function ($model) {
 | |
|                             return '<span data-toggle="modal" data-target="#edit_widget'.$model->id.'"><a class="btn btn-warning btn-xs">'.\Lang::get('lang.edit').'</a></span>
 | |
|                 <div class="modal fade" id="edit_widget'.$model->id.'">
 | |
|                     <div class="modal-dialog">
 | |
|                         <div class="modal-content">
 | |
|                             <form action="'.url('edit-widget/'.$model->id).'" method="POST">
 | |
|                                 <div class="modal-header">
 | |
|                                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
 | |
|                                     <h4 class="modal-title">'.strtoupper($model->name).' </h4>
 | |
|                                 </div>
 | |
|                                 <div class="modal-body">
 | |
|                                     <br/>
 | |
|                                     <div class="form-group" style="width:100%">
 | |
|                                         <label>'.\Lang::get('lang.link').'</label><br/>
 | |
|                                         <input type="url" name="content" class="form-control" style="width:100%" value="'.$model->value.'">
 | |
|                                     </div>
 | |
|                                 </div>
 | |
|                                 <div class="modal-footer">
 | |
|                                     <button type="button" class="btn btn-default pull-left" data-dismiss="modal" id="dismis2">'.\Lang::get('lang.close').'</button>
 | |
|                                     <input type="submit" class="btn btn-primary" value="'.\Lang::get('lang.update').'">
 | |
|                                 </div>
 | |
|                             </form>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>';
 | |
|                         })
 | |
|                         ->make();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Post footer.
 | |
|      *
 | |
|      * @param type Footer  $footer
 | |
|      * @param type Request $request
 | |
|      *
 | |
|      * @return type response
 | |
|      */
 | |
|     public function edit_social_buttons($id, Widgets $widgets, Request $request)
 | |
|     {
 | |
|         $widget = $widgets->where('id', '=', $id)->first();
 | |
|         $widget->title = $request->title;
 | |
|         $widget->value = $request->content;
 | |
|         try {
 | |
|             $widget->save();
 | |
| 
 | |
|             return redirect()->back()->with('success', $widget->name.' Saved Successfully');
 | |
|         } catch (Exception $e) {
 | |
|             return redirect()->back()->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * get SMTP.
 | |
|      *
 | |
|      * @return type view
 | |
|      */
 | |
|     public function getsmtp()
 | |
|     {
 | |
|         $settings = Smtp::where('id', '=', '1')->first();
 | |
| 
 | |
|         return view('themes.default1.admin.helpdesk.emails.smtp', compact('settings'));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * POST SMTP.
 | |
|      *
 | |
|      * @return type view
 | |
|      */
 | |
|     public function postsmtp(SmtpRequest $request)
 | |
|     {
 | |
|         $data = Smtp::where('id', '=', 1)->first();
 | |
|         $data->driver = $request->input('driver');
 | |
|         $data->host = $request->input('host');
 | |
|         $data->port = $request->input('port');
 | |
|         $data->encryption = $request->input('encryption');
 | |
|         $data->name = $request->input('name');
 | |
|         $data->email = $request->input('email');
 | |
|         $data->password = Crypt::encrypt($request->input('password'));
 | |
|         try {
 | |
|             $data->save();
 | |
| 
 | |
|             return \Redirect::route('getsmtp')->with('success', 'success');
 | |
|         } catch (Exception $e) {
 | |
|             return \Redirect::route('getsmtp')->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Post settings.
 | |
|      *
 | |
|      * @param type Settings $set
 | |
|      * @param type Request  $request
 | |
|      *
 | |
|      * @return type view
 | |
|      */
 | |
|     public function PostSettings(Settings $set, Request $request)
 | |
|     {
 | |
|         $settings = $set->where('id', '1')->first();
 | |
|         $pass = $request->input('password');
 | |
|         $password = Crypt::encrypt($pass);
 | |
|         $settings->password = $password;
 | |
|         try {
 | |
|             $settings->save();
 | |
|         } catch (Exception $e) {
 | |
|             return redirect()->back()->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|         if (Input::file('logo')) {
 | |
|             $name = Input::file('logo')->getClientOriginalName();
 | |
|             $destinationPath = 'dist/logo';
 | |
|             $fileName = rand(0000, 9999).'.'.$name;
 | |
|             Input::file('logo')->move($destinationPath, $fileName);
 | |
|             $settings->logo = $fileName;
 | |
|             $settings->save();
 | |
|         }
 | |
|         try {
 | |
|             $settings->fill($request->except('logo', 'password'))->save();
 | |
| 
 | |
|             return redirect()->back()->with('success', 'Settings updated Successfully');
 | |
|         } catch (Exception $e) {
 | |
|             return redirect()->back()->with('fails', $e->errorInfo[2]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function Plugins()
 | |
|     {
 | |
|         return view('themes.default1.admin.helpdesk.settings.plugins', ['info' => 1]);
 | |
|     }
 | |
| 
 | |
|     public function GetPlugin()
 | |
|     {
 | |
|         $plugins = $this->fetchConfig();
 | |
| 
 | |
|         return \Datatable::collection(new Collection($plugins))
 | |
|                         ->searchColumns('name')
 | |
|                         ->addColumn('name', function ($model) {
 | |
|                             if (array_has($model, 'path')) {
 | |
|                                 if ($model['status'] == 0) {
 | |
|                                     $activate = '<a href='.url('plugin/status/'.$model['path']).'>Activate</a>';
 | |
|                                     $settings = ' ';
 | |
|                                 } else {
 | |
|                                     $settings = '<a href='.url($model['settings']).'>Settings</a> | ';
 | |
|                                     $activate = '<a href='.url('plugin/status/'.$model['path']).'>Deactivate</a>';
 | |
|                                 }
 | |
| 
 | |
|                                 $delete = '<a href="#"  id=delete'.$model['path'].' data-toggle=modal data-target=#del'.$model['path']."><span style='color:red'>Delete</span></a>"
 | |
|                                         ."<div class='modal fade' id=del".$model['path'].">
 | |
|                                             <div class='modal-dialog'>
 | |
|                                                 <div class=modal-content>  
 | |
|                                                     <div class=modal-header>
 | |
|                                                         <h4 class=modal-title>Delete</h4>
 | |
|                                                     </div>
 | |
|                                                     <div class=modal-body>
 | |
|                                                        <p>Are you Sure ?</p>
 | |
|                                                         <div class=modal-footer>
 | |
|                                                             <button type=button class='btn btn-default pull-left' data-dismiss=modal id=dismis>".\Lang::get('lang.close').'</button>
 | |
|                                                             <a href='.url('plugin/delete/'.$model['path'])."><button class='btn btn-danger'>Delete</button></a>
 | |
|                                                         </div>
 | |
| 
 | |
| 
 | |
|                                                     </div>
 | |
|                                                 </div>
 | |
|                                             </div>
 | |
|                                         </div>";
 | |
|                                 $action = '<br><br>'.$delete.' | '.$settings.$activate;
 | |
|                             } else {
 | |
|                                 $action = '';
 | |
|                             }
 | |
| 
 | |
|                             return ucfirst($model['name']).$action;
 | |
|                         })
 | |
|                         ->addColumn('description', function ($model) {
 | |
|                             return ucfirst($model['description']);
 | |
|                         })
 | |
|                         ->addColumn('author', function ($model) {
 | |
|                             return ucfirst($model['author']);
 | |
|                         })
 | |
|                         ->addColumn('website', function ($model) {
 | |
|                             return '<a href='.$model['website'].' target=_blank>'.$model['website'].'</a>';
 | |
|                         })
 | |
|                         ->addColumn('version', function ($model) {
 | |
|                             return $model['version'];
 | |
|                         })
 | |
|                         ->make();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Reading the Filedirectory.
 | |
|      *
 | |
|      * @return type
 | |
|      */
 | |
|     public function ReadPlugins()
 | |
|     {
 | |
|         $dir = app_path().DIRECTORY_SEPARATOR.'Plugins';
 | |
|         $plugins = array_diff(scandir($dir), ['.', '..']);
 | |
| 
 | |
|         return $plugins;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * After plugin post.
 | |
|      *
 | |
|      * @param Request $request
 | |
|      *
 | |
|      * @return type
 | |
|      */
 | |
|     public function PostPlugins(Request $request)
 | |
|     {
 | |
|         $this->validate($request, ['plugin' => 'required|mimes:application/zip,zip,Zip']);
 | |
|         try {
 | |
|             if (!extension_loaded('zip')) {
 | |
|                 throw new Exception('Please enable zip extension in your php');
 | |
|             }
 | |
|             $plug = new Plugin();
 | |
|             $file = $request->file('plugin');
 | |
|             $destination = app_path().DIRECTORY_SEPARATOR.'Plugins';
 | |
|             $zipfile = $file->getRealPath();
 | |
|             /*
 | |
|              * get the file name and remove .zip
 | |
|              */
 | |
|             $filename2 = $file->getClientOriginalName();
 | |
|             $filename2 = str_replace('.zip', '', $filename2);
 | |
|             $filename1 = ucfirst($file->getClientOriginalName());
 | |
|             $filename = str_replace('.zip', '', $filename1);
 | |
|             $dir_check = scandir($destination);
 | |
|             if (in_array($filename, $dir_check)) {
 | |
|                 return redirect()->back()->with('fails', Lang::get('lang.plugin-exists'));
 | |
|             }
 | |
|             mkdir($destination.DIRECTORY_SEPARATOR.$filename);
 | |
|             /*
 | |
|              * extract the zip file using zipper
 | |
|              */
 | |
|             \Zipper::make($zipfile)->folder($filename2)->extractTo($destination.DIRECTORY_SEPARATOR.$filename);
 | |
| 
 | |
|             $file = app_path().DIRECTORY_SEPARATOR.'Plugins'.DIRECTORY_SEPARATOR.$filename; // Plugin file path
 | |
| 
 | |
|             if (file_exists($file)) {
 | |
|                 $seviceporvider = $file.DIRECTORY_SEPARATOR.'ServiceProvider.php';
 | |
|                 $config = $file.DIRECTORY_SEPARATOR.'config.php';
 | |
|                 if (file_exists($seviceporvider) && file_exists($config)) {
 | |
|                     /*
 | |
|                      * move to faveo config
 | |
|                      */
 | |
|                     $faveoconfig = config_path().DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR.$filename.'.php';
 | |
|                     if ($faveoconfig) {
 | |
| 
 | |
|                         //copy($config, $faveoconfig);
 | |
|                         /*
 | |
|                          * write provider list in app.php line 128
 | |
|                          */
 | |
|                         $app = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
 | |
|                         chmod($app, 0644);
 | |
|                         $str = "\n\n\t\t\t'App\\Plugins\\$filename"."\\ServiceProvider',";
 | |
|                         $line_i_am_looking_for = 187;
 | |
|                         $lines = file($app, FILE_IGNORE_NEW_LINES);
 | |
|                         $lines[$line_i_am_looking_for] = $str;
 | |
|                         file_put_contents($app, implode("\n", $lines));
 | |
|                         $plug->create(['name' => $filename, 'path' => $filename, 'status' => 1]);
 | |
| 
 | |
|                         return redirect()->back()->with('success', Lang::get('lang.plugin-installed'));
 | |
|                     } else {
 | |
|                         /*
 | |
|                          * delete if the plugin hasn't config.php and ServiceProvider.php
 | |
|                          */
 | |
|                         $this->deleteDirectory($file);
 | |
| 
 | |
|                         return redirect()->back()->with('fails', Lang::get('no-plugin-file').$file);
 | |
|                     }
 | |
|                 } else {
 | |
|                     /*
 | |
|                      * delete if the plugin hasn't config.php and ServiceProvider.php
 | |
|                      */
 | |
|                     $this->deleteDirectory($file);
 | |
| 
 | |
|                     return redirect()->back()->with('fails', Lang::get('plugin-config-missing').$file);
 | |
|                 }
 | |
|             } else {
 | |
|                 /*
 | |
|                  * delete if the plugin Name is not equal to the folder name
 | |
|                  */
 | |
|                 $this->deleteDirectory($file);
 | |
| 
 | |
|                 return redirect()->back()->with('fails', '<b>'.Lang::get('lang.plugin-path-missing').'</b>  '.$file);
 | |
|             }
 | |
|         } catch (Exception $ex) {
 | |
|             return redirect()->back()->with('fails', $ex->getMessage());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Delete the directory.
 | |
|      *
 | |
|      * @param type $dir
 | |
|      *
 | |
|      * @return bool
 | |
|      */
 | |
|     public function deleteDirectory($dir)
 | |
|     {
 | |
|         if (!file_exists($dir)) {
 | |
|             return true;
 | |
|         }
 | |
|         if (!is_dir($dir)) {
 | |
|             return unlink($dir);
 | |
|         }
 | |
|         foreach (scandir($dir) as $item) {
 | |
|             if ($item == '.' || $item == '..') {
 | |
|                 continue;
 | |
|             }
 | |
|             chmod($dir.DIRECTORY_SEPARATOR.$item, 0777);
 | |
|             if (!$this->deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) {
 | |
|                 return false;
 | |
|             }
 | |
|         }
 | |
|         chmod($dir, 0777);
 | |
| 
 | |
|         return rmdir($dir);
 | |
|     }
 | |
| 
 | |
|     public function ReadConfigs()
 | |
|     {
 | |
|         $dir = app_path().DIRECTORY_SEPARATOR.'Plugins'.DIRECTORY_SEPARATOR;
 | |
|         $directories = scandir($dir);
 | |
|         $files = [];
 | |
|         foreach ($directories as $key => $file) {
 | |
|             if ($file === '.' or $file === '..') {
 | |
|                 continue;
 | |
|             }
 | |
| 
 | |
|             if (is_dir($dir.DIRECTORY_SEPARATOR.$file)) {
 | |
|                 $files[$key] = $file;
 | |
|             }
 | |
|         }
 | |
|         //dd($files);
 | |
|         $config = [];
 | |
|         $plugins = [];
 | |
|         if (count($files) > 0) {
 | |
|             foreach ($files as $key => $file) {
 | |
|                 $plugin = $dir.$file;
 | |
|                 $plugins[$key] = array_diff(scandir($plugin), ['.', '..', 'ServiceProvider.php']);
 | |
|                 $plugins[$key]['file'] = $plugin;
 | |
|             }
 | |
|             foreach ($plugins as $plugin) {
 | |
|                 $dir = $plugin['file'];
 | |
|                 //opendir($dir);
 | |
|                 if ($dh = opendir($dir)) {
 | |
|                     while (($file = readdir($dh)) !== false) {
 | |
|                         if ($file == 'config.php') {
 | |
|                             $config[] = $dir.DIRECTORY_SEPARATOR.$file;
 | |
|                         }
 | |
|                     }
 | |
|                     closedir($dh);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return $config;
 | |
|         } else {
 | |
|             return 'null';
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function fetchConfig()
 | |
|     {
 | |
|         $configs = $this->ReadConfigs();
 | |
|         //dd($configs);
 | |
|         $plugs = new Plugin();
 | |
|         $fields = [];
 | |
|         $attributes = [];
 | |
|         if ($configs != 'null') {
 | |
|             foreach ($configs as $key => $config) {
 | |
|                 $fields[$key] = include $config;
 | |
|             }
 | |
|         }
 | |
|         //dd($fields);
 | |
|         if (count($fields) > 0) {
 | |
|             foreach ($fields as $key => $field) {
 | |
|                 $plug = $plugs->where('name', $field['name'])->select('path', 'status')->orderBy('name')->get()->toArray();
 | |
|                 if ($plug) {
 | |
|                     foreach ($plug as $i => $value) {
 | |
|                         $attributes[$key]['path'] = $plug[$i]['path'];
 | |
|                         $attributes[$key]['status'] = $plug[$i]['status'];
 | |
|                     }
 | |
|                 } else {
 | |
|                     $attributes[$key]['path'] = $field['name'];
 | |
|                     $attributes[$key]['status'] = 0;
 | |
|                 }
 | |
|                 $attributes[$key]['name'] = $field['name'];
 | |
|                 $attributes[$key]['settings'] = $field['settings'];
 | |
|                 $attributes[$key]['description'] = $field['description'];
 | |
|                 $attributes[$key]['website'] = $field['website'];
 | |
|                 $attributes[$key]['version'] = $field['version'];
 | |
|                 $attributes[$key]['author'] = $field['author'];
 | |
|             }
 | |
|         }
 | |
|         //dd($attributes);
 | |
|         return $attributes;
 | |
|     }
 | |
| 
 | |
|     public function DeletePlugin($slug)
 | |
|     {
 | |
|         $dir = app_path().DIRECTORY_SEPARATOR.'Plugins'.DIRECTORY_SEPARATOR.$slug;
 | |
|         $this->deleteDirectory($dir);
 | |
|         /*
 | |
|          * remove service provider from app.php
 | |
|          */
 | |
|         $str = "'App\\Plugins\\$slug"."\\ServiceProvider',";
 | |
|         $path_to_file = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
 | |
|         $file_contents = file_get_contents($path_to_file);
 | |
|         $file_contents = str_replace($str, '//', $file_contents);
 | |
|         file_put_contents($path_to_file, $file_contents);
 | |
|         $plugin = new Plugin();
 | |
|         $plugin = $plugin->where('path', $slug)->first();
 | |
|         if ($plugin) {
 | |
|             $plugin->delete();
 | |
|         }
 | |
| 
 | |
|         return redirect()->back()->with('success', 'Deleted Successfully');
 | |
|     }
 | |
| 
 | |
|     public function StatusPlugin($slug)
 | |
|     {
 | |
|         $plugs = new Plugin();
 | |
|         $plug = $plugs->where('name', $slug)->first();
 | |
|         if (!$plug) {
 | |
|             $app = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
 | |
|             $str = "\n'App\\Plugins\\$slug"."\\ServiceProvider',";
 | |
|             $line_i_am_looking_for = 187;
 | |
|             $lines = file($app, FILE_IGNORE_NEW_LINES);
 | |
|             $lines[$line_i_am_looking_for] = $str;
 | |
|             file_put_contents($app, implode("\n", $lines));
 | |
|             $plugs->create(['name' => $slug, 'path' => $slug, 'status' => 1]);
 | |
| 
 | |
|             return redirect()->back()->with('success', 'Status has changed');
 | |
|         }
 | |
|         $status = $plug->status;
 | |
|         if ($status == 0) {
 | |
|             $plug->status = 1;
 | |
| 
 | |
|             $app = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
 | |
|             $str = "\n'App\\Plugins\\$slug"."\\ServiceProvider',";
 | |
|             $line_i_am_looking_for = 187;
 | |
|             $lines = file($app, FILE_IGNORE_NEW_LINES);
 | |
|             $lines[$line_i_am_looking_for] = $str;
 | |
|             file_put_contents($app, implode("\n", $lines));
 | |
|         }
 | |
|         if ($status == 1) {
 | |
|             $plug->status = 0;
 | |
|             /*
 | |
|              * remove service provider from app.php
 | |
|              */
 | |
|             $str = "\n'App\\Plugins\\$slug"."\\ServiceProvider',";
 | |
|             $path_to_file = base_path().DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'app.php';
 | |
| 
 | |
|             $file_contents = file_get_contents($path_to_file);
 | |
|             $file_contents = str_replace($str, '//', $file_contents);
 | |
|             file_put_contents($path_to_file, $file_contents);
 | |
|         }
 | |
|         $plug->save();
 | |
| 
 | |
|         return redirect()->back()->with('success', 'Status has changed');
 | |
|     }
 | |
| 
 | |
|     /*
 | |
|      *
 | |
|      */
 | |
| }
 | 
