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', 'sms' => 'SMS',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'no_logs' => 'No logs', '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( 'servers' => array(
'server' => 'Server', 'server' => 'Server',

View File

@ -36,7 +36,9 @@ class LogController extends AbstractServerController {
function __construct(Database $db, \Twig_Environment $twig) { function __construct(Database $db, \Twig_Environment $twig) {
parent::__construct($db, $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_date' => psm_get_lang('system', 'date'),
'label_users' => ucfirst(psm_get_lang('menu', 'user')), 'label_users' => ucfirst(psm_get_lang('menu', 'user')),
'label_no_logs' => psm_get_lang('log', 'no_logs'), 'label_no_logs' => psm_get_lang('log', 'no_logs'),
'label_clear_log' => psm_get_lang('log', 'clear'),
'tabs' => array(), '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'); $log_types = array('status', 'email', 'sms', 'pushover');
foreach($log_types as $key) { foreach($log_types as $key) {
@ -99,10 +112,26 @@ class LogController extends AbstractServerController {
} }
$tab_data['entries'] = $records; $tab_data['entries'] = $records;
$tpl_data['tabs'][] = $tab_data; $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); 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 * Get all the log entries for a specific $type
* *

View File

@ -67,4 +67,13 @@ class LogsArchiver implements ArchiverInterface {
); );
return true; 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"> <div class="tabbable">
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="active"><a href="#log_status_content" data-toggle="tab">{{ label_status }}</a></li> <li class="active"><a href="#log_status_content" data-toggle="tab">{{ label_status }}</a></li>
@ -57,4 +63,4 @@
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
</div> </div>