diff options
-rw-r--r-- | inc/pagination.inc.php | 47 | ||||
-rw-r--r-- | inc/user.inc.php | 15 | ||||
-rw-r--r-- | modules-available/usermanagement/page.inc.php | 51 | ||||
-rw-r--r-- | modules-available/usermanagement/templates/user-management.html | 107 |
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}}"> |