PageRenderTime 26ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/public/profile.php

https://gitlab.com/ivaang94/DB_Proyect
PHP | 311 lines | 251 code | 19 blank | 41 comment | 46 complexity | 4e590c60bff61184bb633c0652b14b52 MD5 | raw file
  1. <?php
  2. /**
  3. * Incluimos el archivo de arranque de la aplicacion.
  4. * Es muy importante por que contiene las funciones
  5. * necesarias para que trabaje correctamente la aplicacion.
  6. */
  7. require_once '../boot.php';
  8. /**
  9. * Si esta autentificado.
  10. */
  11. if ($auth->isLogged()) {
  12. /**
  13. * Bandera para verificar si se actualizo el perfil.
  14. */
  15. $updated = FALSE;
  16. /**
  17. * Bandera para verificar si existen errores.
  18. */
  19. $errors = FALSE;
  20. /**
  21. * Validaciones para el formulario.
  22. */
  23. $validations = array(
  24. 'first_name' => '/^[a-zA-Zá-úÁ-Ú]+$/', // Solo caracteres.
  25. 'last_name' => '/^[a-zA-Zá-úÁ-Ú]+$/', // Solo caracteres.
  26. 'birthdate' => '/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/', // Solo Fechas.
  27. 'email' => '/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/', // Correo valido.
  28. );
  29. $currentUser = $auth->getCurrentUser();
  30. $currentPassword = $currentUser['password'];
  31. /**
  32. * Validamos el nombre del usuario.
  33. */
  34. if (isset($_POST['first_name'])) {
  35. $firstName = $_POST['first_name'];
  36. if (preg_match($validations['first_name'], $firstName)) {
  37. if (20 < strlen($firstName)) {
  38. $errors = TRUE;
  39. $_SESSION['form_errors']['first_name'] = 'Maximo 20 caracteres.';
  40. } else {
  41. $updated = TRUE;
  42. $currentUser['first_name'] = $firstName;
  43. }
  44. } else {
  45. $errors = TRUE;
  46. $_SESSION['form_errors']['first_name'] = 'Solo caracteres [a-z], no puede estar vacia.';
  47. }
  48. }
  49. /**
  50. * Validamos el apellido del usuario.
  51. */
  52. if (isset($_POST['last_name'])) {
  53. $lastName = $_POST['last_name'];
  54. if (preg_match($validations['last_name'], $lastName)) {
  55. if (20 < strlen($lastName)) {
  56. $errors = TRUE;
  57. $_SESSION['form_errors']['last_name'] = 'Maximo 20 caracteres.';
  58. } else {
  59. $updated = TRUE;
  60. $currentUser['last_name'] = $lastName;
  61. }
  62. } else {
  63. $errors = TRUE;
  64. $_SESSION['form_errors']['last_name'] = 'Solo caracteres [a-z], no puede estar vacia.';
  65. }
  66. }
  67. /**
  68. * Validamos la fecha de nacimiento.
  69. */
  70. if (isset($_POST['birthdate'])) {
  71. $birthdate = $_POST['birthdate'];
  72. if (preg_match($validations['birthdate'], $birthdate)) {
  73. $updated = TRUE;
  74. $currentUser['birthdate'] = $birthdate;
  75. } else {
  76. $errors = TRUE;
  77. $_SESSION['form_errors']['birthdate'] = 'La fecha no es valida.';
  78. }
  79. }
  80. /**
  81. * Validamos el correo.
  82. */
  83. if (isset($_POST['email'])) {
  84. $email = $_POST['email'];
  85. if (preg_match($validations['email'], $email)) {
  86. $exist = $database->getUserWithEmail($email);
  87. if ($exist && $exist['user_id'] != $currentUser['user_id']) {
  88. $errors = TRUE;
  89. $_SESSION['form_errors']['email'] = 'El correo ya esta en uso.';
  90. } else {
  91. $updated = TRUE;
  92. $currentUser['email'] = $email;
  93. }
  94. } else {
  95. $errors = TRUE;
  96. $_SESSION['form_errors']['email'] = 'El correo no es valido.';
  97. }
  98. }
  99. /**
  100. * Validamos la nueva contraseña.
  101. */
  102. if (isset($_POST['new_password']) && 0 != strlen($_POST['new_password'])) {
  103. if (isset($_POST['confirm_password'])) {
  104. $newPassword = $_POST['new_password'];
  105. $confirmPassword = $_POST['confirm_password'];
  106. if (5 > strlen($newPassword) || 20 < strlen($newPassword)) {
  107. $errors = TRUE;
  108. $_SESSION['form_errors']['new_password'] = 'La contraseña tiene que tener entre 5 y 20 caracteres.';
  109. } else {
  110. if ($newPassword == $confirmPassword) {
  111. $updated = TRUE;
  112. $currentUser['password'] = md5($newPassword);
  113. } else {
  114. $errors = TRUE;
  115. $_SESSION['form_errors']['new_password'] = 'Las contraseñas no coinciden.';
  116. }
  117. }
  118. } else {
  119. $errors = TRUE;
  120. $_SESSION['form_errors']['confirm_password'] = 'Confirma la nueva contraseña.';
  121. }
  122. }
  123. /**
  124. * Si se actualizo la informacion.
  125. * Validamos la contraseña actual.
  126. * Si es valida actualizamos la informacion del usuario.
  127. */
  128. if ($updated) {
  129. if (isset($_POST['password'])) {
  130. $password = $_POST['password'];
  131. if ($currentPassword == md5($password)) {
  132. if (!$errors) {
  133. $database->updateUser($currentUser);
  134. $_SESSION['user'] = $currentUser;
  135. }
  136. } else {
  137. $errors = TRUE;
  138. $_SESSION['form_errors']['password'] = 'La contraseña no es valida..';
  139. }
  140. } else {
  141. $errors = TRUE;
  142. $_SESSION['form_errors']['password'] = 'Ingresa la contraseña actual.';
  143. }
  144. }
  145. }
  146. ?>
  147. <!doctype html>
  148. <!-- Establecemos el lenguaje de la aplicacion -->
  149. <html lang="<?php echo $SMM['lang']; ?>">
  150. <head>
  151. <!-- Establecemos la codificacion de caracteres -->
  152. <meta charset="<?php echo $SMM['charset']; ?>">
  153. <!-- No escalable -->
  154. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  155. <!-- Establecemos el titulo de la aplicacion -->
  156. <title><?php echo $SMM['title']; ?></title>
  157. <!-- Incluimos los estilos css -->
  158. <?php foreach ($SMM['styles'] as $style): ?>
  159. <link rel="stylesheet" href="<?php echo $style; ?>">
  160. <?php endforeach; ?>
  161. </head>
  162. <body>
  163. <!-- Contenedor principal -->
  164. <div class="container">
  165. <!-- Cabecera de la aplicacion -->
  166. <div class="row">
  167. <div class="col-xs-12">
  168. <?php include 'header.php'; ?>
  169. </div>
  170. </div>
  171. <!-- Cuerpo de la aplicacion -->
  172. <div class="row">
  173. <!-- Menu de navegacion -->
  174. <div class="col-xs-3">
  175. <?php include 'sidebar.php'; ?>
  176. </div>
  177. <!-- Contenido -->
  178. <div class="col-xs-9">
  179. <!-- Shares -->
  180. <form class="form-horizontal" action="profile.php" method="POST">
  181. <div class="panel panel-warning">
  182. <div class="panel-heading">
  183. <h1 class="panel-title">Editar Perfil: <?php echo $arrays->value($auth->getCurrentUser(), 'user_name'); ?></h1>
  184. </div>
  185. <div class="panel-body">
  186. <div class="media">
  187. <div class="pull-left">
  188. <img class="media-object" src="<?php echo $database->getUserAvatar($arrays->value($auth->getCurrentUser(), 'user_id')); ?>">
  189. </div>
  190. <div class="media-body">
  191. <!-- Nombre -->
  192. <div class="form-group">
  193. <label for="first_name" class="col-sm-2 control-label">Nombre</label>
  194. <div class="col-sm-10">
  195. <input type="text" class="form-control" name="first_name" value="<?php echo $arrays->value($auth->getCurrentUser(), 'first_name'); ?>">
  196. <?php if (isset($_SESSION['form_errors']['first_name'])): ?>
  197. <span class="help-block alert alert-danger"><?php echo $_SESSION['form_errors']['first_name']; ?></span>
  198. <?php unset($_SESSION['form_errors']['first_name']); ?>
  199. <?php endif; ?>
  200. </div>
  201. </div>
  202. <!-- Apellido -->
  203. <div class="form-group">
  204. <label for="last_name" class="col-sm-2 control-label">Apellido</label>
  205. <div class="col-sm-10">
  206. <input type="text" class="form-control" name="last_name" value="<?php echo $arrays->value($auth->getCurrentUser(), 'last_name'); ?>">
  207. <?php if (isset($_SESSION['form_errors']['last_name'])): ?>
  208. <span class="help-block alert alert-danger"><?php echo $_SESSION['form_errors']['last_name']; ?></span>
  209. <?php unset($_SESSION['form_errors']['last_name']); ?>
  210. <?php endif; ?>
  211. </div>
  212. </div>
  213. <!-- Fecha de nacimiento -->
  214. <div class="form-group">
  215. <label for="birthdate" class="col-sm-2 control-label">Fecha de nacimiento</label>
  216. <div class="col-sm-10">
  217. <input type="date" class="form-control" name="birthdate" value="<?php echo $arrays->value($auth->getCurrentUser(), 'birthdate'); ?>">
  218. <?php if (isset($_SESSION['form_errors']['birthdate'])): ?>
  219. <span class="help-block alert alert-danger"><?php echo $_SESSION['form_errors']['birthdate']; ?></span>
  220. <?php unset($_SESSION['form_errors']['birthdate']); ?>
  221. <?php endif; ?>
  222. </div>
  223. </div>
  224. <!-- Correo -->
  225. <div class="form-group">
  226. <label for="email" class="col-sm-2 control-label">Correo</label>
  227. <div class="col-sm-10">
  228. <input type="email" class="form-control" name="email" value="<?php echo $arrays->value($auth->getCurrentUser(), 'email'); ?>">
  229. <?php if (isset($_SESSION['form_errors']['email'])): ?>
  230. <span class="help-block alert alert-danger"><?php echo $_SESSION['form_errors']['email']; ?></span>
  231. <?php unset($_SESSION['form_errors']['email']); ?>
  232. <?php endif; ?>
  233. </div>
  234. </div>
  235. <!-- Nueva contraseña -->
  236. <div class="form-group">
  237. <label for="new_password" class="col-sm-2 control-label">Nueva contraseña</label>
  238. <div class="col-sm-10">
  239. <input type="password" class="form-control" name="new_password">
  240. <?php if (isset($_SESSION['form_errors']['new_password'])): ?>
  241. <span class="help-block alert alert-danger"><?php echo $_SESSION['form_errors']['new_password']; ?></span>
  242. <?php unset($_SESSION['form_errors']['new_password']); ?>
  243. <?php endif; ?>
  244. </div>
  245. </div>
  246. <!-- Confirmar contraseña -->
  247. <div class="form-group">
  248. <label for="confirm_password" class="col-sm-2 control-label">Confirmar contraseña</label>
  249. <div class="col-sm-10">
  250. <input type="password" class="form-control" name="confirm_password">
  251. <?php if (isset($_SESSION['form_errors']['confirm_password'])): ?>
  252. <span class="help-block alert alert-danger"><?php echo $_SESSION['form_errors']['confirm_password']; ?></span>
  253. <?php unset($_SESSION['form_errors']['confirm_password']); ?>
  254. <?php endif; ?>
  255. </div>
  256. </div>
  257. <!-- Contraseña actual -->
  258. <div class="form-group">
  259. <label for="password" class="col-sm-2 control-label">Contraseña actual</label>
  260. <div class="col-sm-10">
  261. <input type="password" class="form-control" name="password">
  262. <?php if (isset($_SESSION['form_errors']['password'])): ?>
  263. <span class="help-block alert alert-danger"><?php echo $_SESSION['form_errors']['password']; ?></span>
  264. <?php unset($_SESSION['form_errors']['password']); ?>
  265. <?php endif; ?>
  266. </div>
  267. </div>
  268. </div>
  269. </div>
  270. </div>
  271. <div class="panel-footer">
  272. <button type="submit" class="btn btn-warning">Guardar</button>
  273. <a type="button" class="btn btn-default" href="index.php">Cancelar</a>
  274. </div>
  275. </div>
  276. </form>
  277. </div>
  278. </div>
  279. </div>
  280. <!-- Incluimos el codigo javascript -->
  281. <?php foreach ($SMM['scripts'] as $script): ?>
  282. <script src="<?php echo $script; ?>"></script>
  283. <?php endforeach; ?>
  284. <?php
  285. /**
  286. * Incluimos el archivo para finalizar la ejecucion de la aplicacion.
  287. * Es muy importante para manejar la aplicacion en modo de depuracion.
  288. */
  289. require_once '../stop.php';
  290. ?>
  291. </body>
  292. </html>