Beispiel #1
0
 public function it_can_update_a_block(Page $page, PageBlock $block, \PDOStatement $statement)
 {
     $uuid = Uuid::uuid4();
     $page->getUuid()->willReturn($uuid);
     $page->metaDataSetUpdateTimestamp(new Argument\Token\TypeToken(\DateTimeImmutable::class))->shouldBeCalled();
     $blockUuid = Uuid::uuid4();
     $blockSortOrder = 42;
     $blockStatus = PageStatusValue::get('concept');
     $block->getUuid()->willReturn($blockUuid);
     $block->getPage()->willReturn($page);
     $block->getParameters()->willReturn([]);
     $block->getSortOrder()->willReturn($blockSortOrder);
     $block->getStatus()->willReturn($blockStatus);
     $block->metaDataSetUpdateTimestamp(new Argument\Token\TypeToken(\DateTimeImmutable::class))->shouldBeCalled();
     $this->pdo->beginTransaction()->shouldBeCalled();
     $this->pdo->prepare(new Argument\Token\StringContainsToken('UPDATE page_blocks'))->willReturn($statement);
     $statement->execute(['page_block_uuid' => $blockUuid->getBytes(), 'parameters' => json_encode([]), 'sort_order' => $blockSortOrder, 'status' => $blockStatus->toString()])->shouldBeCalled();
     $statement->rowCount()->willReturn(1);
     $this->objectRepository->update(Page::TYPE, $uuid)->shouldBeCalled();
     $this->objectRepository->update(PageBlock::TYPE, $blockUuid)->shouldBeCalled();
     $this->pdo->commit()->shouldBeCalled();
     $this->updateBlockForPage($block, $page);
 }
Beispiel #2
0
 public function updateBlockForPage(PageBlock $block, Page $page)
 {
     if (!$page->getUuid()->equals($block->getPage()->getUuid())) {
         throw new \OutOfBoundsException('PageBlock must belong to page to be added to it.');
     }
     $this->pdo->beginTransaction();
     try {
         $query = $this->executeSql('
             UPDATE page_blocks
                SET parameters = :parameters,
                    sort_order = :sort_order,
                    status = :status
              WHERE page_block_uuid = :page_block_uuid
         ', ['page_block_uuid' => $block->getUuid()->getBytes(), 'parameters' => json_encode($block->getParameters()), 'sort_order' => $block->getSortOrder(), 'status' => $block->getStatus()->toString()]);
         // When at least one of the fields changes, the rowCount will be 1 and an update occurred
         if ($query->rowCount() === 1) {
             $this->objectRepository->update(Page::TYPE, $page->getUuid());
             $page->metaDataSetUpdateTimestamp(new \DateTimeImmutable());
             $this->objectRepository->update(PageBlock::TYPE, $block->getUuid());
             $block->metaDataSetUpdateTimestamp(new \DateTimeImmutable());
         }
         $this->pdo->commit();
     } catch (\Throwable $exception) {
         $this->pdo->rollBack();
         throw $exception;
     }
 }