Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 10 | class AdminController extends Controller |
||
| 11 | { |
||
| 12 | use SearchTrait; |
||
| 13 | |||
| 14 | /** |
||
| 15 | * Create a new controller instance. |
||
| 16 | * |
||
| 17 | * @return void |
||
|
|
|||
| 18 | */ |
||
| 19 | public function __construct() |
||
| 23 | |||
| 24 | View Code Duplication | public function showUsers(Request $request) |
|
| 25 | { |
||
| 26 | $users = User::orderBy('firstname', 'asc')->orderBy('lastname', 'asc'); |
||
| 27 | |||
| 28 | $results = $this->search($users, $request->input('type'), $request->input('search')); |
||
| 29 | |||
| 30 | if (false === is_null($results)) { |
||
| 31 | $request->session()->flash( |
||
| 32 | 'results', |
||
| 33 | trans_choice( |
||
| 34 | 'users.message.search', |
||
| 35 | $results, |
||
| 36 | ['number' => $results] |
||
| 37 | ) |
||
| 38 | ); |
||
| 39 | $request->session()->flash('search', $request->input('search')); |
||
| 40 | $request->session()->flash('type', $request->input('type')); |
||
| 41 | } |
||
| 42 | |||
| 43 | return view('user/users', ['users' => $users->paginate(20)]); |
||
| 44 | } |
||
| 45 | |||
| 46 | /** |
||
| 47 | * Edit the given user |
||
| 48 | * |
||
| 49 | * @param int $id |
||
| 50 | * @return Response |
||
| 51 | */ |
||
| 52 | public function editUser($id) |
||
| 53 | { |
||
| 54 | $user = User::findOrFail($id); |
||
| 55 | $groups = Group::orderBy('name', 'asc')->get(); |
||
| 56 | return view('user/user', |
||
| 57 | ['user' => $user, 'groups' => $groups] |
||
| 58 | ); |
||
| 59 | } |
||
| 60 | |||
| 61 | /** |
||
| 62 | * Open a new user form. |
||
| 63 | * |
||
| 64 | * @return Response |
||
| 65 | */ |
||
| 66 | public function newUser() |
||
| 73 | |||
| 74 | /** |
||
| 75 | * Add a new user. |
||
| 76 | * |
||
| 77 | * @return Response |
||
| 78 | */ |
||
| 79 | public function addUser(Request $request) |
||
| 80 | { |
||
| 81 | $this->validate($request, [ |
||
| 82 | 'firstname' => 'required|alpha_num|max:100', |
||
| 83 | 'lastname' => 'required|alpha_num|max:100', |
||
| 84 | 'email' => 'required|email|unique:users,email', |
||
| 85 | 'password' => 'required|alpha_dash|min:8|confirmed', |
||
| 86 | 'password_confirmation' => 'required|min:8', |
||
| 87 | 'level' => 'required', |
||
| 88 | 'status' => 'required|boolean', |
||
| 89 | 'group' => 'required_if:level,1' |
||
| 90 | ]); |
||
| 91 | |||
| 92 | $user = new User; |
||
| 93 | $user->email = strtolower($request->email); |
||
| 94 | $user->password = bcrypt($request->password); |
||
| 95 | $user->firstname = ucwords($request->firstname); |
||
| 96 | $user->lastname = ucwords($request->lastname); |
||
| 97 | $user->level = $request->level; |
||
| 98 | $user->status = $request->status; |
||
| 99 | if (false === empty($request->group)) { |
||
| 100 | $user->group_id = $request->group; |
||
| 101 | } |
||
| 102 | $user->created_by = $request->user()->id; |
||
| 103 | $user->save(); |
||
| 104 | return redirect('administrators')->with( |
||
| 105 | 'status', |
||
| 106 | trans('users.message.add', ['user' => $user->email]) |
||
| 107 | ); |
||
| 108 | } |
||
| 109 | |||
| 110 | /** |
||
| 111 | * Update an user. |
||
| 112 | * |
||
| 113 | * @param Request $request |
||
| 114 | * @param int $id |
||
| 115 | * @return Response |
||
| 116 | */ |
||
| 117 | public function updateUser(Request $request, $id = 0) |
||
| 164 | |||
| 165 | /** |
||
| 166 | * Enable an user. |
||
| 167 | * |
||
| 168 | * @param int $id |
||
| 169 | * @return Response |
||
| 170 | */ |
||
| 171 | View Code Duplication | public function enableUser($id) |
|
| 172 | { |
||
| 173 | $user = User::findOrFail($id); |
||
| 174 | $user->status = User::USER_ENABLED; |
||
| 175 | $user->update(); |
||
| 176 | return redirect()->back()->with( |
||
| 177 | 'status', |
||
| 178 | trans('users.message.enable', ['user' => $user->email]) |
||
| 179 | ); |
||
| 180 | } |
||
| 181 | |||
| 182 | /** |
||
| 183 | * Disable an user. |
||
| 184 | * |
||
| 185 | * @param int $id |
||
| 186 | * @return Response |
||
| 187 | */ |
||
| 188 | View Code Duplication | public function disableUser($id) |
|
| 189 | { |
||
| 190 | $user = User::findOrFail($id); |
||
| 191 | $user->status = User::USER_DISABLED; |
||
| 192 | $user->update(); |
||
| 193 | return redirect()->back()->with( |
||
| 194 | 'status', |
||
| 195 | trans('users.message.disable', ['user' => $user->email]) |
||
| 196 | ); |
||
| 197 | } |
||
| 198 | |||
| 199 | /** |
||
| 200 | * Remove an user. |
||
| 201 | * |
||
| 202 | * @param int $id |
||
| 203 | * @return Response |
||
| 204 | */ |
||
| 205 | View Code Duplication | public function removeUser($id) |
|
| 206 | { |
||
| 207 | $user = User::findOrFail($id); |
||
| 208 | $email = $user->email; |
||
| 209 | $user->delete(); |
||
| 210 | return redirect()->back()->with( |
||
| 211 | 'status', |
||
| 212 | trans('users.message.delete', ['user' => $email]) |
||
| 213 | ); |
||
| 214 | } |
||
| 215 | } |
||
| 216 |
Adding a
@returnannotation to a constructor is not recommended, since a constructor does not have a meaningful return value.Please refer to the PHP core documentation on constructors.