PageRenderTime 25ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/admin/units/users.php

https://gitlab.com/kidaa/quantum
PHP | 200 lines | 178 code | 22 blank | 0 comment | 30 complexity | 8aab49755e41df383850a3d6b7e46ce3 MD5 | raw file
Possible License(s): GPL-2.0, MPL-2.0-no-copyleft-exception
  1. <?php
  2. namespace A;
  3. class Users extends \AUnit {
  4. private function updateUsers() {
  5. foreach ($_POST['fp'] as $id) {
  6. switch ($_POST['action']) {
  7. case 'activate':
  8. $this->engine->db->query("UPDATE " . DB_PREF . "users SET `enabled`=1 WHERE id=" . (int)$id);
  9. break;
  10. case 'deactivate':
  11. $this->engine->db->query("UPDATE " . DB_PREF . "users SET `enabled`=0 WHERE id=" . (int)$id);
  12. break;
  13. case 'remove':
  14. $this->engine->db->query("DELETE FROM " . DB_PREF . "users WHERE id=" . (int)$id);
  15. break;
  16. default:
  17. break;
  18. }
  19. }
  20. $_SESSION['msg'] = 'success';
  21. $this->engine->url->redirect($this->engine->url->full);
  22. }
  23. private function getPageCount($search, $search_query, $limit) {
  24. if ($search == '') {
  25. $q = $this->engine->db->query("SELECT COUNT(1) as count FROM " . DB_PREF . "users");
  26. } else {
  27. $q = $this->engine->db->query("SELECT COUNT(1) as count FROM " . DB_PREF . "users WHERE " . $search_query);
  28. }
  29. $all_vals = 0;
  30. if ($q->num_rows > 0) {
  31. $f = $q->row;
  32. $all_vals = (int)$f['count'];
  33. }
  34. return ceil($all_vals / $limit) > 1 ? ceil($all_vals / $limit) : 1;
  35. }
  36. private function getUsers($search, $search_query, $start, $limit) {
  37. $users = array();
  38. if ($search == '') {
  39. $q = $this->engine->db->query("SELECT " . DB_PREF . "users.*, " . DB_PREF .
  40. "user_group.description as ug FROM " . DB_PREF . "users, " . DB_PREF . "user_group WHERE " . DB_PREF .
  41. "user_group.id = " . DB_PREF . "users.user_group LIMIT " . (int)$start . ", " . (int)$limit);
  42. } else {
  43. $q = $this->engine->db->query("SELECT " . DB_PREF . "users.*, " . DB_PREF .
  44. "user_group.description as ug FROM " . DB_PREF . "users, " . DB_PREF . "user_group WHERE " . DB_PREF .
  45. "user_group.id = " . DB_PREF . "users.user_group AND " . $search_query . " LIMIT " . (int)$start .
  46. ", " . (int)$limit);
  47. }
  48. resizeImage(ROOT_DIR . 'upload/images/no-image.jpg', 50, 50, false);
  49. foreach ($q->rows as $user) {
  50. $users[$user['id']]['photo'] = resizeImage($user['photo'], 50, 50, false);
  51. $users[$user['id']]['name'] = $user['name'];
  52. $users[$user['id']]['description'] = $user['description'];
  53. $users[$user['id']]['email'] = $user['email'];
  54. $users[$user['id']]['joined'] = date("Y-M-d D h:i:s", $user['joined']);
  55. $users[$user['id']]['enabled'] = (bool)$user['enabled'];
  56. $users[$user['id']]['user_group'] = $user['ug'];
  57. }
  58. return $users;
  59. }
  60. private function updateUser() {
  61. $query = '';
  62. if (isset($_POST['chp']) && isset($_POST['pass'])) {
  63. $query = ", `password`='" . md5(md5($_POST['pass'])) . "'";
  64. }
  65. $this->engine->db->query("UPDATE " . DB_PREF . "users SET `name`='" .
  66. $this->engine->db->escape($_POST['uname']) . "', `photo`='" . $this->engine->db->escape($_POST['photo']) .
  67. "', `email`='" . $this->engine->db->escape($_POST['email']) . "', `user_group`='" .
  68. $this->engine->db->escape($_POST['group']) . "', `description`='" .
  69. $this->engine->db->escape($_POST['description']) . "', `birth`='" .
  70. $this->engine->db->escape(strtotime($_POST['birth'])) . "'" . $query . " WHERE id=" . (int)$_GET['id']);
  71. $_SESSION['msg'] = 'success';
  72. $this->engine->url->redirect($this->engine->url->full);
  73. }
  74. private function addUser() {
  75. $this->engine->db->query("INSERT INTO " . DB_PREF . "users (`name`, `photo`, `email`, `user_group`, " .
  76. "`description`, `birth`, `joined`, `password`) VALUES ('" . $this->engine->db->escape($_POST["uname"]) .
  77. "', '" . $this->engine->db->escape($_POST["photo"]) . "', '" . $this->engine->db->escape($_POST["email"]) .
  78. "', '" . $this->engine->db->escape($_POST["group"]) . "', '" . $this->engine->db->escape($_POST["description"]) .
  79. "', '" . $this->engine->db->escape(strtotime($_POST["birth"])) . "', '" . strtotime('now') . "', '" .
  80. $this->engine->db->escape($_POST["pass"]) . "');");
  81. $_SESSION['msg'] = 'success';
  82. $this->engine->url->redirect(PRTCL . "://" . $this->engine->host . ADM_PATH . "index.php?page=users&view=tiny&id=" .
  83. $this->engine->db->getLastId());
  84. }
  85. private function getUserGroups() {
  86. $q = $this->engine->db->query("SELECT * FROM " . DB_PREF . "user_group");
  87. $user_groups = array();
  88. foreach ($q->rows as $f) {
  89. $user_groups[$f['id']] = $f['description'];
  90. }
  91. return $user_groups;
  92. }
  93. private function getUser() {
  94. $q = $this->engine->db->query("SELECT * FROM " . DB_PREF . "users WHERE id=" . (int)$_GET['id']);
  95. $user = $q->row;
  96. resizeImage(ROOT_DIR . 'upload/images/no-image.jpg', 150, 130, false);
  97. if (!empty($user)) {
  98. $user['photo'] = ($user['photo'] <> '') ? $user['photo'] : ROOT_DIR . 'upload/images/no-image.jpg';
  99. $user['thumb'] = resizeImage($user['photo'], 150, 130, false);
  100. $user['birth'] = date("d-m-Y", $user['birth']);
  101. $user['joined'] = date("Y-M-d D h:i:s", $user['joined']);
  102. $user['last_login'] = ($user['last_login'] > 1000) ? date("Y-M-d D h:i:s", $user['last_login']) : $this->language['never'];
  103. $user['adm_last_login'] = ($user['adm_last_login'] > 1000) ? date("Y-M-d D h:i:s", $user['adm_last_login']) : $this->language['never'];
  104. } else {
  105. $user = array(
  106. 'name' => '',
  107. 'email' => '',
  108. 'user_group' => 5,
  109. 'description' => '',
  110. 'photo' => ROOT_DIR . 'upload/images/no-image.jpg',
  111. 'thumb' => resizeImage(ROOT_DIR . 'upload/images/no-image.jpg', 150, 130, false),
  112. 'birth' => date("d-m-Y"),
  113. 'joined' => date("Y-M-d D h:i:s"),
  114. 'last_login' => $this->language['never'],
  115. 'adm_last_login' => $this->language['never']
  116. );
  117. }
  118. return $user;
  119. }
  120. public function index() {
  121. if ($_SESSION['access'] > 2) {
  122. die('Access denied');
  123. }
  124. if (isset($_POST['fp'])) {
  125. $this->updateUsers();
  126. }
  127. if (isset($_POST['uname']) && (int)$_GET['id'] > 0) {
  128. $this->updateUser();
  129. }
  130. if (isset($_POST['uname']) && $_GET['id'] == 'new') {
  131. $this->addUser();
  132. }
  133. if (!isset($_GET["page_n"]) || (int)$_GET['page_n'] < 1) {
  134. $_GET["page_n"] = 1;
  135. }
  136. if (!isset($_GET["per_page"]) || (int)$_GET['per_page'] < 1) {
  137. $_GET['per_page'] = 10;
  138. }
  139. if (isset($_SESSION['msg']) && $_SESSION['msg'] == 'success') {
  140. $this->data['text_message'] = $this->language['changes_applied'];
  141. $this->data['class_message'] = 'success';
  142. unset($_SESSION['msg']);
  143. }
  144. if (isset($_GET['view']) && $_GET['view'] == 'tiny') {
  145. $this->data['user_groups'] = $this->getUserGroups();
  146. $this->data['user'] = $this->getUser();
  147. $this->engine->document->addHeaderString('<script type="text/javascript" src="template/js/qfinder/qfinder.js"></script>');
  148. $this->data['breadcrumbs'][] = array(
  149. 'caption' => $this->language['home'],
  150. 'link' => ADM_PATH
  151. );
  152. $this->data['breadcrumbs'][] = array(
  153. 'caption' => $this->language['users'],
  154. 'link' => 'index.php?page=users'
  155. );
  156. $this->data['breadcrumb_cur'] = $this->language['user'];
  157. $this->template = 'template/user.tpl';
  158. } else {
  159. $start = ((int)$_GET["page_n"] - 1) * (int)$_GET["per_page"];
  160. $limit = (int)$_GET["per_page"];
  161. $search = isset($_GET["search"]) ? $_GET["search"] : '';
  162. $search_query = "(" . DB_PREF . "users.`name` LIKE '%" . $search . "%' OR " . DB_PREF .
  163. "users.`email` LIKE '%" . $search . "%' OR " . DB_PREF . "users.`description` LIKE '%" .
  164. $search . "%')";
  165. $this->data['users'] = $this->getUsers($search, $search_query, $start, $limit);
  166. $this->data['search'] = $search;
  167. $this->data['page_count'] = $this->getPageCount($search, $search_query, $limit);
  168. $this->engine->document->addHeaderString('<link href="template/css/bootstrap-toggle-buttons.css" rel="stylesheet" media="screen">');
  169. $this->engine->document->addHeaderString('<script src="template/js/jquery.toggle.buttons.js"></script>');
  170. $this->data['breadcrumbs'][] = array(
  171. 'caption' => $this->language['home'],
  172. 'link' => ADM_PATH
  173. );
  174. $this->data['breadcrumb_cur'] = $this->language['users'];
  175. $this->template = 'template/users.tpl';
  176. }
  177. }
  178. }