diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index 99012424..6246eeea 100644 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -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 all logs?', ), 'servers' => array( 'server' => 'Server', diff --git a/src/psm/Module/Server/Controller/LogController.php b/src/psm/Module/Server/Controller/LogController.php index e3d7db6c..4620fc2e 100644 --- a/src/psm/Module/Server/Controller/LogController.php +++ b/src/psm/Module/Server/Controller/LogController.php @@ -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 * diff --git a/src/psm/Util/Server/Archiver/LogsArchiver.php b/src/psm/Util/Server/Archiver/LogsArchiver.php index 619d7fa2..78e053d5 100644 --- a/src/psm/Util/Server/Archiver/LogsArchiver.php +++ b/src/psm/Util/Server/Archiver/LogsArchiver.php @@ -67,4 +67,13 @@ class LogsArchiver implements ArchiverInterface { ); return true; } -} \ No newline at end of file + + /** + * 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; + } +} diff --git a/src/templates/default/module/server/log.tpl.html b/src/templates/default/module/server/log.tpl.html index c69fbab3..f05400b4 100644 --- a/src/templates/default/module/server/log.tpl.html +++ b/src/templates/default/module/server/log.tpl.html @@ -1,3 +1,9 @@ +{% if has_admin_actions %} + +  {{ label_clear_log }} + +

+{% endif %}
{% endfor %} - \ No newline at end of file +