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;
}
Example #2
0
/**
 * 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;
}
Example #3
0
<?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'));
Example #4
0
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'];
Example #5
0
 /**
  * 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;
}
Example #8
0
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>';
}
Example #9
0
         $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');