Code Duplication    Length = 30-33 lines in 3 locations

src/Eccube/Controller/Admin/Store/PluginController.php 3 locations

@@ 258-287 (lines=30) @@
255
     *
256
     * @return RedirectResponse
257
     */
258
    public function enable(Plugin $Plugin, CacheUtil $cacheUtil)
259
    {
260
        $this->isTokenValid();
261
262
        if ($Plugin->isEnabled()) {
263
            $this->addError('admin.plugin.already.enable', 'admin');
264
        } else {
265
            $requires = $this->pluginService->findRequirePluginNeedEnable($Plugin->getCode());
266
            if (!empty($requires)) {
267
                $DependPlugin = $this->pluginRepository->findOneBy(['code' => $requires[0]]);
268
                $dependName = $requires[0];
269
                if ($DependPlugin) {
270
                    $dependName = $DependPlugin->getName();
271
                }
272
                $message = trans('admin.plugin.enable.depend', ['%name%' => $Plugin->getName(), '%depend_name%' => $dependName]);
273
                $this->addError($message, 'admin');
274
275
                return $this->redirectToRoute('admin_store_plugin');
276
            }
277
            $this->pluginService->enable($Plugin);
278
            $this->addSuccess('admin.plugin.enable.complete', 'admin');
279
        }
280
281
        // キャッシュを削除してリダイレクト
282
        // リダイレクトにredirectToRoute関数を使用していないのは、削除したキャッシュが再生成されてしまうため。
283
        $url = $this->generateUrl('admin_store_plugin');
284
        $cacheUtil->clearCache();
285
286
        return $this->redirect($url);
287
    }
288
289
    /**
290
     * 対象のプラグインを無効にします。
@@ 298-330 (lines=33) @@
295
     *
296
     * @return RedirectResponse
297
     */
298
    public function disable(Plugin $Plugin, CacheUtil $cacheUtil)
299
    {
300
        $this->isTokenValid();
301
302
        if ($Plugin->isEnabled()) {
303
            $dependents = $this->pluginService->findDependentPluginNeedDisable($Plugin->getCode());
304
            if (!empty($dependents)) {
305
                $dependName = $dependents[0];
306
                $DependPlugin = $this->pluginRepository->findOneBy(['code' => $dependents[0]]);
307
                if ($DependPlugin) {
308
                    $dependName = $DependPlugin->getName();
309
                }
310
                $message = trans('admin.plugin.disable.depend', ['%name%' => $Plugin->getName(), '%depend_name%' => $dependName]);
311
                $this->addError($message, 'admin');
312
313
                return $this->redirectToRoute('admin_store_plugin');
314
            }
315
316
            $this->pluginService->disable($Plugin);
317
            $this->addSuccess('admin.plugin.disable.complete', 'admin');
318
        } else {
319
            $this->addError('admin.plugin.already.disable', 'admin');
320
321
            return $this->redirectToRoute('admin_store_plugin');
322
        }
323
324
        // キャッシュを削除してリダイレクト
325
        // リダイレクトにredirectToRoute関数を使用していないのは、削除したキャッシュが再生成されてしまうため。
326
        $url = $this->generateUrl('admin_store_plugin');
327
        $cacheUtil->clearCache();
328
329
        return $this->redirect($url);
330
    }
331
332
    /**
333
     * 対象のプラグインを削除します。
@@ 341-370 (lines=30) @@
338
     *
339
     * @return RedirectResponse
340
     */
341
    public function uninstall(Plugin $Plugin)
342
    {
343
        $this->isTokenValid();
344
345
        if ($Plugin->isEnabled()) {
346
            $this->addError('admin.plugin.uninstall.error.not_disable', 'admin');
347
348
            return $this->redirectToRoute('admin_store_plugin');
349
        }
350
351
        // Check other plugin depend on it
352
        $pluginCode = $Plugin->getCode();
353
        $otherDepend = $this->pluginService->findDependentPlugin($pluginCode);
354
        if (!empty($otherDepend)) {
355
            $DependPlugin = $this->pluginRepository->findOneBy(['code' => $otherDepend[0]]);
356
            $dependName = $otherDepend[0];
357
            if ($DependPlugin) {
358
                $dependName = $DependPlugin->getName();
359
            }
360
            $message = trans('admin.plugin.uninstall.depend', ['%name%' => $Plugin->getName(), '%depend_name%' => $dependName]);
361
            $this->addError($message, 'admin');
362
363
            return $this->redirectToRoute('admin_store_plugin');
364
        }
365
366
        $this->pluginService->uninstall($Plugin);
367
        $this->addSuccess('admin.plugin.uninstall.complete', 'admin');
368
369
        return $this->redirectToRoute('admin_store_plugin');
370
    }
371
372
    /**
373
     * プラグインファイルアップロード画面