/**
  * Deletes a site, makes sute a default site is selected
  * @param Site $site The site to save
  * @return null
  */
 protected function deleteData($site)
 {
     $site = parent::deleteData($site);
     if (!$site->isDefault) {
         return $site;
     }
     $query = $this->createQuery(0);
     $newDefaultSite = $query->queryFirst();
     if ($newDefaultSite) {
         $this->setDefaultSite($newDefaultSite);
     }
     return $site;
 }
 /**
  * Deletes a topic
  * @param integer|joppa\forum\model\data\ForumTopicData $data Id of the topic or the topic
  * @return joppa\forum\model\data\ForumTopicData The deleted topic
  */
 protected function deleteData($data)
 {
     $data = parent::deleteData($data);
     $boardModel = $this->getModel(ForumBoardModel::NAME);
     $board = $boardModel->createData(false);
     $board->id = $data->board->id;
     $board->numTopics = $data->board->numTopics - 1;
     $board->lastTopic = $this->getLastTopicIdForBoard($data->board->id);
     $boardModel->save($board);
     return $data;
 }
 /**
  * Deletes a post
  * @param integer|joppa\forum\model\data\ForumPostData $data Id of the post to delete or the post itself
  * @return joppa\forum\model\data\ForumPostData The deleted post
  */
 protected function deleteData($data)
 {
     $data = parent::deleteData($data);
     // substract a post from the author's total posts
     if ($data->author) {
         $profileModel = $this->getModel(ForumProfileModel::NAME);
         $profileModel->removePost($data->author);
     }
     // update the number of posts and the last post of the topic
     $topicModel = $this->getModel(ForumTopicModel::NAME);
     $topic = $topicModel->createData(false);
     $topic->id = $data->topic->id;
     $topic->numPosts = $data->topic->numPosts - 1;
     $topic->lastPost = $this->getLastPostIdForTopic($topic->id);
     if (!$topic->lastPost) {
         $topicModel->delete($topic);
         return $data;
     }
     $topicModel->save($topic);
     // update the number of posts and the last post of the board
     $boardModel = $this->getModel(ForumBoardModel::NAME);
     $query = $boardModel->createQuery();
     $query->setFields('{id}, {numPosts}');
     $query->addCondition('{id} = %1%', $data->topic->board);
     $board = $query->queryFirst();
     $board->numPosts--;
     $board->lastTopic = $topicModel->getLastTopicIdForBoard($board->id);
     $boardModel->save($board);
     // resync the topics post numbers
     $query = $this->createQuery();
     $query->setFields('{id}, {topicPostNumber}');
     $query->addCondition('{topicPostNumber} > %1% and {topic} = %2%', $data->topicPostNumber, $data->topic->id);
     $query->addOrderBy('{topicPostNumber}');
     $topicPostNumber = $data->topicPostNumber;
     $posts = $query->query();
     foreach ($posts as $post) {
         $post->topicPostNumber = $topicPostNumber;
         $this->save($post, 'topicPostNumber');
         $topicPostNumber++;
     }
     return $data;
 }