コード例 #1
0
 /**
  * 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));
 }
コード例 #2
0
 /**
  * 作成ボタンクリック時の処理
  * 帳票の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;
 }
コード例 #3
0
ファイル: MailController.php プロジェクト: hiroyasu55/ec-cube
 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));
 }
コード例 #4
0
 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));
 }
コード例 #5
0
 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));
 }
コード例 #6
0
ファイル: MailController.php プロジェクト: ec-cube/ec-cube
 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));
 }
コード例 #7
0
 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));
 }
コード例 #8
0
 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));
 }
コード例 #9
0
ファイル: NewsController.php プロジェクト: hiroyasu55/ec-cube
 /**
  * 新着情報を登録・編集する。
  *
  * @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));
 }
コード例 #10
0
 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));
 }
コード例 #11
0
 /**
  * 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));
 }
コード例 #12
0
 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'));
 }
コード例 #13
0
 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));
 }
コード例 #14
0
ファイル: ShopController.php プロジェクト: hiroyasu55/ec-cube
 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()));
 }
コード例 #15
0
 /**
  * @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);
 }
コード例 #16
0
 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()));
 }
コード例 #17
0
 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));
 }
コード例 #18
0
 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'));
 }
コード例 #19
0
 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));
 }
コード例 #20
0
ファイル: ShopController.php プロジェクト: ec-cube/ec-cube
 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()));
 }
コード例 #21
0
ファイル: Coupon.php プロジェクト: EC-CUBE/coupon-plugin
 /**
  * 合計金額がマイナスになっていた場合、値引き処理を元に戻す
  *
  * @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');
         }
     }
 }
コード例 #22
0
 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()));
 }
コード例 #23
0
 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'));
 }
コード例 #24
0
 /**
  * 編集
  * @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()));
 }
コード例 #25
0
 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));
 }
コード例 #26
0
 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'));
 }
コード例 #27
0
 /**
  *
  * @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'));
 }
コード例 #28
0
 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)));
     }
 }
コード例 #29
0
 /**
  * 複数配送処理
  */
 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));
 }
コード例 #30
0
 /**
  * オーナーズブラグインインストール、アップデート
  *
  * @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'));
 }