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