Eccube\Controller\Admin\Store\PluginController::index PHP Метод

index() публичный Метод

インストール済プラグイン画面
public index ( Application $app, Request $request )
$app Eccube\Application
$request Symfony\Component\HttpFoundation\Request
    public function index(Application $app, Request $request)
    {
        $pluginForms = array();
        $configPages = array();
        $Plugins = $app['eccube.repository.plugin']->findBy(array(), array('name' => 'ASC'));
        // ファイル設置プラグインの取得.
        $unregisterdPlugins = $this->getUnregisteredPlugins($Plugins, $app);
        $unregisterdPluginsConfigPages = array();
        foreach ($unregisterdPlugins as $unregisterdPlugin) {
            try {
                $code = $unregisterdPlugin['code'];
                // プラグイン用設定画面があれば表示(プラグイン用のサービスプロバイダーに定義されているか)
                $unregisterdPluginsConfigPages[$code] = $app->url('plugin_' . $code . '_config');
            } catch (RouteNotFoundException $e) {
                // プラグインで設定画面のルートが定義されていない場合は無視
            }
        }
        $officialPlugins = array();
        $unofficialPlugins = array();
        foreach ($Plugins as $Plugin) {
            $form = $app['form.factory']->createNamedBuilder('form' . $Plugin->getId(), 'plugin_management', null, array('plugin_id' => $Plugin->getId()))->getForm();
            $pluginForms[$Plugin->getId()] = $form->createView();
            try {
                // プラグイン用設定画面があれば表示(プラグイン用のサービスプロバイダーに定義されているか)
                $configPages[$Plugin->getCode()] = $app->url('plugin_' . $Plugin->getCode() . '_config');
            } catch (\Exception $e) {
                // プラグインで設定画面のルートが定義されていない場合は無視
            }
            if ($Plugin->getSource() == 0) {
                // 商品IDが設定されていない場合、非公式プラグイン
                $unofficialPlugins[] = $Plugin;
            } else {
                $officialPlugins[] = $Plugin;
            }
        }
        // オーナーズストアからダウンロード可能プラグイン情報を取得
        $BaseInfo = $app['eccube.repository.base_info']->get();
        $authKey = $BaseInfo->getAuthenticationKey();
        if (!is_null($authKey)) {
            // オーナーズストア通信
            $url = $app['config']['owners_store_url'] . '?method=list';
            list($json, $info) = $this->getRequestApi($request, $authKey, $url, $app);
            if ($json) {
                // 接続成功時
                $data = json_decode($json, true);
                if (isset($data['success'])) {
                    $success = $data['success'];
                    if ($success == '1') {
                        // 既にインストールされているかどうか確認
                        foreach ($data['item'] as $item) {
                            foreach ($officialPlugins as $plugin) {
                                if ($plugin->getSource() == $item['product_id']) {
                                    // 商品IDが同一の情報を設定
                                    $plugin->setNewVersion($item['version']);
                                    $plugin->setLastUpdateDate($item['last_update_date']);
                                    $plugin->setProductUrl($item['product_url']);
                                    $plugin->setEccubeVersion($item['eccube_version']);
                                    if ($plugin->getVersion() != $item['version']) {
                                        // バージョンが異なる
                                        $plugin->setUpdateStatus(3);
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return $app->render('Store/plugin.twig', array('plugin_forms' => $pluginForms, 'officialPlugins' => $officialPlugins, 'unofficialPlugins' => $unofficialPlugins, 'configPages' => $configPages, 'unregisterdPlugins' => $unregisterdPlugins, 'unregisterdPluginsConfigPages' => $unregisterdPluginsConfigPages));
    }