function bb_get_forums_hierarchical($root = 0, $depth = 0, $leaves = false, $_recursed = false) { static $_leaves = false; if (!$_recursed) { $_leaves = false; } $root = (int) $root; if (false === $_leaves) { $_leaves = $leaves ? $leaves : bb_get_forums(); } if (!$_leaves) { return false; } $branch = array(); reset($_leaves); while (list($l, $leaf) = each($_leaves)) { if ($root == $leaf->forum_parent) { $new_root = (int) $leaf->forum_id; unset($_leaves[$l]); $branch[$new_root] = 1 == $depth ? true : bb_get_forums_hierarchical($new_root, $depth - 1, false, true); reset($_leaves); } } if (!$_recursed) { if (!$root) { foreach ($_leaves as $leaf) { // Attach orphans to root $branch[$leaf->forum_id] = true; } } $_leaves = false; return empty($branch) ? false : $branch; } return $branch ? $branch : true; }
/** * Reports whether bbPress is installed by getting forums. * * @return boolean True if there are forums, otherwise false. */ function bb_is_installed() { // Maybe grab all the forums and cache them global $bbdb; $bbdb->suppress_errors(); $forums = (array) @bb_get_forums(); $bbdb->suppress_errors(false); if (!$forums) { return false; } return true; }
<?php require './bb-load.php'; bb_repermalink(); $bb_db_override = false; do_action('bb_index.php_pre_db'); if (isset($_GET['new']) && '1' == $_GET['new']) { $forums = false; } elseif (!$bb_db_override) { $forums = bb_get_forums(); // Comment to hide forums if ($topics = get_latest_topics(false, $page)) { bb_cache_last_posts($topics); } if ($super_stickies = get_sticky_topics()) { bb_cache_last_posts($super_stickies); } } bb_load_template('front-page.php', array('bb_db_override', 'super_stickies'));
switch ($_POST['action']) { case 'add': if (!isset($_POST['forum_name']) || '' === $_POST['forum_name']) { bb_die(__('Bad forum name. Go back and try again.')); } bb_check_admin_referer('add-forum'); if (false !== bb_new_forum($_POST)) { bb_safe_redirect($sent_from); exit; } else { bb_die(__('The forum was not added')); } break; case 'update': bb_check_admin_referer('update-forum'); if (!($forums = bb_get_forums())) { bb_die(__('No forums to update!')); } if ((int) $_POST['forum_id'] && isset($_POST['forum_name']) && '' !== $_POST['forum_name']) { bb_update_forum($_POST); } foreach (array('action', 'id') as $arg) { $sent_from = remove_query_arg($arg, $sent_from); } bb_safe_redirect(add_query_arg('message', 'updated', $sent_from)); exit; break; case 'delete': bb_check_admin_referer('delete-forums'); $forum_id = (int) $_POST['forum_id']; $move_topics_forum = (int) $_POST['move_topics_forum'];
/** * Returns a numerical count of topics * * @since 1.0 * @return integer|object The number of topics when successfully executed or an IXR_Error object on failure * @param array $args Arguments passed by the XML-RPC call * @param string $args[0] The username for authentication * @param string $args[1] The password for authentication * @param integer|string $args[2] The forum id or slug (optional) * * XML-RPC request to get a count of all topics in the bbPress instance * <methodCall> * <methodName>bb.getTopicCount</methodName> * <params> * <param><value><string>joeblow</string></value></param> * <param><value><string>123password</string></value></param> * </params> * </methodCall> * * XML-RPC request to get a count of all topics in the forum with id number 34 * <methodCall> * <methodName>bb.getTopicCount</methodName> * <params> * <param><value><string>joeblow</string></value></param> * <param><value><string>123password</string></value></param> * <param><value><int>34</int></value></param> * </params> * </methodCall> * * XML-RPC request to get a count of all topics in the forum with slug "first-forum" * <methodCall> * <methodName>bb.getTopicCount</methodName> * <params> * <param><value><string>joeblow</string></value></param> * <param><value><string>123password</string></value></param> * <param><value><string>first-forum</string></value></param> * </params> * </methodCall> */ function bb_getTopicCount($args) { do_action('bb_xmlrpc_call', 'bb.getTopicCount'); // Escape args $this->escape($args); // Get the login credentials $username = $args[0]; $password = (string) $args[1]; // Check the user is valid if ($this->auth_readonly) { $user = $this->authenticate($username, $password); } do_action('bb_xmlrpc_call_authenticated', 'bb.getTopicCount'); // If an error was raised by authentication or by an action then return it if ($this->error) { return $this->error; } // Can be numeric id or slug if (isset($args[2]) && ($forum_id = $args[2])) { // Check for bad data if (!is_string($forum_id) && !is_integer($forum_id)) { $this->error = new IXR_Error(400, __('The forum id is invalid.')); return $this->error; } // Check the requested forum exists if (!($forum = bb_get_forum($forum_id))) { $this->error = new IXR_Error(400, __('The forum does not exist.')); return $this->error; } // OK, let's trust the count in the forum table $count = (int) $forum->topics; } else { // Get all forums $forums = bb_get_forums(); // Return an error when no forums exist if (!$forums) { $this->error = new IXR_Error(400, __('No forums found.')); return $this->error; } // Count the topics $count = 0; foreach ($forums as $forum) { $count += (int) $forum->topics; } } do_action('bb_xmlrpc_call_return', 'bb.getTopicCount'); // Return the count of topics return $count; }
function get_forums() { bb_log_deprecated('class::function', __CLASS__ . '::' . __FUNCTION__, 'bb_get_forums'); return bb_get_forums(); }
function &bb_forums($args = '') { global $bb_forums_loop; $default_type = 'flat'; if (is_numeric($args)) { $args = array('child_of' => $args); } elseif (func_num_args() > 1) { // bb_forums( 'ul', $args ); Deprecated $default_type = $args; $args = func_get_arg(1); } elseif ($args && is_string($args) && false === strpos($args, '=')) { $args = array('type' => $args); } // hierarchical not used here. Sent to bb_get_forums for proper ordering. $args = wp_parse_args($args, array('hierarchical' => true, 'type' => $default_type, 'walker' => 'BB_Walker_Blank')); $levels = array('', ''); if (in_array($args['type'], array('list', 'ul'))) { $levels = array('<ul>', '</ul>'); } $forums = bb_get_forums($args); if (!class_exists($args['walker'])) { $args['walker'] = 'BB_Walker_Blank'; } if ($bb_forums_loop = BB_Loop::start($forums, $args['walker'])) { $bb_forums_loop->preserve(array('forum', 'forum_id')); $bb_forums_loop->walker->db_fields = array('id' => 'forum_id', 'parent' => 'forum_parent'); list($bb_forums_loop->walker->start_lvl, $bb_forums_loop->walker->end_lvl) = $levels; return $bb_forums_loop->elements; } $false = false; return $false; }
function bb_export() { global $bb; define('BB_EXPORTING', true); do_action('bb_pre_export'); $bb->use_cache = false; // Turn off hard cache $bb->page_topics = 100; echo "<forums-data version='0.75'>\n"; if (BB_EXPORT_LEVEL & BB_EXPORT_USERS) { $page = 1; while (($users = bb_user_search(array('page' => $page++))) && !is_nxt_error($users)) { foreach ($users as $user) { echo bb_export_user($user->ID); } } unset($users, $user, $page); } if (BB_EXPORT_LEVEL & BB_EXPORT_FORUMS) { $forums = bb_get_forums(); foreach ($forums as $forum) { echo bb_export_forum($forum->forum_id); } unset($forums, $forum); } if (BB_EXPORT_LEVEL & BB_EXPORT_TOPICS) { $page = 1; while ($topics = get_latest_topics(0, $page++)) { foreach ($topics as $topic) { echo bb_export_topic($topic->topic_id); } } unset($topics, $topic, $page); } do_action('bb_export'); echo '</forums-data>'; }
$position = 1; } $x = new WP_Ajax_Response(array('what' => 'forum', 'id' => $forum_id, 'data' => $data, 'position' => $position, 'supplemental' => array('name' => $forum->forum_name))); $x->send(); break; case 'order-forums': if (!bb_current_user_can('manage_forums')) { die('-1'); } bb_check_ajax_referer($action); if (!is_array($_POST['order'])) { die('0'); } global $bbdb; $forums = array(); bb_get_forums(); // cache foreach ($_POST['order'] as $pos => $forum_id) { $forum = $bbdb->escape_deep(get_object_vars(bb_get_forum($forum_id))); $forum['forum_order'] = $pos; $forums[(int) $forum_id] = $forum; } foreach ($_POST['root'] as $root => $ids) { foreach ($ids as $forum_id) { $forums[(int) $forum_id]['forum_parent'] = (int) $root; } } foreach ($forums as $forum) { bb_update_forum($forum); } die('1');