PageRenderTime 47ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/administration/updateuser.php

https://gitlab.com/php-fusion/PHP-Fusion
PHP | 122 lines | 104 code | 2 blank | 16 comment | 48 complexity | 6decf59a25357eee87a7b3e446ed20fb MD5 | raw file
Possible License(s): AGPL-3.0, LGPL-2.1, Apache-2.0
  1. <?php
  2. /*-------------------------------------------------------+
  3. | PHP-Fusion Content Management System
  4. | Copyright (C) PHP-Fusion Inc
  5. | https://www.php-fusion.co.uk/
  6. +--------------------------------------------------------+
  7. | Filename: updateuser.php
  8. | Author: Nick Jones (Digitanium)
  9. +--------------------------------------------------------+
  10. | This program is released as free software under the
  11. | Affero GPL license. You can redistribute it and/or
  12. | modify it under the terms of this license which you
  13. | can read by viewing the included agpl.txt or online
  14. | at www.gnu.org/licenses/agpl.html. Removal of this
  15. | copyright header is strictly prohibited without
  16. | written permission from the original author(s).
  17. +--------------------------------------------------------*/
  18. if (!defined("IN_FUSION")) { die("Access Denied"); }
  19. pageAccess('M');
  20. if (!isset($_GET['user_id']) || !isnum($_GET['user_id'])) {
  21. redirect(FUSION_SELF.$aidlink);
  22. }
  23. $error = "";
  24. $db_values = "";
  25. $set_avatar = "";
  26. $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_id='".$_GET['user_id']."'");
  27. $user_data = dbarray($result);
  28. $user_name = trim(preg_replace("/ +/i", " ", $_POST['user_name']));
  29. $user_email = trim(stripinput($_POST['user_email']));
  30. $user_new_password = trim(stripinput($_POST['user_new_password']));
  31. $user_new_password2 = trim(stripinput($_POST['user_new_password2']));
  32. if ($user_name == "" || $user_email == "") {
  33. $error .= $locale['451']."<br />\n";
  34. } else {
  35. if (preg_check("/^[-0-9A-Z_@\s]+$/i", $user_name)) {
  36. if ($user_name != $user_data['user_name']) {
  37. $result = dbquery("SELECT user_name FROM ".DB_USERS." WHERE user_name='".$user_name."'");
  38. if (dbrows($result)) {
  39. $error = $locale['453']."<br />\n";
  40. }
  41. }
  42. } else {
  43. $error .= $locale['452']."<br />\n";
  44. }
  45. if (preg_check("/^[-0-9A-Z_\.]{1,50}@([-0-9A-Z_\.]+\.){1,50}([0-9A-Z]){2,4}$/i", $user_email)) {
  46. if ($user_email != $user_data['user_email']) {
  47. $result = dbquery("SELECT user_email FROM ".DB_USERS." WHERE user_email='".$user_email."'");
  48. if (dbrows($result) != 0) {
  49. $error = $locale['455']."<br />\n";
  50. }
  51. }
  52. } else {
  53. $error .= $locale['454']."<br />\n";
  54. }
  55. }
  56. if ($user_new_password != "") {
  57. if ($user_new_password2 != $user_new_password) {
  58. $error .= $locale['456']."<br />";
  59. } else {
  60. if ($_POST['user_hash'] == $user_data['user_password']) {
  61. if (!preg_match("/^[0-9A-Z@]{6,20}$/i", $user_new_password)) {
  62. $error .= $locale['457']."<br />\n";
  63. }
  64. } else {
  65. $error .= $locale['458']."<br />\n";
  66. }
  67. }
  68. }
  69. $user_hide_email = isnum($_POST['user_hide_email']) ? $_POST['user_hide_email'] : "1";
  70. if ($error == "") {
  71. if (!$user_data['user_avatar'] && !empty($_FILES['user_avatar']['name']) && is_uploaded_file($_FILES['user_avatar']['tmp_name'])) {
  72. $newavatar = $_FILES['user_avatar'];
  73. $avatarext = strrchr($newavatar['name'], ".");
  74. $avatarname = substr($newavatar['name'], 0, strrpos($newavatar['name'], "."));
  75. if (preg_check("/^[-0-9A-Z_\[\]]+$/i", $avatarname) && preg_check("/(\.gif|\.GIF|\.jpg|\.JPG|\.jpeg|\.JPEG|\.png|\.PNG)$/", $avatarext) && $newavatar['size'] <= 30720) {
  76. $avatarname = $avatarname."[".$userdata['user_id']."]".$avatarext;
  77. move_uploaded_file($newavatar['tmp_name'], IMAGES."avatars/".$avatarname);
  78. chmod(IMAGES."avatars/".$avatarname, 0644);
  79. $set_avatar = ", user_avatar='".$avatarname."'";
  80. if ($size = @getimagesize(IMAGES."avatars/".$avatarname)) {
  81. if ($size['0'] > 100 || $size['1'] > 100) {
  82. @unlink(IMAGES."avatars/".$avatarname);
  83. $set_avatar = "";
  84. } elseif (!verify_image(IMAGES."avatars/".$avatarname)) {
  85. @unlink(IMAGES."avatars/".$avatarname);
  86. $set_avatar = "";
  87. }
  88. } else {
  89. @unlink(IMAGES."avatars/".$avatarname);
  90. $set_avatar = "";
  91. }
  92. } else {
  93. $set_avatar = "";
  94. }
  95. }
  96. if (isset($_POST['del_avatar'])) {
  97. @unlink(IMAGES."avatars/".$user_data['user_avatar']);
  98. $set_avatar = ", user_avatar=''";
  99. }
  100. $result = dbquery("SELECT * FROM ".DB_USER_FIELDS." tuf
  101. INNER JOIN ".DB_USER_FIELD_CATS." tufc ON tuf.field_cat = tufc.field_cat_id
  102. ORDER BY field_cat_order, field_order");
  103. if (dbrows($result)) {
  104. $profile_method = "validate_update";
  105. while ($data = dbarray($result)) {
  106. if (file_exists(LOCALE.LOCALESET."user_fields/".$data['field_name'].".php")) {
  107. include LOCALE.LOCALESET."user_fields/".$data['field_name'].".php";
  108. }
  109. if (file_exists(INCLUDES."user_fields/".$data['field_name']."_include.php")) {
  110. include INCLUDES."user_fields/".$data['field_name']."_include.php";
  111. }
  112. }
  113. }
  114. if ($user_new_password) {
  115. $new_pass = " user_password='".md5(md5($user_new_password))."', ";
  116. } else {
  117. $new_pass = " ";
  118. }
  119. $result = dbquery("UPDATE ".DB_USERS." SET user_name='$user_name',".$new_pass."user_email='$user_email', user_hide_email='$user_hide_email'".($set_avatar ? $set_avatar : "").$db_values." WHERE user_id='".$user_data['user_id']."'");
  120. }