+ * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
+ * @version Release: @package_version@
+ * @link http://phpservermon.neanderthal-technology.com/
+ * @since phpservermon 2.1
+ **/
+
+namespace psm\Module;
+use psm\Service\Database;
+use psm\Service\Template;
+
+/**
+ * Public API for all modules
+ */
+interface ModuleInterface {
+
+ public function __construct(Database $db, Template $tpl);
+
+ /**
+ * Initialize the module
+ */
+ public function initialize();
+}
+
+?>
\ No newline at end of file
diff --git a/src/psm/Module/Servers.class.php b/src/psm/Module/Servers.class.php
index ac27c2ab..b12fc519 100755
--- a/src/psm/Module/Servers.class.php
+++ b/src/psm/Module/Servers.class.php
@@ -26,99 +26,26 @@
**/
namespace psm\Module;
+use psm\Service\Database;
+use psm\Service\Template;
/**
* Server module. Add/edit/delete servers, show a list of all servers etc.
*/
-class Servers extends Core {
+class Servers extends AbstractModule {
- function __construct() {
- parent::__construct();
+ function __construct(Database $db, Template $tpl) {
+ parent::__construct($db, $tpl);
- // check mode
- if (isset($_GET['edit']) && is_numeric($_GET['edit'])) {
- // edit mode or insert mode
- $this->mode = 'update';
- } else {
- $this->mode = 'list';
-
- if(!empty($_POST)) {
- $this->executeSave();
- }
- if(isset($_GET['delete']) && is_numeric($_GET['delete'])) {
- $this->executeDelete();
- }
- }
- }
-
- // override parent::createHTML()
- public function createHTML() {
- switch($this->mode) {
- case 'list':
- $this->createHTMLList();
- break;
- case 'update':
- $this->createHTMLUpdate();
- break;
- }
-
- return parent::createHTML();
- }
-
- /**
- * Prepare the template to show the update screen for a single server
- */
- protected function createHTMLUpdate() {
- $this->setTemplateId('servers_update', 'servers.tpl.html');
-
- $server_id = $_GET['edit'];
-
- $tpl_data = array();
-
- switch(intval($server_id)) {
- case 0:
- // insert mode
- $tpl_data['titlemode'] = psm_get_lang('system', 'insert');
- $tpl_data['edit_server_id'] = '0';
- break;
- default:
- // edit mode
-
- // get server entry
- $edit_server = $this->db->selectRow(
- PSM_DB_PREFIX.'servers',
- array('server_id' => $server_id)
- );
- if (empty($edit_server)) {
- $this->message = 'Invalid server id';
- return $this->createHTMLList();
- }
-
- $tpl_data = array_merge($tpl_data, array(
- 'titlemode' => psm_get_lang('system', 'edit') . ' ' . $edit_server['label'],
- 'edit_server_id' => $edit_server['server_id'],
- 'edit_value_label' => $edit_server['label'],
- 'edit_value_ip' => $edit_server['ip'],
- 'edit_value_port' => $edit_server['port'],
- 'edit_type_selected_' . $edit_server['type'] => 'selected="selected"',
- 'edit_active_selected_' . $edit_server['active'] => 'selected="selected"',
- 'edit_email_selected_' . $edit_server['email'] => 'selected="selected"',
- 'edit_sms_selected_' . $edit_server['sms'] => 'selected="selected"',
- ));
-
- break;
- }
-
- $this->tpl->addTemplateData(
- $this->getTemplateId(),
- $tpl_data
- );
+ $this->setActions(array(
+ 'index', 'edit', 'save', 'delete',
+ ), 'index');
}
/**
* Prepare the template to show a list of all servers
*/
- protected function createHTMLList() {
+ protected function executeIndex() {
$this->setTemplateId('servers_list', 'servers.tpl.html');
// get servers from database
@@ -171,7 +98,55 @@ class Servers extends Core {
$this->tpl->addTemplateData('main_auto_refresh', array('seconds' => $auto_refresh));
$this->tpl->addTemplateData('main', array('auto_refresh' => $this->tpl->getTemplate('main_auto_refresh')));
}
+ }
+ /**
+ * Prepare the template to show the update screen for a single server
+ */
+ protected function executeEdit() {
+ $this->setTemplateId('servers_update', 'servers.tpl.html');
+
+ $server_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
+
+ $tpl_data = array();
+
+ switch(intval($server_id)) {
+ case 0:
+ // insert mode
+ $tpl_data['titlemode'] = psm_get_lang('system', 'insert');
+ $tpl_data['edit_server_id'] = '0';
+ break;
+ default:
+ // edit mode
+ // get server entry
+ $edit_server = $this->db->selectRow(
+ PSM_DB_PREFIX.'servers',
+ array('server_id' => $server_id)
+ );
+ if (empty($edit_server)) {
+ $this->addMessage('Invalid server id');
+ return $this->initializeAction('index');
+ }
+
+ $tpl_data = array_merge($tpl_data, array(
+ 'titlemode' => psm_get_lang('system', 'edit') . ' ' . $edit_server['label'],
+ 'edit_server_id' => $edit_server['server_id'],
+ 'edit_value_label' => $edit_server['label'],
+ 'edit_value_ip' => $edit_server['ip'],
+ 'edit_value_port' => $edit_server['port'],
+ 'edit_type_selected_' . $edit_server['type'] => 'selected="selected"',
+ 'edit_active_selected_' . $edit_server['active'] => 'selected="selected"',
+ 'edit_email_selected_' . $edit_server['email'] => 'selected="selected"',
+ 'edit_sms_selected_' . $edit_server['sms'] => 'selected="selected"',
+ ));
+
+ break;
+ }
+
+ $this->tpl->addTemplateData(
+ $this->getTemplateId(),
+ $tpl_data
+ );
}
/**
@@ -179,11 +154,14 @@ class Servers extends Core {
*/
protected function executeSave() {
// check for add/edit mode
- if (isset($_POST['label']) && isset($_POST['ip']) && isset($_POST['port'])) {
+ if(isset($_POST['label']) && isset($_POST['ip']) && isset($_POST['port'])) {
+ $server_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
+
$clean = array(
'label' => strip_tags($_POST['label']),
'ip' => strip_tags($_POST['ip']),
'port' => strip_tags($_POST['port']),
+ // @todo validate the following values
'type' => $_POST['type'],
'active' => $_POST['active'],
'email' => $_POST['email'],
@@ -191,35 +169,40 @@ class Servers extends Core {
);
// check for edit or add
- if ((int) $_POST['server_id'] > 0) {
+ if($server_id > 0) {
// edit
$this->db->save(
PSM_DB_PREFIX.'servers',
$clean,
- array('server_id' => $_POST['server_id'])
+ array('server_id' => $server_id)
);
- $this->message = psm_get_lang('servers', 'updated');
+ $this->addMessage(psm_get_lang('servers', 'updated'));
} else {
// add
$clean['status'] = 'on';
$this->db->save(PSM_DB_PREFIX.'servers', $clean);
- $this->message = psm_get_lang('servers', 'inserted');
+ $this->addMessage(psm_get_lang('servers', 'inserted'));
}
}
+ $this->initializeAction('index');
}
/**
* Executes the deletion of one of the servers
*/
protected function executeDelete() {
- // do delete
- $this->db->delete(
- PSM_DB_PREFIX . 'servers',
- array(
- 'server_id' => $_GET['delete']
- )
- );
- $this->message = psm_get_lang('system', 'deleted');
+ if(isset($_GET['id'])) {
+ $id = intval($_GET['id']);
+ // do delete
+ $this->db->delete(
+ PSM_DB_PREFIX . 'servers',
+ array(
+ 'server_id' => $id,
+ )
+ );
+ $this->addMessage(psm_get_lang('system', 'deleted'));
+ }
+ $this->initializeAction('index');
}
// override parent::createHTMLLabels()
diff --git a/src/psm/Module/Status.class.php b/src/psm/Module/Status.class.php
index 19f5ae97..844bbe0b 100755
--- a/src/psm/Module/Status.class.php
+++ b/src/psm/Module/Status.class.php
@@ -27,28 +27,25 @@
**/
namespace psm\Module;
+use psm\Service\Database;
+use psm\Service\Template;
/**
* Status module
*/
-class Status extends Core {
+class Status extends AbstractModule {
- function __construct() {
- parent::__construct();
- }
+ function __construct(Database $db, Template $tpl) {
+ parent::__construct($db, $tpl);
- // override parent::createHTML()
- public function createHTML() {
- $this->createHTMLList();
-
- return parent::createHTML();
+ $this->setActions('index', 'index');
}
/**
* Prepare the template to show a list of all servers
* @todo move the background colurs to the config
*/
- protected function createHTMLList() {
+ protected function executeIndex() {
$this->setTemplateId('status', 'status.tpl.html');
$this->addFooter(false);
diff --git a/src/psm/Module/Users.class.php b/src/psm/Module/Users.class.php
index 78dfb5df..71649266 100755
--- a/src/psm/Module/Users.class.php
+++ b/src/psm/Module/Users.class.php
@@ -26,56 +26,33 @@
**/
namespace psm\Module;
+use psm\Service\Database;
+use psm\Service\Template;
/**
* User module. Add, edit and delete users, or assign
* servers to users.
*/
-class Users extends Core {
+class Users extends AbstractModule {
public $servers;
- function __construct() {
- parent::__construct();
+ function __construct(Database $db, Template $tpl) {
+ parent::__construct($db, $tpl);
- // check mode
- if (isset($_GET['edit']) && is_numeric($_GET['edit'])) {
- // edit mode or insert mode
- $this->mode = 'update';
- } else {
- $this->mode = 'list';
-
- if(!empty($_POST)) {
- $this->executeSave();
- }
- if(isset($_GET['delete']) && is_numeric($_GET['delete'])) {
- $this->executeDelete();
- }
- }
+ $this->setActions(array(
+ 'index', 'edit', 'delete', 'save',
+ ), 'index');
$this->servers = $this->db->select(PSM_DB_PREFIX.'servers', null, array('server_id', 'label'));
}
- // override parent::createHTML()
- public function createHTML() {
- switch($this->mode) {
- case 'list':
- $this->createHTMLList();
- break;
- case 'update':
- $this->createHTMLUpdate();
- break;
- }
-
- return parent::createHTML();
- }
-
/**
* Prepare the template to show the update screen for a user
*/
- protected function createHTMLUpdate() {
+ protected function executeEdit() {
$this->setTemplateId('users_update', 'users.tpl.html');
- $user_id = $_GET['edit'];
+ $user_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
$tpl_data = array();
$servers_count = count($this->servers);
@@ -94,15 +71,13 @@ class Users extends Core {
break;
default:
// edit mode
-
- // get user entry
$edit_user = $this->db->selectRow(
PSM_DB_PREFIX.'users',
array('user_id' => $user_id)
);
if (empty($edit_user)) {
- $this->message = 'Invalid user id';
- return $this->createHTMLList();
+ $this->addMessage('Invalid user.');
+ return $this->initializeAction('index');
}
$tpl_data = array_merge($tpl_data, array(
@@ -137,7 +112,7 @@ class Users extends Core {
/**
* Prepare the template to show a list of all users
*/
- protected function createHTMLList() {
+ protected function executeIndex() {
$this->setTemplateId('users_list', 'users.tpl.html');
// build label array for the next loop
@@ -174,7 +149,6 @@ class Users extends Core {
}
// add servers to template
$this->tpl->addTemplateDataRepeat($this->getTemplateId(), 'users', $users);
-
}
/**
@@ -182,7 +156,6 @@ class Users extends Core {
*/
protected function executeSave() {
// check for add/edit mode
-
if (isset($_POST['name']) && isset($_POST['mobile']) && isset($_POST['email'])) {
$clean = array(
'name' => $_POST['name'],
@@ -190,36 +163,42 @@ class Users extends Core {
'email' => $_POST['email'],
'server_id' => (isset($_POST['server_id'])) ? implode(',', $_POST['server_id']) : ''
);
+ $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
// check for edit or add
- if ((int) $_POST['user_id'] > 0) {
+ if ((int) $id > 0) {
// edit
$this->db->save(
PSM_DB_PREFIX.'users',
$clean,
- array('user_id' => $_POST['user_id'])
+ array('user_id' => $id)
);
- $this->message = psm_get_lang('users', 'updated');
+ $this->addMessage(psm_get_lang('users', 'updated'));
} else {
// add
$this->db->save(PSM_DB_PREFIX.'users', $clean);
- $this->message = psm_get_lang('users', 'inserted');
+ $this->addMessage(psm_get_lang('users', 'inserted'));
}
}
+ $this->initializeAction('index');
}
/**
* Executes the deletion of a user
*/
protected function executeDelete() {
- // do delete
- $this->db->delete(
- PSM_DB_PREFIX . 'users',
- array(
- 'user_id' => $_GET['delete']
- )
- );
- $this->message = psm_get_lang('system', 'deleted');
+ $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
+
+ if($id > 0) {
+ $this->db->delete(
+ PSM_DB_PREFIX . 'users',
+ array(
+ 'user_id' => $id,
+ )
+ );
+ $this->addMessage(psm_get_lang('system', 'deleted'));
+ }
+ $this->initializeAction('index');
}
// override parent::createHTMLLabels()
diff --git a/src/templates/config.tpl.html b/src/templates/config.tpl.html
index b1850e93..59d54d1a 100755
--- a/src/templates/config.tpl.html
+++ b/src/templates/config.tpl.html
@@ -1,7 +1,7 @@
{config_update}
-
-
diff --git a/src/templates/servers.tpl.html b/src/templates/servers.tpl.html
index 7c3c508e..32ef0ae6 100755
--- a/src/templates/servers.tpl.html
+++ b/src/templates/servers.tpl.html
@@ -6,7 +6,7 @@