/** * 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; }
/** * 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; }