public function ownersInstall(Application $app, Request $request)
{
// オーナーズストアからダウンロード可能プラグイン情報を取得
$BaseInfo = $app['eccube.repository.base_info']->get();
$authKey = $BaseInfo->getAuthenticationKey();
$authResult = true;
$success = 0;
$items = array();
$promotionItems = array();
$message = '';
if (!is_null($authKey)) {
// オーナーズストア通信
$url = $app['config']['owners_store_url'] . '?method=list';
list($json, $info) = $this->getRequestApi($request, $authKey, $url, $app);
if ($json === false) {
// 接続失敗時
$success = 0;
$message = $this->getResponseErrorMessage($info);
} else {
// 接続成功時
$data = json_decode($json, true);
if (isset($data['success'])) {
$success = $data['success'];
if ($success == '1') {
$items = array();
// 既にインストールされているかどうか確認
$Plugins = $app['eccube.repository.plugin']->findAll();
$status = false;
// update_status 1 : 未インストール、2 : インストール済、 3 : 更新あり、4 : 有料購入
foreach ($data['item'] as $item) {
foreach ($Plugins as $plugin) {
if ($plugin->getSource() == $item['product_id']) {
if ($plugin->getVersion() == $item['version']) {
// バージョンが同じ
$item['update_status'] = 2;
} else {
// バージョンが異なる
$item['update_status'] = 3;
}
$items[] = $item;
$status = true;
break;
}
}
if (!$status) {
// 未インストール
$item['update_status'] = 1;
$items[] = $item;
}
$status = false;
}
// EC-CUBEのバージョンチェック
// 参照渡しをして値を追加
foreach ($items as &$item) {
if (in_array(Constant::VERSION, $item['eccube_version'])) {
// 対象バージョン
$item['version_check'] = 1;
} else {
// 未対象バージョン
$item['version_check'] = 0;
}
if ($item['price'] != '0' && $item['purchased'] == '0') {
// 有料商品で未購入
$item['update_status'] = 4;
}
}
unset($item);
// promotionアイテム
$i = 0;
foreach ($items as $item) {
if ($item['promotion'] == 1) {
$promotionItems[] = $item;
unset($items[$i]);
}
$i++;
}
} else {
$message = $data['error_code'] . ' : ' . $data['error_message'];
}
} else {
$success = 0;
$message = "EC-CUBEオーナーズストアにエラーが発生しています。";
}
}
} else {
$authResult = false;
}
return $app->render('Store/plugin_owners_install.twig', array('authResult' => $authResult, 'success' => $success, 'items' => $items, 'promotionItems' => $promotionItems, 'message' => $message));
}