コード例 #1
0
ファイル: Tools.php プロジェクト: vincium/bourg-la-reine
 public function log()
 {
     // auth
     Auth::isAdminAuthorized($this->signedUser, 'admin.tools.log', true, '/tools');
     $delete = Converter::bool('delete');
     $code = Converter::int('code');
     $id = Converter::int('id', 'get');
     $deleteUrl = $code != 0 ? '?code=' . $code . '&delete=true' : '?delete=true';
     if ($delete) {
         Auth::isAdminAuthorized($this->signedUser, 'admin.tools.log.edit', true, '/tools');
         \Rebond\Core\Log\Data::clear($code);
         Session::adminSuccess('logClear', '/tools/log');
     }
     if ($id != 0) {
         $log = \Rebond\Core\Log\Data::loadById($id);
         if (isset($log)) {
             // view
             $this->setTpl();
             $formLog = new \Rebond\Core\Log\Form($log);
             // main
             $tplMain = new Template(Template::MODULE, ['core', 'log']);
             $tplMain->set('item', $formLog);
             // layout
             $this->tplLayout->set('column1', $tplMain->render('view'));
             // master
             $this->tplMaster->set('layout', $this->tplLayout->render('layout-1-col'));
             return $this->tplMaster->render('tpl-default');
         }
     }
     $options = [];
     $options['order'][] = 'log.modified_date DESC';
     if ($code != 0) {
         $options['where'][] = ['log.code = ?', $code];
     }
     $options['limit'][] = 200;
     $logs = \Rebond\Core\Log\Data::loadAll($options);
     // view
     $this->setTpl();
     // filter
     $tplFilter = new Template(Template::MODULE, ['core', 'log']);
     $tplFilter->set('count', count($logs));
     $tplFilter->set('list', \Rebond\Util\Error::errorCodes());
     $tplFilter->set('code', $code);
     $tplFilter->set('deleteUrl', '/tools/log/' . $deleteUrl);
     // main
     $tplMain = new Template(Template::MODULE, ['core', 'log']);
     $tplMain->set('items', $logs);
     // layout
     $this->tplLayout->set('column1', $tplFilter->render('filter'));
     $this->tplLayout->set('column2', $tplMain->render('listing'));
     // master
     $this->tplMaster->set('layout', $this->tplLayout->render('layout-2-row'));
     $this->tplMaster->set('jsLauncher', 'toolsLog');
     return $this->tplMaster->render('tpl-default');
 }
コード例 #2
0
ファイル: Log.php プロジェクト: vincium/bourg-la-reine
 public static function log($code, $message, $file, $line)
 {
     $app = \Rebond\App::instance();
     $d = new \DateTime();
     $message = self::textify($message);
     if ($app->step() != \Rebond\Config::STEP_RUNNING) {
         $log = \Rebond\Config::getPath('log') . 'log.txt';
         $file = str_replace(FULL_PATH, '/', str_replace('\\', '/', $file));
         $trace = stripos($file, 'SplClassLoader') !== false ? self::textify(debug_backtrace()) : '';
         // date # code # message # trace # file # line
         $message = $d->format('Y-m-d H:i:s') . '#' . Error::value($code) . '#' . str_replace(FULL_PATH, '/', $message) . '#' . $trace . '#' . $file . '#' . $line . PHP_EOL;
         \Rebond\Util\File::save($log, 'a', $message);
     } else {
         if (!in_array($code, [Error::LANG_NOT_FOUND, Error::PAGE_NOT_FOUND]) && $app->env() == \Rebond\Config::ENV_PROD && $app->site()->getSendMailOnError()) {
             $emails = $app->site()->getMailListOnError();
             if ($emails != '') {
                 $emails = explode(',', $emails);
                 \Rebond\App\Error\Mail::error($app->site()->getTitle(), $emails, $code, $message, $file, $line);
             }
         }
         $log = null;
         if ($code == Error::LANG_NOT_FOUND) {
             $options = [];
             $options['where'][] = ['log.request_uri = ?', $_SERVER['REQUEST_URI']];
             $options['where'][] = ['log.message = ?', $message];
             $log = \Rebond\Core\Log\Data::load($options);
         }
         if (!isset($log)) {
             $log = new \Rebond\Core\Log\Model();
             $log->setCode($code);
             $log->setMessage($message);
             $log->setRequestUri($_SERVER['REQUEST_URI']);
         }
         $log->setUserId($app->userId());
         $log->setFile($file);
         $log->setLine($line);
         $log->setTrace(self::textify(debug_backtrace()));
         $log->setIp($_SERVER['REMOTE_ADDR']);
         $log->setReferer(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');
         return $log->save();
     }
     return 0;
 }
コード例 #3
0
ファイル: Gadget.php プロジェクト: vincium/resa
 public function detail()
 {
     if (!$this->app->isDebug()) {
         return self::generic();
     }
     $logId = Util\Converter::toInt('id');
     if ($logId == 0) {
         return self::generic();
     }
     $log = \Rebond\Core\Log\Data::loadById($logId);
     if (!isset($log)) {
         return self::generic();
     }
     $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
     // main
     $tpl = new Util\Template(Util\Template::MODULE, ['app', 'error']);
     $tpl->set('log', $log);
     $tpl->set('referer', $referer);
     $tpl->set('adminUrl', \Rebond\Config::getPath('adminUrl'));
     return $tpl->render('detail');
 }
コード例 #4
0
ファイル: Error.php プロジェクト: vincium/bourg-la-reine
 public function detail()
 {
     $this->setBaseTpl();
     // auth
     Auth::isAdminAuthorized($this->signedUser, null, true, '/profile/sign-in');
     $logId = Converter::int('id');
     if ($logId == 0) {
         return $this->generic();
     }
     if ($this->app->logLevel() == 1) {
         return $this->generic();
     }
     $log = \Rebond\Core\Log\Data::loadById($logId);
     if (!isset($log)) {
         return $this->generic();
     }
     $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
     // main
     $this->tplMain->set('log', $log);
     $this->tplMain->set('referer', $referer);
     // layout
     $this->tplLayout->set('column1', $this->tplMain->render('detail'));
     // master
     $this->tplMaster->set('layout', $this->tplLayout->render('layout-1-col'));
     return $this->tplMaster->render('tpl-error');
 }