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 |
||
34 | class MemberController extends AbstractController |
||
|
|||
35 | { |
||
36 | public function __construct() |
||
39 | |||
40 | 1 | View Code Duplication | public function index(Application $app, Request $request) |
41 | { |
||
42 | 1 | $Members = $app['eccube.repository.member']->findBy(array(), array('rank' => 'DESC')); |
|
43 | |||
44 | 1 | $builder = $app['form.factory']->createBuilder(); |
|
45 | |||
46 | 1 | $event = new EventArgs( |
|
47 | array( |
||
48 | 1 | 'builder' => $builder, |
|
49 | 1 | 'Members' => $Members, |
|
50 | ), |
||
51 | 1 | $request |
|
52 | ); |
||
53 | 1 | $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_INDEX_INITIALIZE, $event); |
|
54 | |||
55 | 1 | $form = $builder->getForm(); |
|
56 | |||
57 | 1 | return $app->render('Setting/System/member.twig', array( |
|
58 | 1 | 'form' => $form->createView(), |
|
59 | 1 | 'Members' => $Members, |
|
60 | )); |
||
61 | } |
||
62 | |||
63 | 7 | public function edit(Application $app, Request $request, $id = null) |
|
64 | { |
||
65 | 7 | $previous_password = null; |
|
66 | 7 | if ($id) { |
|
67 | 4 | $Member = $app['eccube.repository.member']->find($id); |
|
68 | 4 | if (!$Member) { |
|
69 | 1 | throw new NotFoundHttpException(); |
|
70 | } |
||
71 | 3 | $previous_password = $Member->getPassword(); |
|
72 | 3 | $Member->setPassword($app['config']['default_password']); |
|
73 | } else { |
||
74 | 3 | $Member = new \Eccube\Entity\Member(); |
|
75 | } |
||
76 | |||
77 | 6 | $LoginMember = clone $app->user(); |
|
78 | 6 | $app['orm.em']->detach($LoginMember); |
|
79 | |||
80 | 6 | $builder = $app['form.factory'] |
|
81 | 6 | ->createBuilder(MemberType::class, $Member); |
|
82 | |||
83 | 6 | $event = new EventArgs( |
|
84 | array( |
||
85 | 6 | 'builder' => $builder, |
|
86 | 6 | 'Member' => $Member, |
|
87 | ), |
||
88 | 6 | $request |
|
89 | ); |
||
90 | 6 | $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_INITIALIZE, $event); |
|
91 | |||
92 | 6 | $form = $builder->getForm(); |
|
93 | |||
94 | 6 | if ('POST' === $request->getMethod()) { |
|
95 | 4 | $form->handleRequest($request); |
|
96 | 4 | if ($form->isValid()) { |
|
97 | 2 | if (!is_null($previous_password) |
|
98 | 2 | && $Member->getpassword() === $app['config']['default_password']) { |
|
99 | // 編集時にPWを変更していなければ |
||
100 | // 変更前のパスワード(暗号化済み)をセット |
||
101 | 1 | $Member->setPassword($previous_password); |
|
102 | } else { |
||
103 | 1 | $salt = $Member->getSalt(); |
|
104 | 1 | if (!isset($salt)) { |
|
105 | 1 | $salt = $app['eccube.repository.member']->createSalt(5); |
|
106 | 1 | $Member->setSalt($salt); |
|
107 | } |
||
108 | |||
109 | // 入力されたPWを暗号化してセット |
||
110 | 1 | $password = $app['eccube.repository.member']->encryptPassword($Member); |
|
111 | 1 | $Member->setPassword($password); |
|
112 | } |
||
113 | 2 | $status = $app['eccube.repository.member']->save($Member); |
|
114 | |||
115 | 2 | if ($status) { |
|
116 | 2 | $event = new EventArgs( |
|
117 | array( |
||
118 | 2 | 'form' => $form, |
|
119 | 2 | 'Member' => $Member, |
|
120 | ), |
||
121 | 2 | $request |
|
122 | ); |
||
123 | 2 | $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_COMPLETE, $event); |
|
124 | |||
125 | 2 | $app->addSuccess('admin.member.save.complete', 'admin'); |
|
126 | |||
127 | 2 | return $app->redirect($app->url('admin_setting_system_member')); |
|
128 | } else { |
||
129 | $app->addError('admin.member.save.error', 'admin'); |
||
130 | } |
||
131 | } |
||
132 | } |
||
133 | |||
134 | 4 | $app['security.token_storage']->getToken()->setUser($LoginMember); |
|
135 | |||
136 | 4 | return $app->render('Setting/System/member_edit.twig', array( |
|
137 | 4 | 'form' => $form->createView(), |
|
138 | 4 | 'Member' => $Member, |
|
139 | )); |
||
140 | |||
141 | } |
||
142 | |||
143 | 3 | View Code Duplication | public function up(Application $app, Request $request, $id) |
166 | |||
167 | 4 | View Code Duplication | public function down(Application $app, Request $request, $id) |
190 | |||
191 | 2 | public function delete(Application $app, Request $request, $id) |
|
192 | { |
||
224 | } |