Added button to clear the logs

Only admins can clear the logs. The whole log and log_users table will
be cleared.
pull/505/head
Timz99 2017-08-19 17:42:25 +02:00
parent 50ab06640e
commit a6c988e9fa
4 changed files with 50 additions and 3 deletions

View File

@ -113,6 +113,9 @@ $sm_lang = array(
'sms' => 'SMS',
'pushover' => 'Pushover',
'no_logs' => 'No logs',
'clear' => 'Clear log',
'delete_title' => 'Delete log',
'delete_message' => 'Are you sure you want to delete <b>all</b> logs?',
),
'servers' => array(
'server' => 'Server',

View File

@ -36,7 +36,9 @@ class LogController extends AbstractServerController {
function __construct(Database $db, \Twig_Environment $twig) {
parent::__construct($db, $twig);
$this->setActions('index', 'index');
$this->setActions(array(
'index', 'delete',
), 'index');
}
/**
@ -56,8 +58,19 @@ class LogController extends AbstractServerController {
'label_date' => psm_get_lang('system', 'date'),
'label_users' => ucfirst(psm_get_lang('menu', 'user')),
'label_no_logs' => psm_get_lang('log', 'no_logs'),
'label_clear_log' => psm_get_lang('log', 'clear'),
'tabs' => array(),
);
if($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
$modal = new \psm\Util\Module\Modal($this->twig, 'delete', \psm\Util\Module\Modal::MODAL_TYPE_DANGER);
$this->addModal($modal);
$modal->setTitle(psm_get_lang('log', 'delete_title'));
$modal->setMessage(psm_get_lang('log', 'delete_message'));
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
$tpl_data['has_admin_actions'] = true;
}
$log_types = array('status', 'email', 'sms', 'pushover');
foreach($log_types as $key) {
@ -99,10 +112,26 @@ class LogController extends AbstractServerController {
}
$tab_data['entries'] = $records;
$tpl_data['tabs'][] = $tab_data;
$tpl_data['url_delete'] = psm_build_url(array(
'mod' => 'server_log',
'action' => 'delete',
));
}
return $this->twig->render('module/server/log.tpl.html', $tpl_data);
}
protected function executeDelete() {
/**
* Empty table log and log_users.
* Only when user is admin.
*/
if($this->getUser()->getUserLevel() == PSM_USER_ADMIN) {
$archiver = new \psm\Util\Server\Archiver\LogsArchiver($this->db);
$archiver->cleanupall();
}
return $this->runAction('index');
}
/**
* Get all the log entries for a specific $type
*

View File

@ -67,4 +67,13 @@ class LogsArchiver implements ArchiverInterface {
);
return true;
}
/**
* Empty tables log and log_users
*/
public function cleanupall() {
$this->db->delete(PSM_DB_PREFIX . "log");
$this->db->delete(PSM_DB_PREFIX . "log_users");
return true;
}
}

View File

@ -1,3 +1,9 @@
{% if has_admin_actions %}
<a class="btn btn-danger show-modal" href="{{ url_delete|raw }}" title="Delete" data-modal-id="delete" data-modal-param="{{ label }}">
<i class="icon-trash icon-white"></i>&nbsp;{{ label_clear_log }}
</a>
<br><br>
{% endif %}
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active"><a href="#log_status_content" data-toggle="tab">{{ label_status }}</a></li>