/** * List, add, edit maker. * * @param Application $app * @param Request $request * @param null $id * * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request, $id = null) { $repos = $app['eccube.plugin.maker.repository.maker']; $TargetMaker = new Maker(); if ($id) { $TargetMaker = $repos->find($id); if (!$TargetMaker) { log_error('The Maker not found!', array('Maker id' => $id)); throw new NotFoundHttpException(); } } $form = $app['form.factory']->createBuilder('admin_maker', $TargetMaker)->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { log_info('Maker add/edit start.'); $status = $repos->save($TargetMaker); if ($status) { log_info('Maker add/edit success', array('Maker id' => $TargetMaker->getId())); $app->addSuccess('admin.plugin.maker.save.complete', 'admin'); return $app->redirect($app->url('admin_plugin_maker_index')); } else { log_info('Maker add/edit fail!', array('Maker id' => $TargetMaker->getId())); $app->addError('admin.plugin.maker.save.error', 'admin'); } } /** * @var ArrayCollection $arrMaker */ $arrMaker = $app['eccube.plugin.maker.repository.maker']->findBy(array(), array('rank' => 'DESC')); return $app->render('Maker/Resource/template/admin/maker.twig', array('form' => $form->createView(), 'arrMaker' => $arrMaker, 'TargetMaker' => $TargetMaker)); }
/** * 作成ボタンクリック時の処理 * 帳票のPDFをダウンロードする * * @param Application $app * @param Request $request * @throws BadRequestHttpException * @return \Symfony\Component\HttpFoundation\Response */ public function download(Application $app, Request $request) { // POSTでない場合は終了する if ('POST' !== $request->getMethod()) { throw new BadRequestHttpException(); } $form = $app['form.factory']->createBuilder('admin_order_pdf')->getForm(); $form->handleRequest($request); // validation if (!$form->isValid()) { return $app->render('OrderPdf/View/admin/order_pdf.twig', array('form' => $form->createView())); } // サービスの取得 $service = $app['eccube.plugin.order_pdf.service.order_pdf']; // 購入情報からPDFを作成する $status = $service->makePdf($form->getData()); // 異常終了した場合の処理 if (!$status) { $service->close(); $app->addError('admin.order_pdf.download.failure', 'admin'); return $app->render('OrderPdf/View/admin/order_pdf.twig', array('form' => $form->createView())); } // ダウンロードする $response = new Response($service->outputPdf(), 200, array('content-type' => 'application/pdf')); // レスポンスヘッダーにContent-Dispositionをセットし、ファイル名をreceipt.pdfに指定 $response->headers->set('Content-Disposition', 'attachment; filename="' . $service->getPdfFileName() . '"'); return $response; }
public function index(Application $app, Request $request, $id = null) { $Mail = null; if ($id) { $Mail = $app['orm.em']->getRepository('\\Eccube\\Entity\\MailTemplate')->find($id); if (is_null($Mail)) { throw new NotFoundHttpException(); } } $form = $app['form.factory']->createBuilder('mail', $Mail)->getForm(); $form['template']->setData($Mail); if ('POST' === $request->getMethod()) { $form->handleRequest($request); // 新規登録は現時点では未実装とする. if (is_null($Mail)) { $app->addError('admin.shop.mail.save.error', 'admin'); return $app->redirect($app->url('admin_setting_shop_mail')); } if ($form->isValid()) { $app['orm.em']->flush(); $app->addSuccess('admin.shop.mail.save.complete', 'admin'); return $app->redirect($app->url('admin_setting_shop_mail_edit', array('id' => $id))); } } return $app->render('Setting/Shop/mail.twig', array('form' => $form->createView(), 'id' => $id)); }
public function edit(Application $app, Request $request, $id) { $repos = $app['eccube.plugin.holiday.repository.holidayconfig']; $TargetHolidayConfig = new \Plugin\Holiday\Entity\HolidayConfig(); if ($id) { $TargetHolidayConfig = $repos->find($id); if (!$TargetHolidayConfig) { throw new NotFoundHttpException(); } } $form = $app['form.factory']->createBuilder('admin_holiday_config', $TargetHolidayConfig)->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { $status = $repos->save($TargetHolidayConfig); if ($status) { $app->addSuccess('admin.holiday.save.complete', 'admin'); return $app->redirect($app->url('plugin_holiday_config')); } else { $app->addError('admin.holiday.save.error', 'admin'); } } } return $app->render('Holiday/View/admin/holiday_config.twig', array('form' => $form->createView(), 'TargetHolidayConfig' => $TargetHolidayConfig)); }
public function index(Application $app, Request $request, $class_name_id, $id = null) { // $ClassName = $app['eccube.repository.class_name']->find($class_name_id); if (!$ClassName) { throw new NotFoundHttpException(); } if ($id) { $TargetClassCategory = $app['eccube.repository.class_category']->find($id); if (!$TargetClassCategory || $TargetClassCategory->getClassName() != $ClassName) { throw new NotFoundHttpException(); } } else { $TargetClassCategory = new \Eccube\Entity\ClassCategory(); $TargetClassCategory->setClassName($ClassName); } // $form = $app['form.factory']->createBuilder('admin_class_category', $TargetClassCategory)->getForm(); if ($request->getMethod() === 'POST') { $form->handleRequest($request); if ($form->isValid()) { $status = $app['eccube.repository.class_category']->save($TargetClassCategory); if ($status) { $app->addSuccess('admin.class_category.save.complete', 'admin'); return $app->redirect($app->url('admin_product_class_category', array('class_name_id' => $ClassName->getId()))); } else { $app->addError('admin.class_category.save.error', 'admin'); } } } $ClassCategories = $app['eccube.repository.class_category']->getList($ClassName); return $app->render('Product/class_category.twig', array('form' => $form->createView(), 'ClassName' => $ClassName, 'ClassCategories' => $ClassCategories, 'TargetClassCategory' => $TargetClassCategory)); }
public function index(Application $app, Request $request, $id = null) { $Mail = null; if ($id) { $Mail = $app['orm.em']->getRepository('\\Eccube\\Entity\\MailTemplate')->find($id); if (is_null($Mail)) { throw new NotFoundHttpException(); } } $builder = $app['form.factory']->createBuilder('mail', $Mail); $event = new EventArgs(array('builder' => $builder, 'Mail' => $Mail), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_MAIL_INDEX_INITIALIZE, $event); $form = $builder->getForm(); $form['template']->setData($Mail); if ('POST' === $request->getMethod()) { $form->handleRequest($request); // 新規登録は現時点では未実装とする. if (is_null($Mail)) { $app->addError('admin.shop.mail.save.error', 'admin'); return $app->redirect($app->url('admin_setting_shop_mail')); } if ($form->isValid()) { $app['orm.em']->flush(); $event = new EventArgs(array('form' => $form, 'Mail' => $Mail), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_MAIL_INDEX_COMPLETE, $event); $app->addSuccess('admin.shop.mail.save.complete', 'admin'); return $app->redirect($app->url('admin_setting_shop_mail_edit', array('id' => $id))); } } return $app->render('Setting/Shop/mail.twig', array('form' => $form->createView(), 'id' => $id)); }
public function index(Application $app, Request $request, $id) { $repos = $app['eccube.plugin.holiday.repository.holidayweek']; $TargetHolidayWeek = new \Plugin\Holiday\Entity\HolidayWeek(); if ($id) { $TargetHolidayWeek = $repos->find($id); if (!$TargetHolidayWeek) { throw new NotFoundHttpException(); } $TargetHolidayWeek->week = unserialize($TargetHolidayWeek->week); } $form = $app['form.factory']->createBuilder('admin_holiday_week', $TargetHolidayWeek)->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { // 取得した曜日選択情報をシリアライズ $TargetHolidayWeek->week = serialize($TargetHolidayWeek->week); $status = $repos->save($TargetHolidayWeek); if ($status) { $app->addSuccess('admin.holiday.save.complete', 'admin'); return $app->redirect($app->url('admin_holiday_week')); } else { $app->addError('admin.holiday.save.error', 'admin'); } } } return $app->render('Holiday/View/admin/week.twig', array('form' => $form->createView(), 'TargetHolidayWeek' => $TargetHolidayWeek)); }
public function index(Application $app, Request $request, $id = null) { if ($id) { $TargetClassName = $app['eccube.repository.class_name']->find($id); if (!$TargetClassName) { throw new NotFoundHttpException(); } } else { $TargetClassName = new \Eccube\Entity\ClassName(); } $builder = $app['form.factory']->createBuilder('admin_class_name', $TargetClassName); $event = new EventArgs(array('builder' => $builder, 'TargetClassName' => $TargetClassName), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_INDEX_INITIALIZE, $event); $form = $builder->getForm(); if ($request->getMethod() === 'POST') { $form->handleRequest($request); if ($form->isValid()) { $status = $app['eccube.repository.class_name']->save($TargetClassName); if ($status) { $event = new EventArgs(array('form' => $form, 'TargetClassName' => $TargetClassName), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_NAME_INDEX_COMPLETE, $event); $app->addSuccess('admin.class_name.save.complete', 'admin'); return $app->redirect($app->url('admin_product_class_name')); } else { $app->addError('admin.class_name.save.error', 'admin'); } } } $ClassNames = $app['eccube.repository.class_name']->getList(); return $app->render('Product/class_name.twig', array('form' => $form->createView(), 'ClassNames' => $ClassNames, 'TargetClassName' => $TargetClassName)); }
/** * 新着情報を登録・編集する。 * * @param Application $app * @param Request $request * @param integer $id * @throws NotFoundHttpException * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function edit(Application $app, Request $request, $id = null) { if ($id) { $News = $app['eccube.repository.news']->find($id); if (!$News) { throw new NotFoundHttpException(); } $News->setLinkMethod((bool) $News->getLinkMethod()); } else { $News = new \Eccube\Entity\News(); } $form = $app['form.factory']->createBuilder('admin_news', $News)->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); if (empty($data['url'])) { $News->setLinkMethod(Constant::DISABLED); } $status = $app['eccube.repository.news']->save($News); if ($status) { $app->addSuccess('admin.news.save.complete', 'admin'); return $app->redirect($app->url('admin_content_news')); } $app->addError('admin.news.save.error', 'admin'); } } return $app->render('Content/news_edit.twig', array('form' => $form->createView(), 'News' => $News)); }
public function index(Application $app, Request $request, $parent_id = null, $id = null) { if ($parent_id) { $Parent = $app['eccube.repository.category']->find($parent_id); if (!$Parent) { throw new NotFoundHttpException(); } } else { $Parent = null; } if ($id) { $TargetCategory = $app['eccube.repository.category']->find($id); if (!$TargetCategory) { throw new NotFoundHttpException(); } $Parent = $TargetCategory->getParent(); } else { $TargetCategory = new \Eccube\Entity\Category(); $TargetCategory->setParent($Parent); if ($Parent) { $TargetCategory->setLevel($Parent->getLevel() + 1); } else { $TargetCategory->setLevel(1); } } // $builder = $app['form.factory']->createBuilder('admin_category', $TargetCategory); $event = new EventArgs(array('builder' => $builder, 'Parent' => $Parent, 'TargetCategory' => $TargetCategory), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_INITIALIZE, $event); $form = $builder->getForm(); // if ($request->getMethod() === 'POST') { $form->handleRequest($request); if ($form->isValid()) { if ($app['config']['category_nest_level'] < $TargetCategory->getLevel()) { throw new BadRequestHttpException(); } $status = $app['eccube.repository.category']->save($TargetCategory); if ($status) { $event = new EventArgs(array('form' => $form, 'Parent' => $Parent, 'TargetCategory' => $TargetCategory), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_COMPLETE, $event); $app->addSuccess('admin.category.save.complete', 'admin'); if ($Parent) { return $app->redirect($app->url('admin_product_category_show', array('parent_id' => $Parent->getId()))); } else { return $app->redirect($app->url('admin_product_category')); } } else { $app->addError('admin.category.save.error', 'admin'); } } } $Children = $app['eccube.repository.category']->getList(null); $Categories = $app['eccube.repository.category']->getList($Parent); $TopCategories = $app['eccube.repository.category']->findBy(array('Parent' => null), array('rank' => 'DESC')); $category_count = $app['eccube.repository.category']->getTotalCount(); return $app->render('Product/category.twig', array('form' => $form->createView(), 'Children' => $Children, 'Parent' => $Parent, 'Categories' => $Categories, 'TopCategories' => $TopCategories, 'TargetCategory' => $TargetCategory, 'category_count' => $category_count)); }
/** * Create & Edit. * * @param Application $app * @param Request $request * @param int $id * * @return \Symfony\Component\HttpFoundation\Response */ public function edit(Application $app, Request $request, $id = null) { /* @var RecommendProduct $Recommend */ $Recommend = null; $Product = null; if (!is_null($id)) { // IDからおすすめ商品情報を取得する $Recommend = $app['eccube.plugin.recommend.repository.recommend_product']->find($id); if (!$Recommend) { $app->addError('admin.recommend.not_found', 'admin'); log_info('The recommend product is not found.', array('Recommend id' => $id)); return $app->redirect($app->url('admin_recommend_list')); } $Product = $Recommend->getProduct(); } // formの作成 /* @var Form $form */ $form = $app['form.factory']->createBuilder('admin_recommend', $Recommend)->getForm(); $form->handleRequest($request); $data = $form->getData(); if ($form->isSubmitted() && $form->isValid()) { $service = $app['eccube.plugin.recommend.service.recommend']; if (is_null($data['id'])) { if ($status = $service->createRecommend($data)) { $app->addSuccess('admin.plugin.recommend.register.success', 'admin'); log_info('Add the new recommend product success.', array('Product id' => $data['Product']->getId())); } } else { if ($status = $service->updateRecommend($data)) { $app->addSuccess('admin.plugin.recommend.update.success', 'admin'); log_info('Update the recommend product success.', array('Recommend id' => $Recommend->getId(), 'Product id' => $data['Product']->getId())); } } if (!$status) { $app->addError('admin.recommend.not_found', 'admin'); log_info('Failed the recommend product updating.', array('Product id' => $data['Product']->getId())); } return $app->redirect($app->url('admin_recommend_list')); } if (!empty($data['Product'])) { $Product = $data['Product']; } $arrProductIdByRecommend = $app['eccube.plugin.recommend.repository.recommend_product']->getRecommendProductIdAll(); return $this->registerView($app, array('form' => $form->createView(), 'recommend_products' => json_encode($arrProductIdByRecommend), 'Product' => $Product)); }
public function delete(Application $app, $id) { $Customer = $app['user']; // 別のお届け先削除 if ($app['eccube.repository.customer_address']->deleteByCustomerAndId($Customer, $id)) { $app->addError('mypage.address.delete.failed'); } else { $app->addSuccess('mypage.address.delete.complete'); } return $app->redirect($app->url('mypage_delivery')); }
public function edit(Application $app, Request $request, $id = null) { $repos = $app['eccube.plugin.holiday.repository.holiday']; if ($id) { $Holiday = $repos->find($id); if (!$Holiday) { throw new NotFoundHttpException(); } } else { $Holiday = new \Plugin\Holiday\Entity\Holiday(); } $form = $app['form.factory']->createBuilder('admin_holiday', $Holiday)->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { // 日付の妥当性チェック // 閏年への対応. if ($form->get('month')->getData() == 2 && $form->get('day')->getData() == 29) { $valid_date = true; } else { $valid_date = checkdate($form->get('month')->getData(), $form->get('day')->getData(), date('Y')); } if (!$valid_date) { $app->addError('admin.holiday.invalid_day.error', 'admin'); } else { $status = $repos->save($Holiday); if ($status) { $app->addSuccess('admin.holiday.save.complete', 'admin'); return $app->redirect($app->url('admin_setting_shop_holiday')); } else { $app->addError('admin.holiday.save.error', 'admin'); } } } } return $app->render('Holiday/Resource/template/admin//holiday_edit.twig', array('form' => $form->createView(), 'holiday' => $Holiday)); }
public function index(Application $app) { $BaseInfo = $app['eccube.repository.base_info']->get(); $form = $app['form.factory']->createBuilder('shop_master', $BaseInfo)->getForm(); if ($app['request']->getMethod() === 'POST') { $form->handleRequest($app['request']); if ($form->isValid()) { $app['orm.em']->persist($BaseInfo); $app['orm.em']->flush(); $app->addSuccess('admin.shop.save.complete', 'admin'); return $app->redirect($app->url('admin_setting_shop')); } $app->addError('admin.shop.save.error', 'admin'); } return $app->render('Setting/Shop/shop_master.twig', array('form' => $form->createView())); }
/** * @public * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request, $id = null) { $err = ''; $data = array(); $method = $request->getMethod(); $form = $app['form.factory']->createBuilder('appiaries_settings', null)->getForm(); $app['eccube.plugin.appiaries.repository.settings']->get_settings($data, $err); // No problem with "no_data", "no_database_id", "no_app_id", or "no_app_token". if ($err && preg_match('/^no_(?:data|datastore_id|app_id|app_token)$/', $err)) { $err = ''; } $queries = array(); if (!$err && $method == 'POST') { $form->handleRequest($request); $queries = $form->getData(); if (!$form->isValid()) { error_log('[AppiariesAdminPushControrller] ' . $form->getErrors()); $err = 'validation_failed'; } else { $settings = new \Plugin\Appiaries\Entity\AppiariesSettings(); $settings->setDatastoreId($queries['datastore_id']); $settings->setAppId($queries['app_id']); $settings->setAppToken($queries['app_token']); if (!$app['eccube.plugin.appiaries.repository.settings']->save($settings, $err)) { error_log('[ConfigController] ' . $err); $err = 'settings_save_failed'; } else { $app->addSuccess('admin_appiaries_settings_save_success', 'admin'); $data['datastore_id'] = $queries['datastore_id']; $data['app_id'] = $queries['app_id']; $data['app_token'] = $queries['app_token']; } $settings = null; } } if ($err) { error_log('[ConfigController] ' . $err); $app->addError('admin_appiaries_' . $err, 'admin'); } $data['config_form'] = $form->createView(); $err = null; $request = null; $form = null; $queries = null; return $app->render('Appiaries/templates/admin/config/index.twig', $data); }
public function index(Application $app) { $Help = $app['eccube.repository.help']->get(); $form = $app['form.factory']->createBuilder('tradelaw', $Help)->getForm(); if ('POST' === $app['request']->getMethod()) { $form->handleRequest($app['request']); if ($form->isValid()) { $Help = $form->getData(); $app['orm.em']->persist($Help); $app['orm.em']->flush(); $app->addSuccess('admin.register.complete', 'admin'); return $app->redirect($app->url('admin_setting_shop_tradelaw')); } else { $app->addError('admin.register.failed', 'admin'); } } return $app->render('Setting/Shop/tradelaw.twig', array('form' => $form->createView())); }
public function edit(Application $app, Request $request, $id = null) { $previous_password = null; if ($id) { $Member = $app['eccube.repository.member']->find($id); if (!$Member) { throw new NotFoundHttpException(); } $previous_password = $Member->getPassword(); $Member->setPassword($app['config']['default_password']); } else { $Member = new \Eccube\Entity\Member(); } $form = $app['form.factory']->createBuilder('admin_member', $Member)->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { if (!is_null($previous_password) && $Member->getpassword() === $app['config']['default_password']) { // 編集時にPWを変更していなければ // 変更前のパスワード(暗号化済み)をセット $Member->setPassword($previous_password); } else { $salt = $Member->getSalt(); if (!isset($salt)) { $salt = $app['eccube.repository.member']->createSalt(5); $Member->setSalt($salt); } // 入力されたPWを暗号化してセット $password = $app['eccube.repository.member']->encryptPassword($Member); $Member->setPassword($password); } $status = $app['eccube.repository.member']->save($Member); if ($status) { $app->addSuccess('admin.member.save.complete', 'admin'); return $app->redirect($app->url('admin_setting_system_member')); } else { $app->addError('admin.member.save.error', 'admin'); } } } return $app->render('Setting/System/member_edit.twig', array('form' => $form->createView(), 'Member' => $Member)); }
public function delete(Application $app, Request $request, $id) { $repos = $app['eccube.plugin.holiday.repository.holiday']; $TargetHoliday = $repos->find($id); if (!$TargetHoliday) { throw new NotFoundHttpException(); } $form = $app['form.factory']->createNamedBuilder('admin_holiday', 'form', null, array('allow_extra_fields' => true))->getForm(); $status = false; if ('DELETE' === $request->getMethod()) { $form->handleRequest($request); $status = $repos->delete($TargetHoliday); } if ($status === true) { $app->addSuccess('admin.holiday.delete.complete', 'admin'); } else { $app->addError('admin.holiday.delete.error', 'admin'); } return $app->redirect($app->url('admin_holiday')); }
public function index(Application $app, Request $request, $class_name_id, $id = null) { // $ClassName = $app['eccube.repository.class_name']->find($class_name_id); if (!$ClassName) { throw new NotFoundHttpException('商品規格が存在しません'); } if ($id) { $TargetClassCategory = $app['eccube.repository.class_category']->find($id); if (!$TargetClassCategory || $TargetClassCategory->getClassName() != $ClassName) { throw new NotFoundHttpException('商品規格が存在しません'); } } else { $TargetClassCategory = new \Eccube\Entity\ClassCategory(); $TargetClassCategory->setClassName($ClassName); } // $builder = $app['form.factory']->createBuilder('admin_class_category', $TargetClassCategory); $event = new EventArgs(array('builder' => $builder, 'ClassName' => $ClassName, 'TargetClassCategory' => $TargetClassCategory), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_INITIALIZE, $event); $form = $builder->getForm(); if ($request->getMethod() === 'POST') { $form->handleRequest($request); if ($form->isValid()) { log_info('規格分類登録開始', array($id)); $status = $app['eccube.repository.class_category']->save($TargetClassCategory); if ($status) { log_info('規格分類登録完了', array($id)); $event = new EventArgs(array('form' => $form, 'ClassName' => $ClassName, 'TargetClassCategory' => $TargetClassCategory), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_COMPLETE, $event); $app->addSuccess('admin.class_category.save.complete', 'admin'); return $app->redirect($app->url('admin_product_class_category', array('class_name_id' => $ClassName->getId()))); } else { log_info('規格分類登録エラー', array($id)); $app->addError('admin.class_category.save.error', 'admin'); } } } $ClassCategories = $app['eccube.repository.class_category']->getList($ClassName); return $app->render('Product/class_category.twig', array('form' => $form->createView(), 'ClassName' => $ClassName, 'ClassCategories' => $ClassCategories, 'TargetClassCategory' => $TargetClassCategory)); }
public function index(Application $app, Request $request) { $BaseInfo = $app['eccube.repository.base_info']->get(); $builder = $app['form.factory']->createBuilder('shop_master', $BaseInfo); $event = new EventArgs(array('builder' => $builder, 'BaseInfo' => $BaseInfo), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_SHOP_INDEX_INITIALIZE, $event); $form = $builder->getForm(); if ($app['request']->getMethod() === 'POST') { $form->handleRequest($app['request']); if ($form->isValid()) { $app['orm.em']->persist($BaseInfo); $app['orm.em']->flush(); $event = new EventArgs(array('form' => $form, 'BaseInfo' => $BaseInfo), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_SHOP_INDEX_COMPLETE, $event); $app->addSuccess('admin.shop.save.complete', 'admin'); return $app->redirect($app->url('admin_setting_shop')); } $app->addError('admin.shop.save.error', 'admin'); } return $app->render('Setting/Shop/shop_master.twig', array('form' => $form->createView())); }
/** * 合計金額がマイナスになっていた場合、値引き処理を元に戻す * * @param Order $Order */ private function restoreDiscount(Order $Order) { // クーポンが未入力でクーポン情報が存在すればクーポン情報を削除 $CouponOrder = $this->app['eccube.plugin.coupon.service.coupon']->getCouponOrder($Order->getPreOrderId()); if ($CouponOrder) { $total = $Order->getSubtotal() + $Order->getCharge() + $Order->getDeliveryFeeTotal(); // 合計金額 $totalAmount = $total - $Order->getDiscount(); if ($totalAmount < 0) { // 合計金額がマイナスのため、金額を値引き前に戻す $this->app['orm.em']->remove($CouponOrder); $this->app['orm.em']->flush($CouponOrder); $discount = $Order->getDiscount() - $CouponOrder->getDiscount(); $Order->setDiscount($discount); $total = $total - $discount; $Order->setTotal($total); $Order->setPaymentTotal($total); $this->app['orm.em']->flush($Order); $this->app->addError($this->app->trans('front.plugin.coupon.shopping.use.minus'), 'front.request'); } } }
public function index(Application $app, Request $request) { $Help = $app['eccube.repository.help']->get(); $builder = $app['form.factory']->createBuilder('tradelaw', $Help); $event = new EventArgs(array('builder' => $builder, 'Help' => $Help), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_TRADE_LAW_INDEX_INITIALIZE, $event); $form = $builder->getForm(); if ('POST' === $app['request']->getMethod()) { $form->handleRequest($app['request']); if ($form->isValid()) { $Help = $form->getData(); $app['orm.em']->persist($Help); $app['orm.em']->flush(); $event = new EventArgs(array('form' => $form, 'Help' => $Help), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SHOP_TRADE_LAW_INDEX_COMPLETE, $event); $app->addSuccess('admin.register.complete', 'admin'); return $app->redirect($app->url('admin_setting_shop_tradelaw')); } else { $app->addError('admin.register.failed', 'admin'); } } return $app->render('Setting/Shop/tradelaw.twig', array('form' => $form->createView())); }
public function copy(Application $app, Request $request, $id = null) { if (!is_null($id)) { $Product = $app['eccube.repository.product']->find($id); if ($Product instanceof \Eccube\Entity\Product) { $CopyProduct = clone $Product; $CopyProduct->copy(); $Disp = $app['eccube.repository.master.disp']->find(\Eccube\Entity\Master\Disp::DISPLAY_HIDE); $CopyProduct->setStatus($Disp); $CopyProductCategories = $CopyProduct->getProductCategories(); foreach ($CopyProductCategories as $Category) { $app['orm.em']->persist($Category); } $CopyProductClasses = $CopyProduct->getProductClasses(); foreach ($CopyProductClasses as $Class) { $Stock = $Class->getProductStock(); $CopyStock = clone $Stock; $CopyStock->setProductClass($Class); $app['orm.em']->persist($CopyStock); $app['orm.em']->persist($Class); } $Images = $CopyProduct->getProductImage(); foreach ($Images as $Image) { // 画像ファイルを新規作成 $extension = pathinfo($Image->getFileName(), PATHINFO_EXTENSION); $filename = date('mdHis') . uniqid('_') . '.' . $extension; try { $fs = new Filesystem(); $fs->copy($app['config']['image_save_realdir'] . '/' . $Image->getFileName(), $app['config']['image_save_realdir'] . '/' . $filename); } catch (\Exception $e) { // エラーが発生しても無視する } $Image->setFileName($filename); $app['orm.em']->persist($Image); } $Tags = $CopyProduct->getProductTag(); foreach ($Tags as $Tag) { $app['orm.em']->persist($Tag); } $app['orm.em']->persist($CopyProduct); $app['orm.em']->flush(); $app->addSuccess('admin.product.copy.complete', 'admin'); return $app->redirect($app->url('admin_product_product_edit', array('id' => $CopyProduct->getId()))); } else { $app->addError('admin.product.copy.failed', 'admin'); } } else { $app->addError('admin.product.copy.failed', 'admin'); } return $app->redirect($app->url('admin_product')); }
/** * 編集 * @param Application $app * @param Request $request * @param unknown $id * @return \Symfony\Component\HttpFoundation\Response */ public function edit(Application $app, Request $request, $id) { if (is_null($id) || strlen($id) == 0) { $app->addError("admin.recommend.recommend_id.notexists", "admin"); return $app->redirect($app->url('admin_recommend_list')); } $service = $app['eccube.plugin.recommend.service.recommend']; // IDからおすすめ商品情報を取得する $Recommend = $app['eccube.plugin.recommend.repository.recommend_product']->findById($id); if (is_null($Recommend)) { $app->addError('admin.recommend.notfound', 'admin'); return $app->redirect($app->url('admin_recommend_list')); } $Recommend = $Recommend[0]; // formの作成 $form = $app['form.factory']->createBuilder('admin_recommend', $Recommend)->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { $status = $service->updateRecommend($form->getData()); if (!$status) { $app->addError('admin.recommend.notfound', 'admin'); } else { $app->addSuccess('admin.plugin.recommend.update.success', 'admin'); } return $app->redirect($app->url('admin_recommend_list')); } } return $this->renderRegistView($app, array('form' => $form->createView(), 'Product' => $Recommend->getProduct())); }
public function edit(Application $app, Request $request, $id = null) { $has_class = false; if (is_null($id)) { $Product = new \Eccube\Entity\Product(); $ProductClass = new \Eccube\Entity\ProductClass(); $Disp = $app['eccube.repository.master.disp']->find(\Eccube\Entity\Master\Disp::DISPLAY_HIDE); $Product->setDelFlg(Constant::DISABLED)->addProductClass($ProductClass)->setStatus($Disp); $ProductClass->setDelFlg(Constant::DISABLED)->setStockUnlimited(true)->setProduct($Product); $ProductStock = new \Eccube\Entity\ProductStock(); $ProductClass->setProductStock($ProductStock); $ProductStock->setProductClass($ProductClass); } else { $Product = $app['eccube.repository.product']->find($id); if (!$Product) { throw new NotFoundHttpException(); } // 規格あり商品か $has_class = $Product->hasProductClass(); if (!$has_class) { $ProductClasses = $Product->getProductClasses(); $ProductClass = $ProductClasses[0]; $BaseInfo = $app['eccube.repository.base_info']->get(); if ($BaseInfo->getOptionProductTaxRule() == Constant::ENABLED && $ProductClass->getTaxRule() && !$ProductClass->getTaxRule()->getDelFlg()) { $ProductClass->setTaxRate($ProductClass->getTaxRule()->getTaxRate()); } $ProductStock = $ProductClasses[0]->getProductStock(); } } $builder = $app['form.factory']->createBuilder('admin_product', $Product); // 規格あり商品の場合、規格関連情報をFormから除外 if ($has_class) { $builder->remove('class'); } $event = new EventArgs(array('builder' => $builder, 'Product' => $Product), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_INITIALIZE, $event); $form = $builder->getForm(); if (!$has_class) { $ProductClass->setStockUnlimited((bool) $ProductClass->getStockUnlimited()); $form['class']->setData($ProductClass); } // ファイルの登録 $images = array(); $ProductImages = $Product->getProductImage(); foreach ($ProductImages as $ProductImage) { $images[] = $ProductImage->getFileName(); } $form['images']->setData($images); $categories = array(); $ProductCategories = $Product->getProductCategories(); foreach ($ProductCategories as $ProductCategory) { /* @var $ProductCategory \Eccube\Entity\ProductCategory */ $categories[] = $ProductCategory->getCategory(); } $form['Category']->setData($categories); $Tags = array(); $ProductTags = $Product->getProductTag(); foreach ($ProductTags as $ProductTag) { $Tags[] = $ProductTag->getTag(); } $form['Tag']->setData($Tags); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { $Product = $form->getData(); if (!$has_class) { $ProductClass = $form['class']->getData(); // 個別消費税 $BaseInfo = $app['eccube.repository.base_info']->get(); if ($BaseInfo->getOptionProductTaxRule() == Constant::ENABLED) { if ($ProductClass->getTaxRate()) { if ($ProductClass->getTaxRule() && !$ProductClass->getTaxRule()->getDelFlg()) { $ProductClass->getTaxRule()->setTaxRate($ProductClass->getTaxRate()); } else { $taxrule = $app['eccube.repository.tax_rule']->newTaxRule(); $taxrule->setTaxRate($ProductClass->getTaxRate()); $taxrule->setApplyDate(new \DateTime()); $taxrule->setProduct($Product); $taxrule->setProductClass($ProductClass); $ProductClass->setTaxRule($taxrule); } } else { if ($ProductClass->getTaxRule()) { $ProductClass->getTaxRule()->setDelFlg(Constant::ENABLED); } } } $app['orm.em']->persist($ProductClass); // 在庫情報を作成 if (!$ProductClass->getStockUnlimited()) { $ProductStock->setStock($ProductClass->getStock()); } else { // 在庫無制限時はnullを設定 $ProductStock->setStock(null); } $app['orm.em']->persist($ProductStock); } // カテゴリの登録 // 一度クリア /* @var $Product \Eccube\Entity\Product */ foreach ($Product->getProductCategories() as $ProductCategory) { $Product->removeProductCategory($ProductCategory); $app['orm.em']->remove($ProductCategory); } $app['orm.em']->persist($Product); $app['orm.em']->flush(); $count = 1; $Categories = $form->get('Category')->getData(); foreach ($Categories as $Category) { $ProductCategory = new \Eccube\Entity\ProductCategory(); $ProductCategory->setProduct($Product)->setProductId($Product->getId())->setCategory($Category)->setCategoryId($Category->getId())->setRank($count); $app['orm.em']->persist($ProductCategory); $count++; /* @var $Product \Eccube\Entity\Product */ $Product->addProductCategory($ProductCategory); } // 画像の登録 $add_images = $form->get('add_images')->getData(); foreach ($add_images as $add_image) { $ProductImage = new \Eccube\Entity\ProductImage(); $ProductImage->setFileName($add_image)->setProduct($Product)->setRank(1); $Product->addProductImage($ProductImage); $app['orm.em']->persist($ProductImage); // 移動 $file = new File($app['config']['image_temp_realdir'] . '/' . $add_image); $file->move($app['config']['image_save_realdir']); } // 画像の削除 $delete_images = $form->get('delete_images')->getData(); foreach ($delete_images as $delete_image) { $ProductImage = $app['eccube.repository.product_image']->findOneBy(array('file_name' => $delete_image)); // 追加してすぐに削除した画像は、Entityに追加されない if ($ProductImage instanceof \Eccube\Entity\ProductImage) { $Product->removeProductImage($ProductImage); $app['orm.em']->remove($ProductImage); } $app['orm.em']->persist($Product); // 削除 $fs = new Filesystem(); $fs->remove($app['config']['image_save_realdir'] . '/' . $delete_image); } $app['orm.em']->persist($Product); $app['orm.em']->flush(); $ranks = $request->get('rank_images'); if ($ranks) { foreach ($ranks as $rank) { list($filename, $rank_val) = explode('//', $rank); $ProductImage = $app['eccube.repository.product_image']->findOneBy(array('file_name' => $filename, 'Product' => $Product)); $ProductImage->setRank($rank_val); $app['orm.em']->persist($ProductImage); } } $app['orm.em']->flush(); // 商品タグの登録 // 商品タグを一度クリア $ProductTags = $Product->getProductTag(); foreach ($ProductTags as $ProductTag) { $Product->removeProductTag($ProductTag); $app['orm.em']->remove($ProductTag); } // 商品タグの登録 $Tags = $form->get('Tag')->getData(); foreach ($Tags as $Tag) { $ProductTag = new ProductTag(); $ProductTag->setProduct($Product)->setTag($Tag); $Product->addProductTag($ProductTag); $app['orm.em']->persist($ProductTag); } $app['orm.em']->flush(); $event = new EventArgs(array('form' => $form, 'Product' => $Product), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_COMPLETE, $event); $app->addSuccess('admin.register.complete', 'admin'); return $app->redirect($app->url('admin_product_product_edit', array('id' => $Product->getId()))); } else { $app->addError('admin.register.failed', 'admin'); } } // 検索結果の保持 $builder = $app['form.factory']->createBuilder('admin_search_product'); $event = new EventArgs(array('builder' => $builder, 'Product' => $Product), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_EDIT_SEARCH, $event); $searchForm = $builder->getForm(); if ('POST' === $request->getMethod()) { $searchForm->handleRequest($request); } return $app->render('Product/product.twig', array('Product' => $Product, 'form' => $form->createView(), 'searchForm' => $searchForm->createView(), 'has_class' => $has_class, 'id' => $id)); }
public function delete(Application $app, Request $request, $id) { $TargetMember = $app['eccube.repository.member']->find($id); if (!$TargetMember) { throw new NotFoundHttpException(); } $status = false; if ('POST' === $request->getMethod()) { $status = $app['eccube.repository.member']->delete($TargetMember); } if ($status) { $app->addSuccess('admin.member.delete.complete', 'admin'); } else { $app->addError('admin.member.delete.error', 'admin'); } return $app->redirect($app->url('admin_setting_system_member')); }
/** * * @param Application $app * @param Request $request * @param unknown $id * @throws NotFoundHttpException */ public function down(Application $app, Request $request, $id) { $repos = $app['eccube.plugin.mail_magazine.repository.maker']; $TargetMailMagazine = $repos->find($id); if (!$TargetMailMagazine) { throw new NotFoundHttpException(); } $form = $app['form.factory']->createNamedBuilder('admin_mail_magazine', 'form', null, array('allow_extra_fields' => true))->getForm(); $status = false; if ($request->getMethod() === 'POST') { $form->handleRequest($request); if ($form->isValid()) { $status = $repos->down($TargetMailMagazine); } } if ($status === true) { $app->addSuccess('admin.mail.down.complete', 'admin'); } else { $app->addError('admin.mail.down.error', 'admin'); } return $app->redirect($app->url('admin_mail_magazine')); }
public function moveRank(Application $app, Request $request) { $category_id = intval($request->get('category_id')); $product_id = intval($request->get('product_id')); $position = intval($request->get('position')); $em = $app['orm.em']; $Category = $app['eccube.repository.category']->find($category_id); $status = $app['eccube.plugin.product_rank.repository.product_rank']->renumber($Category); $repos = $em->getRepository('\\Eccube\\Entity\\ProductCategory'); $TargetProductCategory = $repos->findOneBy(array('category_id' => $category_id, 'product_id' => $product_id)); if (!$TargetProductCategory) { throw new EntityNotFoundException(); } if ($status === true) { $status = $app['eccube.plugin.product_rank.repository.product_rank']->moveRank($TargetProductCategory, $position); } if ($request->isXmlHttpRequest()) { return $status; } else { if ($status === true) { $app->addSuccess('admin.product_rank.down.complete', 'admin'); } else { $app->addError('admin.product_rank.down.error', 'admin'); } return $app->redirect($app->url('admin_product_product_rank_show', array('category_id' => $category_id))); } }
/** * 複数配送処理 */ public function shippingMultiple(Application $app, Request $request) { $cartService = $app['eccube.service.cart']; // カートチェック if (!$cartService->isLocked()) { // カートが存在しない、カートがロックされていない時はエラー return $app->redirect($app->url('cart')); } // カートチェック if (count($cartService->getCart()->getCartItems()) <= 0) { // カートが存在しない時はエラー return $app->redirect($app->url('cart')); } $Order = $app['eccube.service.shopping']->getOrder($app['config']['order_processing']); if (!$Order) { $app->addError('front.shopping.order.error'); return $app->redirect($app->url('shopping_error')); } // 複数配送時は商品毎でお届け先を設定する為、商品をまとめた数量を設定 $compItemQuantities = array(); foreach ($Order->getShippings() as $Shipping) { foreach ($Shipping->getShipmentItems() as $ShipmentItem) { $itemId = $ShipmentItem->getProductClass()->getId(); $quantity = $ShipmentItem->getQuantity(); if (array_key_exists($itemId, $compItemQuantities)) { $compItemQuantities[$itemId] = $compItemQuantities[$itemId] + $quantity; } else { $compItemQuantities[$itemId] = $quantity; } } } // 商品に紐づく商品情報を取得 $shipmentItems = array(); $productClassIds = array(); foreach ($Order->getShippings() as $Shipping) { foreach ($Shipping->getShipmentItems() as $ShipmentItem) { if (!in_array($ShipmentItem->getProductClass()->getId(), $productClassIds)) { $shipmentItems[] = $ShipmentItem; } $productClassIds[] = $ShipmentItem->getProductClass()->getId(); } } $form = $app->form()->getForm(); $form->add('shipping_multiple', 'collection', array('type' => 'shipping_multiple', 'data' => $shipmentItems, 'allow_add' => true, 'allow_delete' => true)); $form->handleRequest($request); $errors = array(); if ($form->isSubmitted() && $form->isValid()) { $data = $form['shipping_multiple']; // 数量が超えていないか、同一でないとエラー $itemQuantities = array(); foreach ($data as $mulitples) { /** @var \Eccube\Entity\ShipmentItem $multipleItem */ $multipleItem = $mulitples->getData(); foreach ($mulitples as $items) { foreach ($items as $item) { $quantity = $item['quantity']->getData(); $itemId = $multipleItem->getProductClass()->getId(); if (array_key_exists($itemId, $itemQuantities)) { $itemQuantities[$itemId] = $itemQuantities[$itemId] + $quantity; } else { $itemQuantities[$itemId] = $quantity; } } } } foreach ($compItemQuantities as $key => $value) { if (array_key_exists($key, $itemQuantities)) { if ($itemQuantities[$key] != $value) { $errors[] = array('message' => '数量の数が異なっています。'); // 対象がなければエラー return $app->render('Shopping/shipping_multiple.twig', array('form' => $form->createView(), 'shipmentItems' => $shipmentItems, 'compItemQuantities' => $compItemQuantities, 'errors' => $errors)); } } } // お届け先情報をdelete/insert $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Order->removeShipping($Shipping); $app['orm.em']->remove($Shipping); } foreach ($data as $mulitples) { /** @var \Eccube\Entity\ShipmentItem $multipleItem */ $multipleItem = $mulitples->getData(); foreach ($mulitples as $items) { foreach ($items as $item) { // 追加された配送先情報を作成 $Delivery = $multipleItem->getShipping()->getDelivery(); // 選択された情報を取得 $data = $item['customer_address']->getData(); if ($data instanceof CustomerAddress) { // 会員の場合、CustomerAddressオブジェクトを取得 $CustomerAddress = $data; } else { // 非会員の場合、選択されたindexが取得される $customerAddresses = $app['session']->get($this->sessionCustomerAddressKey); $customerAddresses = unserialize($customerAddresses); $CustomerAddress = $customerAddresses[$data]; $pref = $app['eccube.repository.master.pref']->find($CustomerAddress->getPref()->getId()); $CustomerAddress->setPref($pref); } $Shipping = new Shipping(); $Shipping->setFromCustomerAddress($CustomerAddress)->setDelivery($Delivery)->setDelFlg(Constant::DISABLED)->setOrder($Order); $app['orm.em']->persist($Shipping); $ProductClass = $multipleItem->getProductClass(); $Product = $multipleItem->getProduct(); $quantity = $item['quantity']->getData(); $ShipmentItem = new ShipmentItem(); $ShipmentItem->setShipping($Shipping)->setOrder($Order)->setProductClass($ProductClass)->setProduct($Product)->setProductName($Product->getName())->setProductCode($ProductClass->getCode())->setPrice($ProductClass->getPrice02())->setQuantity($quantity); $ClassCategory1 = $ProductClass->getClassCategory1(); if (!is_null($ClassCategory1)) { $ShipmentItem->setClasscategoryName1($ClassCategory1->getName()); $ShipmentItem->setClassName1($ClassCategory1->getClassName()->getName()); } $ClassCategory2 = $ProductClass->getClassCategory2(); if (!is_null($ClassCategory2)) { $ShipmentItem->setClasscategoryName2($ClassCategory2->getName()); $ShipmentItem->setClassName2($ClassCategory2->getClassName()->getName()); } $Shipping->addShipmentItem($ShipmentItem); $app['orm.em']->persist($ShipmentItem); // 配送料金の設定 $app['eccube.service.shopping']->setShippingDeliveryFee($Shipping); } } } // 配送先を更新 $app['orm.em']->flush(); return $app->redirect($app->url('shopping')); } return $app->render('Shopping/shipping_multiple.twig', array('form' => $form->createView(), 'shipmentItems' => $shipmentItems, 'compItemQuantities' => $compItemQuantities, 'errors' => $errors)); }
/** * オーナーズブラグインインストール、アップデート * * @param Application $app * @param Request $request * @param $action * @param $id * @param $version */ public function upgrade(Application $app, Request $request, $action, $id, $version) { $BaseInfo = $app['eccube.repository.base_info']->get(); $authKey = $BaseInfo->getAuthenticationKey(); $message = ''; if (!is_null($authKey)) { // オーナーズストア通信 $url = $app['config']['owners_store_url'] . '?method=download&product_id=' . $id; list($json, $httpHeader) = $this->getRequestApi($request, $authKey, $url); if ($json === false) { // 接続失敗時 $message = $this->getResponseErrorMessage($httpHeader); } else { // 接続成功時 $data = json_decode($json, true); if (isset($data['success'])) { $success = $data['success']; if ($success == '1') { $tmpDir = null; try { $service = $app['eccube.service.plugin']; $item = $data['item']; $file = base64_decode($item['data']); $extension = pathinfo($item['file_name'], PATHINFO_EXTENSION); $tmpDir = $service->createTempDir(); $tmpFile = sha1(Str::random(32)) . '.' . $extension; // ファイル作成 $fs = new Filesystem(); $fs->dumpFile($tmpDir . '/' . $tmpFile, $file); if ($action == 'install') { $service->install($tmpDir . '/' . $tmpFile, $id); $app->addSuccess('admin.plugin.install.complete', 'admin'); } else { if ($action == 'update') { $Plugin = $app['eccube.repository.plugin']->findOneBy(array('source' => $id)); $service->update($Plugin, $tmpDir . '/' . $tmpFile); $app->addSuccess('admin.plugin.update.complete', 'admin'); } } $fs = new Filesystem(); $fs->remove($tmpDir); // ダウンロード完了通知処理(正常終了時) $url = $app['config']['owners_store_url'] . '?method=commit&product_id=' . $id . '&status=1&version=' . $version; $this->getRequestApi($request, $authKey, $url); 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 { $message = $data['error_code'] . ' : ' . $data['error_message']; } } else { $message = "EC-CUBEオーナーズストアにエラーが発生しています。"; } } } // ダウンロード完了通知処理(エラー発生時) $url = $app['config']['owners_store_url'] . '?method=commit&product_id=' . $id . '&status=0&version=' . $version . '&message=' . urlencode($message); $this->getRequestApi($request, $authKey, $url); $app->addError($message, 'admin'); return $app->redirect($app->url('admin_store_plugin_owners_install')); }