/** * ブロックを登録 * * @param $app * @throws \Exception */ private function copyBlock($app) { // ファイルコピー $file = new Filesystem(); // ブロックファイルをコピー $file->copy($this->originBlock, $app['config']['block_realdir'] . '/' . $this->blockFileName . '.twig'); $em = $app['orm.em']; $em->getConnection()->beginTransaction(); try { $DeviceType = $app['eccube.repository.master.device_type']->find(DeviceType::DEVICE_TYPE_PC); /** @var \Eccube\Entity\Block $Block */ $Block = $app['eccube.repository.block']->findOrCreate(null, $DeviceType); // Blockの登録 $Block->setName($this->blockName); $Block->setFileName($this->blockFileName); $Block->setDeletableFlg(Constant::DISABLED); $Block->setLogicFlg(1); $em->persist($Block); $em->flush($Block); // BlockPositionの登録 $blockPos = $em->getRepository('Eccube\\Entity\\BlockPosition')->findOneBy(array('page_id' => 1, 'target_id' => PageLayout::TARGET_ID_MAIN_BOTTOM), array('block_row' => 'DESC')); $BlockPosition = new BlockPosition(); // ブロックの順序を変更 if ($blockPos) { $blockRow = $blockPos->getBlockRow() + 1; $BlockPosition->setBlockRow($blockRow); } else { // 1番目にセット $BlockPosition->setBlockRow(1); } $PageLayout = $app['eccube.repository.page_layout']->find(1); $BlockPosition->setPageLayout($PageLayout); $BlockPosition->setPageId($PageLayout->getId()); $BlockPosition->setTargetId(PageLayout::TARGET_ID_MAIN_BOTTOM); $BlockPosition->setBlock($Block); $BlockPosition->setBlockId($Block->getId()); $BlockPosition->setAnywhere(Constant::ENABLED); $em->persist($BlockPosition); $em->flush($BlockPosition); $em->getConnection()->commit(); } catch (\Exception $e) { $em->getConnection()->rollback(); throw $e; } }