Exemple #1
0
 /**
  * Method to delete the KunenaForumTopic object from the database.
  *
  * @param bool $recount
  *
  * @return bool	True on success.
  */
 public function delete($recount = true)
 {
     if (!$this->exists()) {
         return true;
     }
     if (!parent::delete()) {
         return false;
     }
     // Clear authentication cache
     $this->_authfcache = $this->_authccache = $this->_authcache = array();
     // NOTE: shadow topic doesn't exist, DO NOT DELETE OR CHANGE ANY EXTERNAL INFORMATION
     if ($this->moved_id == 0) {
         $db = JFactory::getDBO();
         // Delete user topics
         $queries[] = "DELETE FROM #__kunena_user_topics WHERE topic_id={$db->quote($this->id)}";
         // Delete user read
         $queries[] = "DELETE FROM #__kunena_user_read WHERE topic_id={$db->quote($this->id)}";
         // Delete poll (users)
         $queries[] = "DELETE FROM #__kunena_polls_users WHERE pollid={$db->quote($this->poll_id)}";
         // Delete poll (options)
         $queries[] = "DELETE FROM #__kunena_polls_options WHERE pollid={$db->quote($this->poll_id)}";
         // Delete poll
         $queries[] = "DELETE FROM #__kunena_polls WHERE id={$db->quote($this->poll_id)}";
         // Delete thank yous
         $queries[] = "DELETE t FROM #__kunena_thankyou AS t INNER JOIN #__kunena_messages AS m ON m.id=t.postid WHERE m.thread={$db->quote($this->id)}";
         // Delete all messages
         $queries[] = "DELETE m, t FROM #__kunena_messages AS m INNER JOIN #__kunena_messages_text AS t ON m.id=t.mesid WHERE m.thread={$db->quote($this->id)}";
         foreach ($queries as $query) {
             $db->setQuery($query);
             $db->query();
             KunenaError::checkDatabaseError();
         }
         // FIXME: add recount statistics
         if ($recount) {
             KunenaUserHelper::recount();
             KunenaForumCategoryHelper::recount();
             KunenaAttachmentHelper::cleanup();
             KunenaForumMessageThankyouHelper::recount();
         }
     }
     return true;
 }
Exemple #2
0
 /**
  * Purge old topics from this category. Removes topics from the database.
  *
  * @param       $time
  * @param array $params
  * @param int   $limit
  *
  * @return int	Number of purged topics.
  */
 public function purge($time, $params = array(), $limit = 1000)
 {
     // FIXME: why time isn't used?
     if (!$this->exists()) {
         return 0;
     }
     $where = isset($params['where']) ? (string) $params['where'] : '';
     $db = JFactory::getDBO();
     $query = "SELECT id FROM #__kunena_topics AS tt WHERE tt.category_id={$this->id} {$where} ORDER BY tt.last_post_time ASC";
     $db->setQuery($query, 0, $limit);
     $ids = $db->loadColumn();
     KunenaError::checkDatabaseError();
     if (empty($ids)) {
         return 0;
     }
     $count = KunenaForumTopicHelper::delete($ids);
     KunenaUserHelper::recount();
     KunenaForumCategoryHelper::recount($this->id);
     KunenaAttachmentHelper::cleanup();
     return $count;
 }