/**
  * Updates the block, according the page and language with the new repeated status
  *
  * @param  array   $block
  * @param  int     $idLanguage
  * @param  int     $idPage
  * @return boolean
  */
 protected function updateBlock(array $block, $idLanguage, $idPage)
 {
     $block["LanguageId"] = $idLanguage;
     $block["PageId"] = $idPage;
     $className = $this->blockRepository->getRepositoryObjectClassName();
     $modelObject = new $className();
     $result = $this->blockRepository->setRepositoryObject($modelObject)->save($block);
     return $result;
 }
示例#2
0
 /**
  * Adds a new block to the Block table
  *
  * @param  array                        $values An array where keys are the BlockField definition and values are the values to add
  * @return boolean
  * @throws InvalidArgumentTypeException
  * @throws \Exception
  *
  * @api
  */
 protected function add(array $values)
 {
     $values = $this->dispatchBeforeOperationEvent('\\RedKiteLabs\\RedKiteCms\\RedKiteCmsBundle\\Core\\Event\\Content\\Block\\BeforeBlockAddingEvent', BlockEvents::BEFORE_ADD_BLOCK, $values, 'exception_block_adding_aborted');
     $this->validator->checkEmptyParams($values);
     $requiredParameters = array("PageId" => "", "LanguageId" => "", "SlotName" => "");
     $this->validator->checkRequiredParamsExists($requiredParameters, $values);
     // When the Content is null the dafault text is inserted
     if (!array_key_exists('Content', $values)) {
         $defaults = $this->getDefaultValue();
         if (!is_array($defaults)) {
             $exception = array('message' => 'exception_method_returns_invalid_value', 'parameters' => array('%className%' => get_class($this)));
             throw new General\InvalidArgumentTypeException(json_encode($exception));
         }
         $mergedValues = array_merge($values, $defaults);
         $availableOptions = array('Content' => '', 'InternalJavascript' => '', 'ExternalJavascript' => '', 'InternalStylesheet' => '', 'ExternalStylesheet' => '');
         $this->validator->checkOnceValidParamExists($availableOptions, $mergedValues);
         $values = $mergedValues;
     }
     try {
         $this->blockRepository->startTransaction();
         // Saves the content
         if (null === $this->alBlock) {
             $className = $this->blockRepository->getRepositoryObjectClassName();
             $this->alBlock = new $className();
         }
         $values = $this->checkCreatedAt($values);
         $result = $this->blockRepository->setRepositoryObject($this->alBlock)->save($values);
         if (false !== $result) {
             $this->blockRepository->commit();
             $this->eventsHandler->createEvent(BlockEvents::AFTER_ADD_BLOCK, '\\RedKiteLabs\\RedKiteCms\\RedKiteCmsBundle\\Core\\Event\\Content\\Block\\AfterBlockAddedEvent', array($this))->dispatch();
             return $result;
         }
         $this->blockRepository->rollBack();
         return $result;
     } catch (\Exception $e) {
         if (isset($this->blockRepository) && $this->blockRepository !== null) {
             $this->blockRepository->rollBack();
         }
         throw $e;
     }
 }