| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <?php
- /**
- * Created by PhpStorm.
- * User: shenyang
- * Date: 2018/11/26
- * Time: 11:05 PM
- */
- namespace app\backend\modules\developer\controllers;
- use app\common\components\BaseController;
- use app\common\helpers\Url;
- use Rap2hpoutre\LaravelLogViewer\LaravelLogViewer;
- class LogViewerController extends BaseController
- {
- /**
- * @var
- */
- protected $request;
- /**
- * @var LaravelLogViewer
- */
- private $log_viewer;
- public function preAction()
- {
- parent::preAction();
- $this->log_viewer = new LaravelLogViewer();
- $this->request = app('request');
- }
- /**
- * @return array|mixed
- * @throws \Exception
- */
- public function index()
- {
- $folderFiles = [];
- if ($this->request->input('f')) {
- $this->log_viewer->setFolder($this->request->input('f'));
- $folderFiles = $this->log_viewer->getFolderFiles(true);
- }
- if ($this->request->input('l')) {
- $this->log_viewer->setFile($this->request->input('l'));
- }
- if ($early_return = $this->earlyReturn()) {
- return $early_return;
- }
- $data = [
- 'logs' => $this->log_viewer->all(),
- 'folders' => $this->log_viewer->getFolders(),
- 'current_folder' => $this->log_viewer->getFolderName(),
- 'folder_files' => $folderFiles,
- 'files' => $this->log_viewer->getFiles(true),
- 'current_file' => $this->log_viewer->getFileName(),
- 'standardFormat' => true,
- ];
- if ($this->request->wantsJson()) {
- return $data;
- }
- if (is_array($data['logs'])) {
- $firstLog = reset($data['logs']);
- if (!$firstLog['context'] && !$firstLog['level']) {
- $data['standardFormat'] = false;
- }
- }
- return view('developer.log', $data)->render();
- }
- /**
- * @return bool|mixed
- * @throws \Exception
- */
- private function earlyReturn()
- {
- if ($this->request->input('f')) {
- $this->log_viewer->setFolder($this->request->input('f'));
- }
- if ($this->request->input('dl')) {
- return $this->download($this->pathFromInput('dl'));
- } elseif ($this->request->has('clean')) {
- app('files')->put($this->pathFromInput('clean'), '');
- return $this->redirect(Url::absoluteWeb('developer.log-viewer'));
- } elseif ($this->request->has('del')) {
- app('files')->delete($this->pathFromInput('del'));
- return $this->redirect(Url::absoluteWeb('developer.log-viewer'));
- } elseif ($this->request->has('delall')) {
- $files = ($this->log_viewer->getFolderName())
- ? $this->log_viewer->getFolderFiles(true)
- : $this->log_viewer->getFiles(true);
- foreach ($files as $file) {
- app('files')->delete($this->log_viewer->pathToLogFile($file));
- }
- return $this->redirect(Url::absoluteWeb('developer.log-viewer'));
- }
- return false;
- }
- /**
- * @param string $input_string
- * @return string
- * @throws \Exception
- */
- private function pathFromInput($input_string)
- {
- return $this->log_viewer->pathToLogFile($this->request->input($input_string));
- }
- /**
- * @param $to
- * @return mixed
- */
- private function redirect($to)
- {
- if (function_exists('redirect')) {
- return redirect($to);
- }
- return app('redirect')->to($to);
- }
- /**
- * @param string $data
- * @return mixed
- */
- private function download($data)
- {
- if (function_exists('response')) {
- return response()->download($data);
- }
- // For laravel 4.2
- return app('\Illuminate\Support\Facades\Response')->download($data);
- }
- }
|