Advertisement
Guest User

Untitled

a guest
Mar 31st, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Ainet\Controllers;
  4.  
  5. use Ainet\Models\User;
  6.  
  7. class UserController
  8. {
  9. public function listUsers()
  10. {
  11. $users = User::all();
  12. $title = 'List users';
  13.  
  14. render_view('users.list', compact('title', 'users'));
  15. }
  16.  
  17. public function addUser()
  18. {
  19. $title = 'Add user';
  20. $user = new User();
  21. $errors = [];
  22.  
  23. if (empty($_POST)) {
  24. return render_view('users.add', compact('title', 'user', 'errors'));
  25. }
  26.  
  27. if (isset($_POST['cancel'])) {
  28. $this->redirectToHome();
  29. }
  30.  
  31. $user = $this->createUserFromRequest();
  32. $errors = $this->validateAddForm($user);
  33. if (count($errors) > 0) {
  34. return render_view('users.add', compact('title', 'user', 'errors'));
  35. }
  36.  
  37. User::add($user);
  38. $this->redirectToHome();
  39. }
  40.  
  41. public function editUser()
  42. {
  43. $userId = input_value('user_id');
  44. if (is_null($userId) && isset($_GET['user_id'])) {
  45. $userId = $_GET['user_id'];
  46. }
  47.  
  48. $user = User::find($userId);
  49. if (is_null($user)) {
  50. $this->redirectToHome();
  51. }
  52. $errors = [];
  53. $title = 'Edit user';
  54. if (empty($_POST)) {
  55. return render_view('users.edit', compact('title', 'user', 'errors'));
  56. }
  57.  
  58. if (isset($_POST['cancel'])) {
  59. $this->redirectToHome();
  60. }
  61.  
  62. $this->updateUserFromRequest($user);
  63. $errors = $this->validateEditableFields($user);
  64. if (count($errors) > 0) {
  65. return render_view('users.edit', compact('title', 'user', 'errors'));
  66. }
  67.  
  68. User::save($user);
  69. $this->redirectToHome();
  70. }
  71.  
  72. public function deleteUser()
  73. {
  74. $userId = input_value('user_id');
  75. if (is_null($userId)) {
  76. $this->redirectToHome();
  77. }
  78. User::delete($userId);
  79. $this->redirectToHome();
  80. }
  81.  
  82. private function createUserFromRequest()
  83. {
  84. $user = new User();
  85. $user->fullname = input_value('fullname');
  86. $user->email = input_value('email');
  87. $user->password = input_value('password');
  88. $user->type = input_value('user_type');
  89.  
  90. return $user;
  91. }
  92.  
  93. private function updateUserFromRequest($user)
  94. {
  95. $user->fullname = input_value('fullname');
  96. $user->email = input_value('email');
  97. $user->type = input_value('user_type');
  98. }
  99.  
  100. private function validateEditableFields($user)
  101. {
  102. $errors = [];
  103. if (!trim($user->fullname)) {
  104. $errors['fullname'] = 'Fullname is required';
  105. } elseif (!filter_var($user->fullname, FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => '/^[a-zA-Z ]+$/']])) {
  106. $errors['fullname'] = 'Only letters and whitespaces are allowed';
  107. }
  108.  
  109. if (!$user->email) {
  110. $errors['email'] = 'Email is required';
  111. } elseif (!filter_var($user->email, FILTER_VALIDATE_EMAIL)) {
  112. $errors['email'] = 'Invalid email address';
  113. }
  114.  
  115. if (is_null($user->type)) {
  116. $errors['type'] = 'Type is required';
  117. } elseif ($user->type < 0 || $user->type > 2) {
  118. $errors['type'] = 'Invalid type';
  119. }
  120.  
  121. return $errors;
  122. }
  123.  
  124. private function validateAddForm($user)
  125. {
  126. $errors = $this->validateEditableFields($user);
  127.  
  128. if (!$user->password) {
  129. $errors['password'] = 'Password is required';
  130. } elseif (strlen($user->password) < 8) {
  131. $errors['password'] = 'Password is too short. It must have at least 8 characters.';
  132. }
  133. if ($user->password && input_value('password_confirmation') != $user->password) {
  134. $errors['password_confirmation'] = 'Password confirmation must be equal to password';
  135. }
  136.  
  137. return $errors;
  138. }
  139.  
  140. private function redirectToHome()
  141. {
  142. header('Location: users.php');
  143. exit(0);
  144. }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement