示例#1
0
 /**
  * Добавляет топик
  *
  * @param ModuleTopic_EntityTopic $oTopic Объект топика
  * @return ModuleTopic_EntityTopic|bool
  */
 public function AddTopic(ModuleTopic_EntityTopic $oTopic)
 {
     if (!$oTopic->getDatePublish()) {
         $oTopic->setDatePublish($oTopic->getDateAdd());
     }
     if ($sId = $this->oMapperTopic->AddTopic($oTopic)) {
         $oTopic->setId($sId);
         if ($oTopic->getPublish() and $oTopic->getTags()) {
             $aTags = explode(',', $oTopic->getTags());
             foreach ($aTags as $sTag) {
                 $oTag = Engine::GetEntity('Topic_TopicTag');
                 $oTag->setTopicId($oTopic->getId());
                 $oTag->setUserId($oTopic->getUserId());
                 $oTag->setBlogId($oTopic->getBlogId());
                 $oTag->setText($sTag);
                 $this->AddTopicTag($oTag);
             }
         }
         /**
          * Обновляем дополнительные поля
          * Здесь важный момент - перед сохранением топика всегда нужно вызывать валидацию полей $this->Property_ValidateEntityPropertiesCheck($oTopic);
          * т.к. она подготавливает данные полей для сохранений
          * Валидация вызывается автоматически при вызове $oTopic->_Validate();
          */
         $this->Property_UpdatePropertiesValue($oTopic->getPropertiesObject(), $oTopic);
         //чистим зависимые кеши
         $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('topic_new', "topic_update_user_{$oTopic->getUserId()}", "topic_new_blog_{$oTopic->getBlogId()}"));
         return $oTopic;
     }
     return false;
 }