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 | } |