Example #1
0
 /**
  * Delete this category and all related information from the database.
  *
  * @return bool	True on success
  */
 public function delete()
 {
     if (!$this->exists()) {
         return true;
     }
     if (!parent::delete()) {
         return false;
     }
     $access = KunenaAccess::getInstance();
     $access->clearCache();
     $db = JFactory::getDBO();
     $queries[] = "DELETE FROM #__kunena_aliases WHERE type='catid' AND item={$db->quote($this->id)}";
     // Delete user topics
     $queries[] = "DELETE FROM #__kunena_user_topics WHERE category_id={$db->quote($this->id)}";
     // Delete user categories
     $queries[] = "DELETE FROM #__kunena_user_categories WHERE category_id={$db->quote($this->id)}";
     // Delete user read
     $queries[] = "DELETE FROM #__kunena_user_read WHERE category_id={$db->quote($this->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.catid={$db->quote($this->id)}";
     // Delete poll users
     $queries[] = "DELETE p FROM #__kunena_polls_users AS p INNER JOIN #__kunena_topics AS tt ON tt.poll_id=p.pollid WHERE tt.category_id={$db->quote($this->id)} AND tt.moved_id=0";
     // Delete poll options
     $queries[] = "DELETE p FROM #__kunena_polls_options AS p INNER JOIN #__kunena_topics AS tt ON tt.poll_id=p.pollid WHERE tt.category_id={$db->quote($this->id)} AND tt.moved_id=0";
     // Delete polls
     $queries[] = "DELETE p FROM #__kunena_polls AS p INNER JOIN #__kunena_topics AS tt ON tt.poll_id=p.id WHERE tt.category_id={$db->quote($this->id)} AND tt.moved_id=0";
     // Delete messages
     $queries[] = "DELETE m, t FROM #__kunena_messages AS m INNER JOIN #__kunena_messages_text AS t ON m.id=t.mesid WHERE m.catid={$db->quote($this->id)}";
     // TODO: delete attachments
     // TODO: delete keywords
     // Delete topics
     $queries[] = "DELETE FROM #__kunena_topics WHERE category_id={$db->quote($this->id)}";
     foreach ($queries as $query) {
         $db->setQuery($query);
         $db->query();
         KunenaError::checkDatabaseError();
     }
     KunenaUserHelper::recount();
     KunenaForumMessageThankyouHelper::recount();
     $this->id = null;
     KunenaForumCategoryHelper::register($this);
     return true;
 }