public function update(Application $app, Request $request, $id)
{
$Plugin = $app['eccube.repository.plugin']->find($id);
$form = $app['form.factory']->createNamedBuilder('form' . $id, 'plugin_management', null, array('plugin_id' => null))->getForm();
$message = '';
if ('POST' === $request->getMethod()) {
$form->handleRequest($request);
if ($form->isValid()) {
$tmpDir = null;
try {
$formFile = $form['plugin_archive']->getData();
$tmpDir = $app['eccube.service.plugin']->createTempDir();
$tmpFile = sha1(Str::random(32)) . '.' . $formFile->getClientOriginalExtension();
$formFile->move($tmpDir, $tmpFile);
$app['eccube.service.plugin']->update($Plugin, $tmpDir . '/' . $tmpFile);
$fs = new Filesystem();
$fs->remove($tmpDir);
$app->addSuccess('admin.plugin.update.complete', 'admin');
return $app->redirect($app->url('admin_store_plugin'));
} catch (PluginException $e) {
if (!empty($tmpDir) && file_exists($tmpDir)) {
$fs = new Filesystem();
$fs->remove($tmpDir);
}
$message = $e->getMessage();
}
} else {
$errors = $form->getErrors(true);
foreach ($errors as $error) {
$message = $error->getMessage();
}
}
}
$app->addError($message, 'admin');
return $app->redirect($app->url('admin_store_plugin'));
}