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 %}