summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--inc/pagination.inc.php47
-rw-r--r--inc/user.inc.php15
-rw-r--r--modules-available/usermanagement/page.inc.php51
-rw-r--r--modules-available/usermanagement/templates/user-management.html107
4 files changed, 144 insertions, 76 deletions
diff --git a/inc/pagination.inc.php b/inc/pagination.inc.php
new file mode 100644
index 00000000..65785a36
--- /dev/null
+++ b/inc/pagination.inc.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * TODO: Why does this class exist?
+ * There's already the Paginate class which works more efficient by using the LIMIT statement
+ * for the query, and has more options. Consider refactoring the places where this class is
+ * used (see syslog or eventlog for usage examples), then get rid of this one.
+ */
+class Pagination
+{
+ private $items;
+ private $page;
+ private $maxItems;
+
+ public function __construct($par1, $par2)
+ {
+ $this->items = $par1;
+ $this->page = $par2;
+
+ $this->maxItems = 5;
+ }
+
+ public function getPagination()
+ {
+ $ret = array();
+ $n = ceil(count($this->items) / $this->maxItems);
+ for ($i = 1; $i <= $n; $i++) {
+ $class = ($i == $this->page) ? 'active' : '';
+ $ret[] = array(
+ 'class' => $class,
+ 'page' => $i
+ );
+ }
+ return $ret;
+ }
+
+ public function getItems()
+ {
+ $ret = array();
+ $first = ($this->page - 1) * $this->maxItems;
+ for ($i = 0; $i < $this->maxItems; $i++) {
+ if ($first + $i < count($this->items))
+ $ret[] = $this->items[$first + $i];
+ }
+ return $ret;
+ }
+} \ No newline at end of file
diff --git a/inc/user.inc.php b/inc/user.inc.php
index 49500aa2..dc603dac 100644
--- a/inc/user.inc.php
+++ b/inc/user.inc.php
@@ -97,19 +97,4 @@ class User
return self::$user['lasteventid'];
}
- public static function addUser($data){
- Database::exec ( "INSERT INTO user SET login = :login, passwd = :pass, fullname = :name, phone = :phone, email = :email, permissions = 4", $data );
- $ret = Database::queryFirst('SELECT userid FROM user WHERE login = :user LIMIT 1', array('user' => $data['login']));
- $user = array(
- 'user' => $ret['userid']
- );
- Database::exec ( "INSERT INTO setting_partition SET partition_id = '44', size = '5G', mount_point = '/tmp', user = :user", $user );
- Database::exec ( "INSERT INTO setting_partition SET partition_id = '43', size = '20G', mount_point = '/boot', options = 'bootable', user = :user", $user );
- Database::exec ( "INSERT INTO setting_partition SET partition_id = '40', size = '20G', mount_point = '/cache/export/dnbd3', user = :user", $user );
- Database::exec ( "INSERT INTO setting_partition SET partition_id = '41', size = '5G', mount_point = '/home', user = :user", $user );
- Database::exec ( "INSERT INTO setting_partition SET partition_id = '82', size = '1G', user = :user", $user );
- Message::addSuccess('add-user');
- EventLog::info ( User::getName () . ' created user ' . $data['login'] );
- }
-
}
diff --git a/modules-available/usermanagement/page.inc.php b/modules-available/usermanagement/page.inc.php
index 34dc517f..605f66c0 100644
--- a/modules-available/usermanagement/page.inc.php
+++ b/modules-available/usermanagement/page.inc.php
@@ -23,7 +23,7 @@ class Page_Usermanagement extends Page
$this->edit(Request::post('userid'),Request::post('username'),Request::post('phone'),Request::post('email'), 4);
break;
case "create":
- $this->create(Request::post('login'),Request::post('username'),Request::post('pass'),Request::post('phone'),Request::post('email'), 4);
+ $this->create(Request::post('login'),Request::post('username'),Request::post('pass'),Request::post('phone'),Request::post('email'), Request::post('city'));
break;
case "delete":
$this->delete(Request::post('userid'));
@@ -59,16 +59,28 @@ class Page_Usermanagement extends Page
);
}
- //$pag = new Paginate($users,$this->page);
+ // load every city
+ $cities = array();
+ $res = Database::simpleQuery("SELECT cityid, name, ip FROM cities ORDER BY name DESC");
+ while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
+ $cities[] = array(
+ 'id' => $row['cityid'],
+ 'name' => $row['name'],
+ 'ip' => $row['ip']
+ );
+ }
+
+ $pag = new Pagination($users,$this->page);
Render::addTemplate('user-management', array(
'admin_id' => $admin[0],
'admin_username' => $admin[1],
'admin_name' => $admin[2],
'admin_telephone' => $admin[3],
- 'admin_email' => $admin[4]
- //'users' => $pag->getItems(),
- //'pages' => $pag->getPagination()
+ 'admin_email' => $admin[4],
+ 'cities' => $cities,
+ 'users' => $pag->getItems(),
+ 'pages' => $pag->getPagination()
));
}
@@ -84,15 +96,34 @@ class Page_Usermanagement extends Page
Message::addSuccess('update-user');
}
- private function create($login, $username, $password, $phone, $email){
- $data = array (
+ private function create($login, $username, $password, $phone, $email, $city){
+ if (empty($login) || empty($username) || empty ($password)) {
+ Message::addError ( 'empty-field' );
+ Util::redirect ( '?do=Usermanagement' );
+ } else {
+ $data = array (
'login' => $login,
'pass' => Crypto::hash6 ( $password ),
'name' => $username,
'phone' => $phone,
- 'email' => $email
- );
- User::addUser($data);
+ 'email' => $email,
+ 'city' => $city,
+ 'permission' => 4
+ );
+ // TODO: Remove city column from user table; should be done in an n:m fashion via extra table
+ Database::exec ( "INSERT INTO user SET login = :login, passwd = :pass, fullname = :name, phone = :phone, email = :email, city = :city, permissions = :permission", $data );
+ $ret = Database::queryFirst('SELECT userid FROM user WHERE login = :user LIMIT 1', array('user' => $data['login']));
+ $user = array(
+ 'user' => $ret['userid']
+ );
+ Database::exec ( "INSERT INTO setting_partition SET partition_id = '44', size = '5G', mount_point = '/tmp', user = :user", $user );
+ Database::exec ( "INSERT INTO setting_partition SET partition_id = '43', size = '20G', mount_point = '/boot', options = 'bootable', user = :user", $user );
+ Database::exec ( "INSERT INTO setting_partition SET partition_id = '40', size = '20G', mount_point = '/cache/export/dnbd3', user = :user", $user );
+ Database::exec ( "INSERT INTO setting_partition SET partition_id = '41', size = '5G', mount_point = '/home', user = :user", $user );
+ Database::exec ( "INSERT INTO setting_partition SET partition_id = '82', size = '1G', user = :user", $user );
+ Message::addSuccess('add-user');
+ EventLog::info ( User::getName () . ' created user ' . $data['login'] );
+ }
}
private function delete($userid){
diff --git a/modules-available/usermanagement/templates/user-management.html b/modules-available/usermanagement/templates/user-management.html
index fc14355f..4e4ce7dc 100644
--- a/modules-available/usermanagement/templates/user-management.html
+++ b/modules-available/usermanagement/templates/user-management.html
@@ -11,18 +11,18 @@
<th style="text-align: center;">{{lang_email}}</th>
<th style="text-align: center;"></th>
</tr>
- <tr>
- <form method="post" action="">
- <input type="hidden" name="action" value="editAdmin">
- <input type="hidden" name="token" value="{{token}}">
- <td><input class="form-control" name="userid" type="text" readonly="readonly" value="{{admin_id}}" size="3"></td>
- <td><input class="form-control" type="text" disabled="disabled" value="{{admin_username}}"></td>
- <td><input class="form-control" name="username" type="text" value="{{admin_name}}"></td>
- <td><input class="form-control" name="phone" type="text" value="{{admin_telephone}}"></td>
- <td><input class="form-control" name="email" type="text" value="{{admin_email}}"></td>
- <td><input class="btn btn-primary" type="submit" value="{{lang_save}}"></td>
- </form>
- </tr>
+ <tr>
+ <form method="post" action="">
+ <input type="hidden" name="action" value="editAdmin">
+ <input type="hidden" name="token" value="{{token}}">
+ <td><input class="form-control" name="userid" type="text" readonly="readonly" value="{{admin_id}}" size="3"></td>
+ <td><input class="form-control" type="text" disabled="disabled" value="{{admin_username}}"></td>
+ <td><input class="form-control" name="username" type="text" value="{{admin_name}}"></td>
+ <td><input class="form-control" name="phone" type="text" value="{{admin_telephone}}"></td>
+ <td><input class="form-control" name="email" type="text" value="{{admin_email}}"></td>
+ <td><input class="btn btn-primary" type="submit" value="{{lang_save}}"></td>
+ </form>
+ </tr>
</table>
</div>
@@ -32,21 +32,26 @@
</div>
<div class="panel-body">
<p>
- {{lang_userInfo}}
+ {{lang_userInfo}}
</p>
-
+
</div>
<table class="table">
<tr>
<form method="post" action="?do=Usermanagement">
- <input type="hidden" name="action" value="create">
- <input type="hidden" name="token" value="{{token}}">
- <td><input class="form-control" name="login" type="text" placeholder="{{lang_login}}"></td>
- <td><input class="form-control" name="username" type="text" placeholder="{{lang_username}}"></td>
- <td><input class="form-control" name="pass" type="password" placeholder="{{lang_password}}"></td>
- <td><input class="form-control" name="phone" type="text" placeholder="{{lang_telephone}}"></td>
- <td><input class="form-control" name="email" type="text" placeholder="{{lang_email}}"></td>
- <td><input class="btn btn-primary" type="submit" value="{{lang_create}}"></td>
+ <input type="hidden" name="action" value="create">
+ <input type="hidden" name="token" value="{{token}}">
+ <td><input class="form-control" name="login" type="text" placeholder="{{lang_login}}*"></td>
+ <td><input class="form-control" name="username" type="text" placeholder="{{lang_username}}*"></td>
+ <td><input class="form-control" name="pass" type="password" placeholder="{{lang_password}}*"></td>
+ <td><input class="form-control" name="phone" type="text" placeholder="{{lang_telephone}}"></td>
+ <td><input class="form-control" name="email" type="text" placeholder="{{lang_email}}"></td>
+ <td><select class="form-control" name="city">
+ {{#cities}}
+ <option value="{{id}}">{{name}}</option>
+ {{/cities}}
+ </select></td>
+ <td><input class="btn btn-primary" type="submit" value="{{lang_create}}"></td>
</form>
</tr>
<tr>
@@ -86,35 +91,35 @@
<div class="modal-content">
<div class="modal-header"><h4 class="modal-title">{{lang_editUser}}</h4></div>
<div class="modal-body">
- <form method="post" action="">
- <input type="hidden" name="action" value="edit">
- <input type="hidden" name="token" value="{{token}}">
- <div class="form-group">
- <label for="userid">ID</label>
- <input type="text" class="form-control" name="userid" readonly="readonly" name="userid" value="{{id}}">
- </div>
- <div class="form-group">
- <label for="userid">Login</label>
- <input type="text" class="form-control" name="login" disabled="disabled" placeholder="{{lang_login}}" value="{{username}}">
- </div>
- <div class="form-group">
- <label for="userid">{{lang_username}}</label>
- <input type="text" class="form-control" name="username" placeholder="{{lang_username}}" value="{{name}}">
- </div>
- <div class="form-group">
- <label for="userid">{{lang_telephone}}</label>
- <input type="text" class="form-control" name="phone" placeholder="{{lang_telephone}}" value="{{telephone}}">
- </div>
- <div class="form-group">
- <label for="userid">{{lang_email}}</label>
- <input type="text" class="form-control" name="email" placeholder="{{lang_email}}" value="{{email}}">
- </div>
- <div class="form-group">
- <b>Permissões:</b>
- <select name="permissions" class="form-control">
- <option value="4">Normal</option>
- </select>
- </div>
+ <form method="post" action="">
+ <input type="hidden" name="action" value="edit">
+ <input type="hidden" name="token" value="{{token}}">
+ <div class="form-group">
+ <label for="userid">ID</label>
+ <input type="text" class="form-control" name="userid" readonly="readonly" name="userid" value="{{id}}">
+ </div>
+ <div class="form-group">
+ <label for="userid">Login</label>
+ <input type="text" class="form-control" name="login" disabled="disabled" placeholder="{{lang_login}}" value="{{username}}">
+ </div>
+ <div class="form-group">
+ <label for="userid">{{lang_username}}</label>
+ <input type="text" class="form-control" name="username" placeholder="{{lang_username}}" value="{{name}}">
+ </div>
+ <div class="form-group">
+ <label for="userid">{{lang_telephone}}</label>
+ <input type="text" class="form-control" name="phone" placeholder="{{lang_telephone}}" value="{{telephone}}">
+ </div>
+ <div class="form-group">
+ <label for="userid">{{lang_email}}</label>
+ <input type="text" class="form-control" name="email" placeholder="{{lang_email}}" value="{{email}}">
+ </div>
+ <div class="form-group">
+ <b>Permissões:</b>
+ <select name="permissions" class="form-control">
+ <option value="4">Normal</option>
+ </select>
+ </div>
</div>
<div class="modal-footer">
<input class="btn btn-primary" type="submit" value="{{lang_save}}">