145 lines
3.8 KiB
PHP
145 lines
3.8 KiB
PHP
<?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);
|
|
}
|
|
} |