/**
  * Adds the page attributes when a new page is added, for each language of the site
  *
  * @param  BeforeEditSeoCommitEvent $event
  * @return boolean
  * @throws InvalidArgumentException
  * @throws \Exception
  *
  * @api
  */
 public function onBeforeEditSeoCommit(BeforeEditSeoCommitEvent $event)
 {
     if ($event->isAborted()) {
         return;
     }
     $values = $event->getValues();
     if (!is_array($values)) {
         throw new InvalidArgumentException('exception_invalid_value_array_required');
     }
     if (array_key_exists("oldPermalink", $values)) {
         $result = true;
         $alBlocks = $this->blockRepository->fromContent($values["oldPermalink"]);
         if (count($alBlocks) > 0) {
             try {
                 $this->blockRepository->startTransaction();
                 foreach ($alBlocks as $alBlock) {
                     $htmlContent = preg_replace('/' . $values["oldPermalink"] . '/s', $values["Permalink"], $alBlock->getContent());
                     $blockManager = $this->blocksFactory->createBlockManager($alBlock);
                     $value = array('Content' => $htmlContent);
                     $result = $blockManager->save($value);
                     if (!$result) {
                         break;
                     }
                 }
                 if (false !== $result) {
                     $this->blockRepository->commit();
                     return;
                 }
                 $this->blockRepository->rollBack();
                 $event->abort();
             } catch (\Exception $e) {
                 $event->abort();
                 if (isset($this->blockRepository) && $this->blockRepository !== null) {
                     $this->blockRepository->rollBack();
                 }
                 throw $e;
             }
         }
     }
 }