PageRenderTime 46ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/phpEventCalendar/useradmin.php

https://gitlab.com/jack/senegad
PHP | 439 lines | 377 code | 59 blank | 3 comment | 59 complexity | 6a07588063496bfdf2c8c32134f48ffb MD5 | raw file
  1. <?php
  2. require("config.php");
  3. require("./lang/lang.admin." . LANGUAGE_CODE . ".php");
  4. require("functions.php");
  5. $flag = (isset($_GET['flag'])) ? $_GET['flag'] : null;
  6. $auth = auth();
  7. if ( $auth == 2 ) {
  8. switch ( $flag ) {
  9. case "add":
  10. editUserForm("Add");
  11. break;
  12. case "edit":
  13. $id = (int) $_GET['id'];
  14. if (!empty($id))
  15. editUserForm("Edit", $id);
  16. else
  17. $lang['accesswarning'];
  18. break;
  19. case "insert":
  20. insertNewUser();
  21. break;
  22. case "update":
  23. updateExistingUser();
  24. break;
  25. case "delete":
  26. $id = (int) $_GET['id'];
  27. if (!empty($id))
  28. deleteUser($id);
  29. else
  30. $lang['accesswarning'];
  31. break;
  32. default:
  33. userList();
  34. }
  35. } elseif ( $auth == 1 ) {
  36. switch ( $flag ) {
  37. case "changepw":
  38. changePW($flag);
  39. break;
  40. case "updatepw":
  41. updatePassword();
  42. changePW($flag);
  43. break;
  44. default:
  45. header("location:index.php");
  46. }
  47. } else {
  48. echo $lang['accessdenied'];
  49. }
  50. /***************************************
  51. ******** user admin functions **********
  52. ***************************************/
  53. function editUserForm($mode, $id="", $error="")
  54. {
  55. global $lang;
  56. $editorstr = "<option value=\"1\">" . $lang['editoroption'] . "</option>\n";
  57. if ($mode=="Edit") {
  58. mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
  59. mysql_select_db(DB_NAME) or die(mysql_error());
  60. $sql = "SELECT username, password, fname, lname, userlevel, email ";
  61. $sql .= "FROM " . DB_TABLE_PREFIX . "users WHERE uid=" . $id;
  62. $result = mysql_query($sql) or die(mysql_error());
  63. $row = mysql_fetch_row($result);
  64. $username = $row[0];
  65. $password = $row[1];
  66. $fname = $row[2];
  67. $lname = $row[3];
  68. $userlevel = $row[4];
  69. $email = $row[5];
  70. $admin = ($userlevel == 2) ? "selected" : null;
  71. $header = $lang['edituser'];
  72. $formaction = "update";
  73. $unameinput = "<span class=\"edit_user_label\">" . $username . "</span><input type=\"hidden\" name=\"username\" value=\"" . $username . "\">\n";
  74. if ($username == $_SESSION['authdata']['login']) { $editorstr = ""; }
  75. } else {
  76. $username = null;
  77. $admin = null;
  78. $password = (isset($_POST['pw']))
  79. ? $_POST['pw'] : null;
  80. $fname = (isset($_POST['fname']))
  81. ? $_POST['fname'] : null;
  82. $lname = (isset($_POST['lname']))
  83. ? $_POST['lname'] : null;
  84. $userlevel = (isset($_POST['userlevel']))
  85. ? $_POST['userlevel'] : null;
  86. $email = (isset($_POST['email']))
  87. ? $_POST['email'] : null;
  88. $header = $lang['adduser'];
  89. $formaction = "insert";
  90. $unameinput = "<input type=\"text\" name=\"username\" size=\"29\" maxlength=\"20\" value=\"" . $username . "\">";
  91. }
  92. ?>
  93. <html><head>
  94. <title>phpEventCalendar: <?php echo $mode?> Calendar User</title>
  95. <link rel="stylesheet" type="text/css" href="css/adminpgs.css">
  96. <script language="JavaScript">
  97. function validate(f) {
  98. var regex = /\W+/;
  99. var un = f.username.value;
  100. var pw = f.pw.value;
  101. var str = "";
  102. if (f.fname.value == "") { str += "\n<?php echo $lang['fnameblank']?>"; }
  103. if (f.lname.value == "") { str += "\n<?php echo $lang['lnameblank']?>"; }
  104. if (f.email.value == "") { str += "\n<?php echo $lang['emailblank']?>"; }
  105. if (un == "") { str += "\n<?php echo $lang['unameblank']?>"; }
  106. if (un.length < 4) { str += "\n<?php echo $lang['unamelength']?>"; }
  107. if (regex.test(un)) { str += "\n<?php echo $lang['unameillegal']?>"; }
  108. if (pw == "") { str += "\n<?php echo $lang['passblank']?>"; }
  109. if (pw != f.pwconfirm.value) { str += "\n<?php echo $lang['passmatch']?>"; }
  110. if (pw.length < 4) { str += "\n<?php echo $lang['passlength']?>"; }
  111. if (regex.test(pw)) { str += "\n<?php echo $lang['passillegal']?>"; }
  112. if (str == "") {
  113. f.method = "post";
  114. f.action = "useradmin.php?flag=<?php echo $formaction ?>";
  115. f.submit();
  116. } else {
  117. alert(str);
  118. return false;
  119. }
  120. }
  121. </script>
  122. </head><body>
  123. <?php
  124. if ( !empty($error) ) {
  125. echo "<p><span class=\"bad_user_name\">" . $lang['unameinuse'] . "</span></p>";
  126. }
  127. ?>
  128. <form onSubmit="return validate(this);">
  129. <table cellpadding="2" cellspacing="2" border="0">
  130. <tr>
  131. <td colspan="2"><span class="edit_user_header"><?php echo $header?>:</span></td>
  132. </tr>
  133. <tr><td><img src="images/clear.gif" width="1" height="3"></td></tr>
  134. <tr>
  135. <td align="right"><span class="edit_user_label"><?php echo $lang['username']?>:</span></td>
  136. <td><?php echo $unameinput?></td>
  137. </tr>
  138. <tr>
  139. <td align="right"><span class="edit_user_label"><?php echo $lang['password']?>:</span></td>
  140. <td><input type="password" name="pw" size="29" maxlength="20" value="<?php echo $password?>"></td>
  141. </tr>
  142. <tr>
  143. <td align="right"><span class="edit_user_label"><?php echo $lang['pwconfirm']?>:</span></td>
  144. <td><input type="password" name="pwconfirm" size="29" maxlength="20" value="<?php echo $password?>"></td>
  145. </tr>
  146. <tr>
  147. <td align="right"><span class="edit_user_label"><?php echo $lang['userlevel']?>:</span></td>
  148. <td><select name="userlevel">
  149. <?php echo $editorstr?>
  150. <option value="2" <?php echo $admin ?>><?php echo $lang['adminoption'] ?></option>
  151. </select>
  152. </td>
  153. </tr>
  154. <tr>
  155. <td align="right"><span class="edit_user_label"><?php echo $lang['fname']?>:</span></td>
  156. <td><input type="text" name="fname" size="29" maxlength="20" value="<?php echo $fname?>"></td>
  157. </tr>
  158. <tr>
  159. <td align="right"><span class="edit_user_label"><?php echo $lang['lname']?>:</span></td>
  160. <td><input disable type="text" name="lname" size="29" maxlength="30" value="<?php echo $lname?>"></td>
  161. </tr>
  162. <tr>
  163. <td align="right"><span class="edit_user_label"><?php echo $lang['email']?>:</span></td>
  164. <td><input type="text" name="email" size="29" maxlength="40" value="<?php echo $email?>"></td>
  165. </tr>
  166. <tr><td><img src="images/clear.gif" width="1" height="7"></td></tr>
  167. <tr>
  168. <td colspan="2" align="right"><input type="submit" value="<?php echo $mode?> User">
  169. &nbsp; <input type="button" value="cancel" onClick="location.replace('useradmin.php');">
  170. </td>
  171. </tr>
  172. </table>
  173. </form>
  174. </body></html>
  175. <?php
  176. }
  177. function insertNewUser()
  178. {
  179. $uname = $_POST['username'];
  180. $pw = $_POST['pw'];
  181. $ulevel = $_POST['userlevel'];
  182. $fname = $_POST['fname'];
  183. $lname = $_POST['lname'];
  184. $email = $_POST['email'];
  185. mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
  186. mysql_select_db(DB_NAME) or die(mysql_error());
  187. $sql = "SELECT * FROM " . DB_TABLE_PREFIX . "users WHERE username='$uname'";
  188. $result = mysql_query($sql) or die(mysql_error());
  189. $row = mysql_fetch_row($result);
  190. if ( is_array($row) ) {
  191. editUserForm("Add", "", $uname);
  192. } else {
  193. $sql = "INSERT INTO " . DB_TABLE_PREFIX . "users SET ";
  194. $sql .= "username='$uname', password='$pw', fname='$fname', lname='$lname', ";
  195. $sql .= "userlevel='$ulevel', email='$email'";
  196. mysql_query($sql) or die(mysql_error());
  197. header("location:useradmin.php");
  198. }
  199. }
  200. function updateExistingUser()
  201. {
  202. $uname = $_POST['username'];
  203. $pw = $_POST['pw'];
  204. $ulevel = $_POST['userlevel'];
  205. $fname = $_POST['fname'];
  206. $lname = $_POST['lname'];
  207. $email = $_POST['email'];
  208. mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
  209. mysql_select_db(DB_NAME) or die(mysql_error());
  210. $sql = "UPDATE " . DB_TABLE_PREFIX . "users SET password='$pw', fname='$fname', ";
  211. $sql .= "lname='$lname', userlevel='$ulevel', email='$email' WHERE username='$uname'";
  212. mysql_query($sql) or die(mysql_error());
  213. if ( $uname==$_SESSION['authdata']['login'] )
  214. $_SESSION['authdata']['password'] = $pw;
  215. header("location:useradmin.php");
  216. }
  217. function deleteUser($id)
  218. {
  219. global $authdata;
  220. if ($authdata['uid'] != $id) {
  221. mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
  222. mysql_select_db(DB_NAME) or die(mysql_error());
  223. $sql = "DELETE FROM " . DB_TABLE_PREFIX . "users WHERE uid='$id'";
  224. mysql_query($sql) or die(mysql_error());
  225. }
  226. header("location:useradmin.php");
  227. }
  228. function userList()
  229. {
  230. global $lang;
  231. ?>
  232. <html><head><title>phpEventCalendar User List</title>
  233. <link rel="stylesheet" type="text/css" href="css/adminpgs.css">
  234. <script language="JavaScript">
  235. function deleteConfirm(user, uid) {
  236. var msg = "<?php echo $lang['deleteconf']?>: \"" + user + "\"?";
  237. if (user == "<?php echo $_SESSION['authdata']['login'] ?>") {
  238. alert("<?php echo $lang['deleteown']?>");
  239. return;
  240. } else if (confirm(msg)) {
  241. location.replace("useradmin.php?flag=delete&id=" + uid);
  242. } else {
  243. return;
  244. }
  245. }
  246. </script>
  247. </head>
  248. <body>
  249. <table cellpadding="0" cellspacing="0" border="0" width="600">
  250. <tr>
  251. <td><span class="user_list_header"><?php echo $lang['ulistheader']?></span></td>
  252. <td align="right" valign="bottom"><span class="user_list_options">[ <a href="useradmin.php?flag=add"><?php echo $lang['adduser']?></a> | <a href="index.php"><?php echo $lang['return']?></a> ]</span></td>
  253. </tr>
  254. <tr><td><img src="images/clear.gif" width="1" height="5"></td></tr>
  255. </table>
  256. <table cellpadding="0" cellspacing="0" border="0" width="600" bgcolor="#000000">
  257. <tr><td>
  258. <table cellspacing="1" cellpadding="3" border="0" width="100%">
  259. <tr bgcolor="#666666">
  260. <td><span class="user_table_col_label"><?php echo $lang['username']?></span></td>
  261. <td><span class="user_table_col_label"><?php echo $lang['name']?></span></td>
  262. <td><span class="user_table_col_label"><?php echo $lang['email']?></span></td>
  263. <td><span class="user_table_col_label"><?php echo $lang['userlevel']?></span></td>
  264. <td><span class="user_table_col_label"><?php echo $lang['edit']?></span></td>
  265. <td><span class="user_table_col_label"><?php echo $lang['delete']?></span></td>
  266. </tr>
  267. <?php
  268. mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
  269. mysql_select_db(DB_NAME) or die(mysql_error());
  270. $sql = "SELECT * FROM " . DB_TABLE_PREFIX . "users";
  271. $result = mysql_query($sql) or die(mysql_error());
  272. $bgcolor = "#ffffff";
  273. while( $row = mysql_fetch_array($result) ) {
  274. $userlevel = ($row[5] == 2) ? $lang['admin'] : $lang['editor'];
  275. echo "<tr bgcolor=\"$bgcolor\">\n";
  276. echo " <td><span class=\"user_table_txt\">" . $row[1] . "</span></td>\n";
  277. echo " <td><span class=\"user_table_txt\">" . $row[3] . " " . $row[4] . "</span></td>\n";
  278. echo " <td><span class=\"user_table_txt\">" . $row[6] . "</span></td>\n";
  279. echo " <td><span class=\"user_table_txt\">" . $userlevel . "</span></td>\n";
  280. echo " <td><span class=\"user_table_txt\"><a href=\"useradmin.php?flag=edit&id=" . $row[0] . "\">" . $lang['edit'] . "</a></span></td>\n";
  281. echo " <td><span class=\"user_table_txt\"><a href=\"#\" onClick=\"deleteConfirm('" . $row[1] . "', '" . $row[0] . "');\">" . $lang['delete'] . "</a></span></td>\n";
  282. echo "</tr>\n";
  283. if ( $bgcolor == "#ffffff" )
  284. $bgcolor = "#dddddd";
  285. else
  286. $bgcolor = "#ffffff";
  287. }
  288. echo "</table></td></tr></table>";
  289. }
  290. function changePW($flag)
  291. {
  292. global $lang;
  293. $username = $_SESSION['authdata']['login'];
  294. $id = $_SESSION['authdata']['uid'];
  295. ?>
  296. <html><head>
  297. <title><?php echo $lang['changepw']?></title>
  298. <link rel="stylesheet" type="text/css" href="css/adminpgs.css">
  299. <script language="JavaScript">
  300. function validate(f) {
  301. var regex = /\W+/;
  302. var pw = f.pw.value;
  303. var str = "";
  304. if (pw == "") { str += "\n<?php echo $lang['passblank']?>"; }
  305. if (pw != f.pwconfirm.value) { str += "\n<?php echo $lang['passmatch']?>"; }
  306. if (pw.length < 4) { str += "\n<?php echo $lang['passlength']?>"; }
  307. if (regex.test(pw)) { str += "\n<?php echo $lang['passillegal']?>"; }
  308. if (str == "") {
  309. f.method = "post";
  310. f.action = "useradmin.php?flag=updatepw";
  311. f.submit();
  312. } else {
  313. alert(str);
  314. return false;
  315. }
  316. }
  317. </script>
  318. </head></body>
  319. <?php
  320. if ( $flag=="changepw" ) {
  321. ?>
  322. <form onSubmit="return validate(this);">
  323. <input type="hidden" name="un" value="<?php echo $username ?>">
  324. <table cellpadding="2" cellspacing="2" border="0">
  325. <tr>
  326. <td colspan="2"><span class="edit_user_header"><?php echo $lang['changepw']?></span></td>
  327. </tr>
  328. <tr><td><img src="images/clear.gif" width="1" height="3"></td></tr>
  329. <tr>
  330. <td align="right"><span class="edit_user_label"><?php echo $lang['username']?>:</span></td>
  331. <td><span class="edit_user_label"><?php echo $username?></span></td>
  332. </tr>
  333. <tr>
  334. <td align="right"><span class="edit_user_label"><?php echo $lang['password']?>:</span></td>
  335. <td><input type="password" name="pw" size="29" maxlength="25" value=""></td>
  336. </tr>
  337. <tr>
  338. <td align="right"><span class="edit_user_label"><?php echo $lang['pwconfirm']?>:</span></td>
  339. <td><input type="password" name="pwconfirm" size="29" maxlength="25" value=""></td>
  340. </tr>
  341. <tr><td><img src="images/clear.gif" width="1" height="7"></td></tr>
  342. <tr>
  343. <td colspan="2" align="right"><input type="submit" value="<?php echo $lang['changepw']?>">
  344. &nbsp; <input type="button" value="<?php echo $lang['cancel']?>" onClick="location.replace('index.php');">
  345. </td>
  346. </tr>
  347. </table>
  348. </form>
  349. <?php
  350. } elseif ( $flag=="updatepw" ) {
  351. ?>
  352. <span class="edit_user_label"><?php echo $lang['pwchanged']?> &nbsp;"<?php echo $username?>"</span>
  353. <p>
  354. <span class="user_list_options">[ <a href="index.php"><?php echo $lang['return']?></a> ]</span>
  355. <?php
  356. } else {
  357. echo $lang['accessdenied'] . "<p>";
  358. echo "<span class=\"user_list_options\">[ <a href=\"index.php\">" . $lang['return'] . "</a> ]</span>";
  359. }
  360. ?>
  361. </body>
  362. </html>
  363. <?php
  364. }
  365. function updatePassword()
  366. {
  367. $pw = (isset($_POST['pw'])) ? $_POST['pw'] : null;
  368. $id = (isset($_SESSION['authdata']['uid']))
  369. ? $_SESSION['authdata']['uid'] : null;
  370. if (!empty($pw) && !empty($id)) {
  371. mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
  372. mysql_select_db(DB_NAME) or die(mysql_error());
  373. $sql = "
  374. UPDATE " . DB_TABLE_PREFIX . "users SET password='$pw'
  375. WHERE uid='$id'";
  376. $result = mysql_query($sql) or die(mysql_error());
  377. $_SESSION['authdata']['password'] = $pw;
  378. }
  379. }
  380. ?>