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
@return
annotation 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.