Skip to:
Content
Pages
Categories
Search
Top
Bottom

Search Results for '+.+default+.+'

Viewing 25 results - 5,701 through 5,725 (of 6,780 total)
  • Author
    Search Results
  • #78136
    Olaf Lederer
    Participant

    By default mage tags are not allowed too.

    create you own plugin and use this code

    function allow_img_tag($tags) {
    $tags['img'] = array('src' => array(), 'title' => array(), 'alt' => array());
    return $tags;
    }
    add_filter('bb_allowed_tags', 'allow_img_tag');

    You can the same kind of function for your header elements

    #77788
    chandersbs
    Member

    I really love bbPress, but still wished some features existed by default. I know it’s doable via plugins, but default features are more cool, you can always turn it off. I really dislike the fact that some of the solutions I have seen on this forum, are related to “integrate your forum with WordPress, and use this plugin and it will work”, no, I don’t like that. bbPress should be able to do stuff on its own, without WordPress.

    I don’t want to install WordPress for the sake of making some things work. I have been a WordPress user for so many years already, but still I refuse to do that. I have managed to convert my forum, which was originally SMF into bbPress (SMF > phpBB > bbPress), that was a lot of work, but I’m really happy I did that.

    bbPress is by default very EMPTY, very very very empty. I was not used to a forum, with so less features and options. My users didn’t like it. I managed to add a lot of features via plugins. Now my users are a bit happy, I’m also very happy.

    The best part I love so far is, that making changes not always is so difficult compared to SMF or phpBB. phpBB is the last forum software on this planet I’d want to use, OMG so difficult to make changes. SMF is one of the best out there, but has some limits due to their copyright system.

    Some things I’d really love to see happening anytime very soon:

    1. A codex page, with detailed instruction about the codes, just like its big brother WordPress has, at least a start, so we, the webmasters, can do more cool stuff

    2. More features by default, such as:

    a. Private message

    b. Avatar upload

    c. Memberlist

    d. Quote option in topics

    e. Smilies

    These are some very basic options.

    I’m sure bbPress will be one of the most professional forum software out there one day, it’s not so far yet, but I see it happen.

    That’s why I’m a proud user of this software.

    #77061

    In reply to: bbpress and memcache?

    Sam Bauers
    Participant

    We don’t use memcache to store user sessions, user sessions are stored in the browser cookie.

    There is a memcache capable object cache though which is built in to bbPress via BackPress. To enable it (with default memcache settings) all you need to do is add this to your bb-config.php:

    define( 'BB_OBJECT_CACHE_TYPE', 'memcached' );

    Note that this will not work if you are using the memcache object cache in WordPress, and you have WordPress deep integrated into bbPress.

    #78154

    In reply to: Posting error

    parity
    Member

    Some more info: I realized the problem wasn’t with functions.bb-pluggable.php but with bb-post.php. I recently had to fix something in bb-post.php to get rid of a different error message about an undefined call.

    Here are the contents of both files.

    bb-post.php:

    <?php

    require('./bb-load.php');

    bb_auth(‘logged_in’);

    if (

    $throttle_time = bb_get_option( ‘throttle_time’ ) )

    if ( isset

    ($bb_current_user->data->last_posted) && time() <

    $bb_current_user->data->last_posted + $throttle_time && !

    bb_current_user_can(‘throttle’) )

    bb_die(__(‘Slow

    down; you move too fast.’));

    if ( !$post_content = trim($_POST

    ) )

    bb_die(__(‘You need to actually submit

    some content!’));

    if ( isset($_POST) && $forum_id = (int)

    $_POST ) {

    if ( !bb_current_user_can(‘write_posts’) )

    bb_die(__(‘You are not allowed to post. Are you

    logged in?’));

    if ( !bb_current_user_can( ‘write_topic’,

    $forum_id ) )

    bb_die(__(‘You are not allowed

    to write new topics.’));

    bb_check_admin_referer( ‘create-topic’ );

    $topic = trim( $_POST );

    $tags = trim( $_POST );

    if (” == $topic)

    bb_die(__(‘Please enter a topic

    title’));

    $topic_id = bb_new_topic( $topic, $forum_id, $tags );

    }

    elseif ( isset($_POST ) ) {

    $topic_id = (int)

    $_POST;

    bb_check_admin_referer( ‘create-post_’ .

    $topic_id );

    }

    if ( !bb_current_user_can( ‘write_post’, $topic_id ) )

    bb_die(__(‘You are not allowed to post. Are you logged in?’));

    if ( !

    topic_is_open( $topic_id ) )

    bb_die(__(‘This topic has been

    closed’));

    $post_id = bb_new_post( $topic_id, $_POST

    );

    $tags = trim( $_POST );

    bb_add_topic_tags(

    $topic_id, $tags );

    $link = get_post_link($post_id);

    $topic =

    get_topic( $topic_id, false );

    if ( $topic->topic_posts )

    $link =

    add_query_arg( ‘replies’, $topic->topic_posts, $link );

    // This

    action used to be bb_post.php, changed to avoid conflict in

    bb_load_template()

    do_action( ‘bb-post.php’, $post_id );

    if

    ($post_id)

    wp_redirect( $link );

    else

    wp_redirect(

    bb_get_uri(null, null, BB_URI_CONTEXT_HEADER) );

    exit;

    ?>

    function.bb-pluggable.php

    <?php

    if ( !function_exists( ‘bb_auth’ ) ) :

    function bb_auth( $scheme = ‘auth’ ) { // Checks if a user has a valid cookie, if not redirects them to the main page

    if ( !bb_validate_auth_cookie( ”, $scheme ) ) {

    nocache_headers();

    if ( ‘auth’ === $scheme && !bb_is_user_logged_in() ) {

    wp_redirect( bb_get_uri( ‘bb-login.php’, array( ‘re’ => $_SERVER ), BB_URI_CONTEXT_HEADER + BB_URI_CONTEXT_BB_USER_FORMS ) );

    } else {

    wp_redirect( bb_get_uri( null, null, BB_URI_CONTEXT_HEADER ) );

    }

    exit;

    }

    }

    endif;

    // $already_md5 variable is deprecated

    if ( !function_exists(‘bb_check_login’) ) :

    function bb_check_login($user, $pass, $already_md5 = false) {

    global $wp_users_object;

    if ( !bb_get_option( ’email_login’ ) || false === strpos( $user, ‘@’ ) ) { // user_login

    $user = $wp_users_object->get_user( $user, array( ‘by’ => ‘login’ ) );

    } else { // maybe an email

    $email_user = $wp_users_object->get_user( $user, array( ‘by’ => ’email’ ) );

    $user = $wp_users_object->get_user( $user, array( ‘by’ => ‘login’ ) );

    // 9 cases. each can be FALSE, USER, or WP_ERROR

    if (

    ( !$email_user && $user ) // FALSE && USER, FALSE && WP_ERROR

    ||

    ( is_wp_error( $email_user ) && $user && !is_wp_error( $user ) ) // WP_ERROR && USER

    ) {

    // nope: it really was a user_login

    // [sic]: use $user

    } elseif (

    ( $email_user && !$user ) // USER && FALSE, WP_ERROR && FALSE

    ||

    ( $email_user && !is_wp_error( $email_user ) && is_wp_error( $user ) ) // USER && WP_ERROR

    ) {

    // yup: it was an email

    $user =& $email_user;

    } elseif ( !$email_user && !$user ) { // FALSE && FALSE

    // Doesn’t matter what it was: neither worked

    return false;

    } elseif ( is_wp_error( $email_user ) && is_wp_error( $user ) ) { // WP_ERROR && WP_ERROR

    // This can’t happen. If it does, let’s use the email error. It’s probably “multiple matches”, so maybe logging in with a username will work

    $user =& $email_user;

    } elseif ( $email_user && $user ) { // USER && USER

    // both are user objects

    if ( $email_user->ID == $user->ID ); // [sic]: they are the same, use $user

    elseif ( bb_check_password($pass, $user->user_pass, $user->ID) ); // [sic]: use $user

    elseif ( bb_check_password($pass, $email_user->user_pass, $email_user->ID) )

    $user =& $email_user;

    } else { // This can’t happen, that’s all 9 cases.

    // [sic]: use $user

    }

    }

    if ( !$user )

    return false;

    if ( is_wp_error($user) )

    return $user;

    if ( !bb_check_password($pass, $user->user_pass, $user->ID) )

    return false;

    // User is logging in for the first time, update their user_status to normal

    if ( 1 == $user->user_status )

    bb_update_user_status( $user->ID, 0 );

    return $user;

    }

    endif;

    if ( !function_exists(‘bb_get_current_user’) ) :

    function bb_get_current_user() {

    global $wp_auth_object;

    return $wp_auth_object->get_current_user();

    }

    endif;

    if ( !function_exists(‘bb_set_current_user’) ) :

    function bb_set_current_user( $id ) {

    global $wp_auth_object;

    $current_user = $wp_auth_object->set_current_user( $id );

    do_action(‘bb_set_current_user’, isset($current_user->ID) ? $current_user->ID : 0 );

    return $current_user;

    }

    endif;

    if ( !function_exists(‘bb_current_user’) ) :

    //This is only used at initialization. Use bb_get_current_user_info() (or $bb_current_user global if really needed) to grab user info.

    function bb_current_user() {

    if (BB_INSTALLING)

    return false;

    return bb_get_current_user();

    }

    endif;

    if ( !function_exists(‘bb_is_user_authorized’) ) :

    function bb_is_user_authorized() {

    return bb_is_user_logged_in();

    }

    endif;

    if ( !function_exists(‘bb_is_user_logged_in’) ) :

    function bb_is_user_logged_in() {

    $current_user = bb_get_current_user();

    if ( empty($current_user) )

    return false;

    return true;

    }

    endif;

    if ( !function_exists(‘bb_login’) ) :

    function bb_login( $login, $password, $remember = false ) {

    $user = bb_check_login( $login, $password );

    if ( $user && !is_wp_error( $user ) ) {

    bb_set_auth_cookie( $user->ID, $remember );

    do_action(‘bb_user_login’, (int) $user->ID );

    }

    return $user;

    }

    endif;

    if ( !function_exists(‘bb_logout’) ) :

    function bb_logout() {

    bb_clear_auth_cookie();

    do_action(‘bb_user_logout’);

    }

    endif;

    if ( !function_exists( ‘bb_validate_auth_cookie’ ) ) :

    function bb_validate_auth_cookie( $cookie = ”, $scheme = ‘auth’ ) {

    global $wp_auth_object;

    if ( empty($cookie) && $scheme == ‘auth’ ) {

    if ( is_ssl() ) {

    $scheme = ‘secure_auth’;

    } else {

    $scheme = ‘auth’;

    }

    }

    return $wp_auth_object->validate_auth_cookie( $cookie, $scheme );

    }

    endif;

    if ( !function_exists( ‘bb_set_auth_cookie’ ) ) :

    function bb_set_auth_cookie( $user_id, $remember = false, $schemes = false ) {

    global $wp_auth_object;

    if ( $remember ) {

    $expiration = $expire = time() + 1209600;

    } else {

    $expiration = time() + 172800;

    $expire = 0;

    }

    if ( true === $schemes ) {

    $schemes = array( ‘secure_auth’, ‘logged_in’ );

    } elseif ( !is_array( $schemes ) ) {

    $schemes = array();

    if ( force_ssl_login() || force_ssl_admin() ) {

    $schemes[] = ‘secure_auth’;

    }

    if ( !( force_ssl_login() && force_ssl_admin() ) ) {

    $schemes[] = ‘auth’;

    }

    $schemes[] = ‘logged_in’;

    }

    $schemes = array_unique( $schemes );

    foreach ( $schemes as $scheme ) {

    $wp_auth_object->set_auth_cookie( $user_id, $expiration, $expire, $scheme );

    }

    }

    endif;

    if ( !function_exists(‘bb_clear_auth_cookie’) ) :

    function bb_clear_auth_cookie() {

    global $bb, $wp_auth_object;

    $wp_auth_object->clear_auth_cookie();

    // Old cookies

    setcookie($bb->authcookie, ‘ ‘, time() – 31536000, $bb->cookiepath, $bb->cookiedomain);

    setcookie($bb->authcookie, ‘ ‘, time() – 31536000, $bb->sitecookiepath, $bb->cookiedomain);

    // Even older cookies

    setcookie($bb->usercookie, ‘ ‘, time() – 31536000, $bb->cookiepath, $bb->cookiedomain);

    setcookie($bb->usercookie, ‘ ‘, time() – 31536000, $bb->sitecookiepath, $bb->cookiedomain);

    setcookie($bb->passcookie, ‘ ‘, time() – 31536000, $bb->cookiepath, $bb->cookiedomain);

    setcookie($bb->passcookie, ‘ ‘, time() – 31536000, $bb->sitecookiepath, $bb->cookiedomain);

    }

    endif;

    if ( !function_exists(‘wp_redirect’) ) : // [WP11537]

    /**

    * Redirects to another page, with a workaround for the IIS Set-Cookie bug.

    *

    * @link http://support.microsoft.com/kb/q176113/

    * @since 1.5.1

    * @uses apply_filters() Calls ‘wp_redirect’ hook on $location and $status.

    *

    * @param string $location The path to redirect to

    * @param int $status Status code to use

    * @return bool False if $location is not set

    */

    function wp_redirect($location, $status = 302) {

    global $is_IIS;

    $location = apply_filters(‘wp_redirect’, $location, $status);

    $status = apply_filters(‘wp_redirect_status’, $status, $location);

    if ( !$location ) // allows the wp_redirect filter to cancel a redirect

    return false;

    $location = wp_sanitize_redirect($location);

    if ( $is_IIS ) {

    header(“Refresh: 0;url=$location”);

    } else {

    if ( php_sapi_name() != ‘cgi-fcgi’ )

    status_header($status); // This causes problems on IIS and some FastCGI setups

    header(“Location: $location”);

    }

    }

    endif;

    if ( !function_exists(‘wp_sanitize_redirect’) ) : // [WP11537]

    /**

    * Sanitizes a URL for use in a redirect.

    *

    * @since 2.3

    *

    * @return string redirect-sanitized URL

    **/

    function wp_sanitize_redirect($location) {

    $location = preg_replace(‘|[^a-z0-9-~+_.?#=&;,/:%!]|i’, ”, $location);

    $location = wp_kses_no_null($location);

    // remove %0d and %0a from location

    $strip = array(‘%0d’, ‘%0a’);

    $found = true;

    while($found) {

    $found = false;

    foreach( (array) $strip as $val ) {

    while(strpos($location, $val) !== false) {

    $found = true;

    $location = str_replace($val, ”, $location);

    }

    }

    }

    return $location;

    }

    endif;

    if ( !function_exists(‘bb_safe_redirect’) ) : // based on [WP6145] (home is different)

    /**

    * Performs a safe (local) redirect, using wp_redirect().

    *

    * Checks whether the $location is using an allowed host, if it has an absolute

    * path. A plugin can therefore set or remove allowed host(s) to or from the

    * list.

    *

    * If the host is not allowed, then the redirect is to the site url

    * instead. This prevents malicious redirects which redirect to another host,

    * but only used in a few places.

    *

    * @uses apply_filters() Calls ‘allowed_redirect_hosts’ on an array containing

    * bbPress host string and $location host string.

    *

    * @return void Does not return anything

    **/

    function bb_safe_redirect( $location, $status = 302 ) {

    // Need to look at the URL the way it will end up in wp_redirect()

    $location = wp_sanitize_redirect($location);

    // browsers will assume ‘http’ is your protocol, and will obey a redirect to a URL starting with ‘//’

    if ( substr($location, 0, 2) == ‘//’ )

    $location = ‘http:’ . $location;

    // In php 5 parse_url may fail if the URL query part contains http://, bug #38143

    $test = ( $cut = strpos($location, ‘?’) ) ? substr( $location, 0, $cut ) : $location;

    $lp = parse_url($test);

    $bp = parse_url(bb_get_uri());

    $allowed_hosts = (array) apply_filters(‘allowed_redirect_hosts’, array($bp), isset($lp) ? $lp : ”);

    if ( isset($lp) && ( !in_array($lp, $allowed_hosts) && $lp != strtolower($bp)) )

    $location = bb_get_uri(null, null, BB_URI_CONTEXT_HEADER);

    return wp_redirect($location, $status);

    }

    endif;

    if ( !function_exists(‘bb_nonce_tick’) ) :

    /**

    * Get the time-dependent variable for nonce creation.

    *

    * A nonce has a lifespan of two ticks. Nonces in their second tick may be

    * updated, e.g. by autosave.

    *

    * @since 1.0

    *

    * @return int

    */

    function bb_nonce_tick() {

    $nonce_life = apply_filters(‘bb_nonce_life’, 86400);

    return ceil(time() / ( $nonce_life / 2 ));

    }

    endif;

    if ( !function_exists(‘bb_verify_nonce’) ) :

    /**

    * Verify that correct nonce was used with time limit.

    *

    * The user is given an amount of time to use the token, so therefore, since the

    * UID and $action remain the same, the independent variable is the time.

    *

    * @param string $nonce Nonce that was used in the form to verify

    * @param string|int $action Should give context to what is taking place and be the same when nonce was created.

    * @return bool Whether the nonce check passed or failed.

    */

    function bb_verify_nonce($nonce, $action = -1) {

    $user = bb_get_current_user();

    $uid = (int) $user->ID;

    $i = bb_nonce_tick();

    // Nonce generated 0-12 hours ago

    if ( substr(bb_hash($i . $action . $uid, ‘nonce’), -12, 10) == $nonce )

    return 1;

    // Nonce generated 12-24 hours ago

    if ( substr(bb_hash(($i – 1) . $action . $uid, ‘nonce’), -12, 10) == $nonce )

    return 2;

    // Invalid nonce

    return false;

    }

    endif;

    if ( !function_exists(‘bb_create_nonce’) ) :

    /**

    * Creates a random, one time use token.

    *

    * @since 2.0.4

    *

    * @param string|int $action Scalar value to add context to the nonce.

    * @return string The one use form token

    */

    function bb_create_nonce($action = -1) {

    $user = bb_get_current_user();

    $uid = (int) $user->ID;

    $i = bb_nonce_tick();

    return substr(bb_hash($i . $action . $uid, ‘nonce’), -12, 10);

    }

    endif;

    function _bb_get_key( $key, $default_key = false ) {

    if ( !$default_key ) {

    global $bb_default_secret_key;

    $default_key = $bb_default_secret_key;

    }

    if ( defined( $key ) && ” != constant( $key ) && $default_key != constant( $key ) ) {

    return constant( $key );

    }

    return $default_key;

    }

    function _bb_get_salt( $constants, $option = false ) {

    if ( !is_array( $constants ) ) {

    $constants = array( $constants );

    }

    foreach ($constants as $constant ) {

    if ( defined( $constant ) ) {

    return constant( $constant );

    }

    }

    if ( !defined( ‘BB_INSTALLING’ ) || !BB_INSTALLING ) {

    if ( !$option ) {

    $option = strtolower( $constants[0] );

    }

    $salt = bb_get_option( $option );

    if ( empty( $salt ) ) {

    $salt = bb_generate_password();

    bb_update_option( $option, $salt );

    }

    return $salt;

    }

    return ”;

    }

    // Not verbatim WP, constants have different names, uses helper functions.

    if ( !function_exists( ‘bb_salt’ ) ) :

    /**

    * Get salt to add to hashes to help prevent attacks.

    *

    * @since 0.9

    * @link https://api.wordpress.org/secret-key/1.1/bbpress/ Create a set of keys for bb-config.php

    * @uses _bb_get_key()

    * @uses _bb_get_salt()

    *

    * @return string Salt value for the given scheme

    */

    function bb_salt($scheme = ‘auth’) {

    $secret_key = _bb_get_key( ‘BB_SECRET_KEY’ );

    switch ($scheme) {

    case ‘auth’:

    $secret_key = _bb_get_key( ‘BB_AUTH_KEY’, $secret_key );

    $salt = _bb_get_salt( array( ‘BB_AUTH_SALT’, ‘BB_SECRET_SALT’ ) );

    break;

    case ‘secure_auth’:

    $secret_key = _bb_get_key( ‘BB_SECURE_AUTH_KEY’, $secret_key );

    $salt = _bb_get_salt( ‘BB_SECURE_AUTH_SALT’ );

    break;

    case ‘logged_in’:

    $secret_key = _bb_get_key( ‘BB_LOGGED_IN_KEY’, $secret_key );

    $salt = _bb_get_salt( ‘BB_LOGGED_IN_SALT’ );

    break;

    case ‘nonce’:

    $secret_key = _bb_get_key( ‘BB_NONCE_KEY’, $secret_key );

    $salt = _bb_get_salt( ‘BB_NONCE_SALT’ );

    break;

    default:

    // ensure each auth scheme has its own unique salt

    $salt = hash_hmac( ‘md5’, $scheme, $secret_key );

    break;

    }

    return apply_filters( ‘salt’, $secret_key . $salt, $scheme );

    }

    endif;

    if ( !function_exists( ‘bb_hash’ ) ) :

    function bb_hash( $data, $scheme = ‘auth’ ) {

    $salt = bb_salt( $scheme );

    return hash_hmac( ‘md5’, $data, $salt );

    }

    endif;

    if ( !function_exists( ‘bb_hash_password’ ) ) :

    function bb_hash_password( $password ) {

    return WP_Pass::hash_password( $password );

    }

    endif;

    if ( !function_exists( ‘bb_check_password’) ) :

    function bb_check_password( $password, $hash, $user_id = ” ) {

    return WP_Pass::check_password( $password, $hash, $user_id );

    }

    endif;

    if ( !function_exists( ‘bb_generate_password’ ) ) :

    /**

    * Generates a random password drawn from the defined set of characters

    * @return string the password

    */

    function bb_generate_password( $length = 12, $special_chars = true ) {

    return WP_Pass::generate_password( $length, $special_chars );

    }

    endif;

    if ( !function_exists(‘bb_check_admin_referer’) ) :

    function bb_check_admin_referer( $action = -1, $query_arg = ‘_wpnonce’ ) {

    $nonce = ”;

    if ( isset( $_POST[$query_arg] ) && $_POST[$query_arg] ) {

    $nonce = $_POST[$query_arg];

    } elseif ( isset( $_GET[$query_arg] ) && $_GET[$query_arg] ) {

    $nonce = $_GET[$query_arg];

    }

    if ( !bb_verify_nonce($nonce, $action) ) {

    bb_nonce_ays($action);

    die();

    }

    do_action(‘bb_check_admin_referer’, $action);

    }

    endif;

    if ( !function_exists(‘bb_check_ajax_referer’) ) :

    function bb_check_ajax_referer( $action = -1, $query_arg = false, $die = true ) {

    $requests = array();

    if ( $query_arg ) {

    $requests[] = $query_arg;

    }

    $requests[] = ‘_ajax_nonce’;

    $requests[] = ‘_wpnonce’;

    $nonce = ”;

    foreach ( $requests as $request ) {

    if ( isset( $_POST[$request] ) && $_POST[$request] ) {

    $nonce = $_POST[$request];

    break;

    } elseif ( isset( $_GET[$request] ) && $_GET[$request] ) {

    $nonce = $_GET[$request];

    break;

    }

    }

    $result = bb_verify_nonce( $nonce, $action );

    if ( $die && false == $result )

    die(‘-1’);

    do_action(‘bb_check_ajax_referer’, $action, $result);

    return $result;

    }

    endif;

    if ( !function_exists(‘bb_break_password’) ) :

    function bb_break_password( $user_id ) {

    global $bbdb;

    $user_id = (int) $user_id;

    if ( !$user = bb_get_user( $user_id ) )

    return false;

    $secret = substr(bb_hash( ‘bb_break_password’ ), 0, 13);

    if ( false === strpos( $user->user_pass, ‘—‘ ) )

    return $bbdb->query( $bbdb->prepare(

    “UPDATE $bbdb->users SET user_pass = CONCAT(user_pass, ‘—‘, %s) WHERE ID = %d”,

    $secret, $user_id

    ) );

    else

    return true;

    }

    endif;

    if ( !function_exists(‘bb_fix_password’) ) :

    function bb_fix_password( $user_id ) {

    global $bbdb;

    $user_id = (int) $user_id;

    if ( !$user = bb_get_user( $user_id ) )

    return false;

    if ( false === strpos( $user->user_pass, ‘—‘ ) )

    return true;

    else

    return $bbdb->query( $bbdb->prepare(

    “UPDATE $bbdb->users SET user_pass = SUBSTRING_INDEX(user_pass, ‘—‘, 1) WHERE ID = %d”,

    $user_id

    ) );

    }

    endif;

    if ( !function_exists(‘bb_has_broken_pass’) ) :

    function bb_has_broken_pass( $user_id = 0 ) {

    global $bb_current_user;

    if ( !$user_id )

    $user =& $bb_current_user->data;

    else

    $user = bb_get_user( $user_id );

    return ( false !== strpos($user->user_pass, ‘—‘ ) );

    }

    endif;

    if ( !function_exists(‘bb_new_user’) ) :

    function bb_new_user( $user_login, $user_email, $user_url, $user_status = 1 ) {

    global $wp_users_object, $bbdb;

    // is_email check + dns

    if ( !$user_email = is_email( $user_email ) )

    return new WP_Error( ‘user_email’, __( ‘Invalid email address’ ), $user_email );

    if ( !$user_login = sanitize_user( $user_login, true ) )

    return new WP_Error( ‘user_login’, __( ‘Invalid username’ ), $user_login );

    // user_status = 1 means the user has not yet been verified

    $user_status = is_numeric($user_status) ? (int) $user_status : 1;

    if ( defined( ‘BB_INSTALLING’ ) )

    $user_status = 0;

    $user_nicename = $_user_nicename = bb_user_nicename_sanitize( $user_login );

    if ( strlen( $_user_nicename ) < 1 )

    return new WP_Error( ‘user_login’, __( ‘Invalid username’ ), $user_login );

    while ( is_numeric($user_nicename) || $existing_user = bb_get_user_by_nicename( $user_nicename ) )

    $user_nicename = bb_slug_increment($_user_nicename, $existing_user->user_nicename, 50);

    $user_url = $user_url ? bb_fix_link( $user_url ) : ”;

    $user_pass = bb_generate_password();

    $user = $wp_users_object->new_user( compact( ‘user_login’, ‘user_email’, ‘user_url’, ‘user_nicename’, ‘user_status’, ‘user_pass’ ) );

    if ( is_wp_error($user) ) {

    if ( ‘user_nicename’ == $user->get_error_code() )

    return new WP_Error( ‘user_login’, $user->get_error_message() );

    return $user;

    }

    if (BB_INSTALLING) {

    bb_update_usermeta( $user, $bbdb->prefix . ‘capabilities’, array(‘keymaster’ => true) );

    } else {

    bb_update_usermeta( $user, $bbdb->prefix . ‘capabilities’, array(‘member’ => true) );

    bb_send_pass( $user, $user );

    }

    do_action(‘bb_new_user’, $user, $user);

    return $user;

    }

    endif;

    if ( !function_exists( ‘bb_mail’ ) ) :

    /**

    * Send mail, similar to PHP’s mail

    *

    * A true return value does not automatically mean that the user received the

    * email successfully. It just only means that the method used was able to

    * process the request without any errors.

    *

    * Using the two ‘bb_mail_from’ and ‘bb_mail_from_name’ hooks allow from

    * creating a from address like ‘Name <email@address.com>’ when both are set. If

    * just ‘bb_mail_from’ is set, then just the email address will be used with no

    * name.

    *

    * The default content type is ‘text/plain’ which does not allow using HTML.

    * However, you can set the content type of the email by using the

    * ‘bb_mail_content_type’ filter.

    *

    * The default charset is based on the charset used on the blog. The charset can

    * be set using the ‘bb_mail_charset’ filter.

    *

    * @uses apply_filters() Calls ‘bb_mail’ hook on an array of all of the parameters.

    * @uses apply_filters() Calls ‘bb_mail_from’ hook to get the from email address.

    * @uses apply_filters() Calls ‘bb_mail_from_name’ hook to get the from address name.

    * @uses apply_filters() Calls ‘bb_mail_content_type’ hook to get the email content type.

    * @uses apply_filters() Calls ‘bb_mail_charset’ hook to get the email charset

    * @uses do_action_ref_array() Calls ‘bb_phpmailer_init’ hook on the reference to

    * phpmailer object.

    * @uses PHPMailer

    *

    * @param string $to Email address to send message

    * @param string $subject Email subject

    * @param string $message Message contents

    * @param string|array $headers Optional. Additional headers.

    * @param string|array $attachments Optional. Files to attach.

    * @return bool Whether the email contents were sent successfully.

    */

    function bb_mail( $to, $subject, $message, $headers = ”, $attachments = array() ) {

    // Compact the input, apply the filters, and extract them back out

    extract( apply_filters( ‘bb_mail’, compact( ‘to’, ‘subject’, ‘message’, ‘headers’, ‘attachments’ ) ) );

    if ( !is_array($attachments) )

    $attachments = explode( “n”, $attachments );

    global $bb_phpmailer;

    // (Re)create it, if it’s gone missing

    if ( !is_object( $bb_phpmailer ) || !is_a( $bb_phpmailer, ‘PHPMailer’ ) ) {

    require_once BACKPRESS_PATH . ‘class.mailer.php’;

    require_once BACKPRESS_PATH . ‘class.mailer-smtp.php’;

    $bb_phpmailer = new PHPMailer();

    }

    // Headers

    if ( empty( $headers ) ) {

    $headers = array();

    } else {

    if ( !is_array( $headers ) ) {

    // Explode the headers out, so this function can take both

    // string headers and an array of headers.

    $tempheaders = (array) explode( “n”, $headers );

    } else {

    $tempheaders = $headers;

    }

    $headers = array();

    // If it’s actually got contents

    if ( !empty( $tempheaders ) ) {

    // Iterate through the raw headers

    foreach ( (array) $tempheaders as $header ) {

    if ( strpos($header, ‘:’) === false ) {

    if ( false !== stripos( $header, ‘boundary=’ ) ) {

    $parts = preg_split(‘/boundary=/i’, trim( $header ) );

    $boundary = trim( str_replace( array( “‘”, ‘”‘ ), ”, $parts[1] ) );

    }

    continue;

    }

    // Explode them out

    list( $name, $content ) = explode( ‘:’, trim( $header ), 2 );

    // Cleanup crew

    $name = trim( $name );

    $content = trim( $content );

    // Mainly for legacy — process a From: header if it’s there

    if ( ‘from’ == strtolower($name) ) {

    if ( strpos($content, ‘<‘ ) !== false ) {

    // So… making my life hard again?

    $from_name = substr( $content, 0, strpos( $content, ‘<‘ ) – 1 );

    $from_name = str_replace( ‘”‘, ”, $from_name );

    $from_name = trim( $from_name );

    $from_email = substr( $content, strpos( $content, ‘<‘ ) + 1 );

    $from_email = str_replace( ‘>’, ”, $from_email );

    $from_email = trim( $from_email );

    } else {

    $from_email = trim( $content );

    }

    } elseif ( ‘content-type’ == strtolower($name) ) {

    if ( strpos( $content,’;’ ) !== false ) {

    list( $type, $charset ) = explode( ‘;’, $content );

    $content_type = trim( $type );

    if ( false !== stripos( $charset, ‘charset=’ ) ) {

    $charset = trim( str_replace( array( ‘charset=’, ‘”‘ ), ”, $charset ) );

    } elseif ( false !== stripos( $charset, ‘boundary=’ ) ) {

    $boundary = trim( str_replace( array( ‘BOUNDARY=’, ‘boundary=’, ‘”‘ ), ”, $charset ) );

    $charset = ”;

    }

    } else {

    $content_type = trim( $content );

    }

    } elseif ( ‘cc’ == strtolower($name) ) {

    $cc = explode(“,”, $content);

    } elseif ( ‘bcc’ == strtolower($name) ) {

    $bcc = explode(“,”, $content);

    } else {

    // Add it to our grand headers array

    $headers[trim( $name )] = trim( $content );

    }

    }

    }

    }

    // Empty out the values that may be set

    $bb_phpmailer->ClearAddresses();

    $bb_phpmailer->ClearAllRecipients();

    $bb_phpmailer->ClearAttachments();

    $bb_phpmailer->ClearBCCs();

    $bb_phpmailer->ClearCCs();

    $bb_phpmailer->ClearCustomHeaders();

    $bb_phpmailer->ClearReplyTos();

    // From email and name

    // If we don’t have a name from the input headers

    if ( !isset( $from_name ) ) {

    $from_name = bb_get_option(‘name’);

    }

    // If we don’t have an email from the input headers

    if ( !isset( $from_email ) ) {

    $from_email = bb_get_option(‘from_email’);

    }

    // If there is still no email address

    if ( !$from_email ) {

    // Get the site domain and get rid of www.

    $sitename = strtolower( $_SERVER );

    if ( substr( $sitename, 0, 4 ) == ‘www.’ ) {

    $sitename = substr( $sitename, 4 );

    }

    $from_email = ‘bbpress@’ . $sitename;

    }

    // Plugin authors can override the potentially troublesome default

    $bb_phpmailer->From = apply_filters( ‘bb_mail_from’, $from_email );

    $bb_phpmailer->FromName = apply_filters( ‘bb_mail_from_name’, $from_name );

    // Set destination address

    $bb_phpmailer->AddAddress( $to );

    // Set mail’s subject and body

    $bb_phpmailer->Subject = $subject;

    $bb_phpmailer->Body = $message;

    // Add any CC and BCC recipients

    if ( !empty($cc) ) {

    foreach ( (array) $cc as $recipient ) {

    $bb_phpmailer->AddCc( trim($recipient) );

    }

    }

    if ( !empty($bcc) ) {

    foreach ( (array) $bcc as $recipient) {

    $bb_phpmailer->AddBcc( trim($recipient) );

    }

    }

    // Set to use PHP’s mail()

    $bb_phpmailer->IsMail();

    // Set Content-Type and charset

    // If we don’t have a content-type from the input headers

    if ( !isset( $content_type ) ) {

    $content_type = ‘text/plain’;

    }

    $content_type = apply_filters( ‘bb_mail_content_type’, $content_type );

    $bb_phpmailer->ContentType = $content_type;

    // Set whether it’s plaintext or not, depending on $content_type

    if ( $content_type == ‘text/html’ ) {

    $bb_phpmailer->IsHTML( true );

    }

    // If we don’t have a charset from the input headers

    if ( !isset( $charset ) ) {

    $charset = bb_get_option( ‘charset’ );

    }

    // Set the content-type and charset

    $bb_phpmailer->CharSet = apply_filters( ‘bb_mail_charset’, $charset );

    // Set custom headers

    if ( !empty( $headers ) ) {

    foreach( (array) $headers as $name => $content ) {

    $bb_phpmailer->AddCustomHeader( sprintf( ‘%1$s: %2$s’, $name, $content ) );

    }

    if ( false !== stripos( $content_type, ‘multipart’ ) && ! empty($boundary) ) {

    $bb_phpmailer->AddCustomHeader( sprintf( “Content-Type: %s;nt boundary=”%s””, $content_type, $boundary ) );

    }

    }

    if ( !empty( $attachments ) ) {

    foreach ( $attachments as $attachment ) {

    $bb_phpmailer->AddAttachment($attachment);

    }

    }

    do_action_ref_array( ‘bb_phpmailer_init’, array( &$bb_phpmailer ) );

    // Send!

    $result = @$bb_phpmailer->Send();

    return $result;

    }

    endif;

    if ( !function_exists( ‘bb_get_avatar’ ) ) :

    /**

    * Retrieve the avatar for a user provided a user ID or email address

    *

    * @since 0.9

    * @param int|string $id_or_email A user ID or email address

    * @param int $size Size of the avatar image

    * @param string $default URL to a default image to use if no avatar is available

    * @param string $alt Alternate text to use in image tag. Defaults to blank

    * @return string <img> tag for the user’s avatar

    */

    function bb_get_avatar( $id_or_email, $size = 80, $default = ”, $alt = false ) {

    if ( !bb_get_option(‘avatars_show’) )

    return false;

    if ( false === $alt)

    $safe_alt = ”;

    else

    $safe_alt = esc_attr( $alt );

    if ( !is_numeric($size) )

    $size = 80;

    if ( $email = bb_get_user_email($id_or_email) ) {

    $class = ‘photo ‘;

    } else {

    $class = ”;

    $email = $id_or_email;

    }

    if ( !$email )

    $email = ”;

    if ( empty($default) )

    $default = bb_get_option(‘avatars_default’);

    if ( is_ssl() )

    $host = ‘https://secure.gravatar.com&#8217;;

    else

    $host = ‘http://www.gravatar.com&#8217;;

    switch ($default) {

    case ‘logo’:

    $default = ”;

    break;

    case ‘blank’:

    $default = bb_get_uri( ‘bb-admin/images/blank.gif’, null, BB_URI_CONTEXT_IMG_SRC );

    break;

    case ‘monsterid’:

    case ‘wavatar’:

    case ‘identicon’:

    break;

    case ‘default’:

    default:

    $default = $host . ‘/avatar/ad516503a11cd5ca435acc9bb6523536?s=’ . $size;

    // ad516503a11cd5ca435acc9bb6523536 == md5(‘unknown@gravatar.com’)

    break;

    }

    $src = $host . ‘/avatar/’;

    $class .= ‘avatar avatar-‘ . $size;

    if ( !empty($email) ) {

    $src .= md5( strtolower( $email ) );

    } else {

    $src .= ‘d41d8cd98f00b204e9800998ecf8427e’;

    // d41d8cd98f00b204e9800998ecf8427e == md5(”)

    $class .= ‘ avatar-noemail’;

    }

    $src .= ‘?s=’ . $size;

    $src .= ‘&d=’ . urlencode( $default );

    $rating = bb_get_option(‘avatars_rating’);

    if ( !empty( $rating ) )

    $src .= ‘&r=’ . $rating;

    $avatar = ‘<img alt=”‘ . $safe_alt . ‘” src=”‘ . $src . ‘” class=”‘ . $class . ‘” style=”height:’ . $size . ‘px; width:’ . $size . ‘px;” />’;

    return apply_filters(‘bb_get_avatar’, $avatar, $id_or_email, $size, $default, $alt);

    }

    endif;

    ?>

    What am I not seeing here?

    #77298
    chandersbs
    Member

    I like the layout, but only wished, that bbpress would have some options by default.

    #78064
    anandasama
    Member

    I already know how to filter out subforums, but what I want (Weird request i know) is to filter out the posts who have a parent forum in the Latest Discussions.

    I also wonder if there is anyone who succeeded in making the topic icons plugin able to show a “default” icon for topics.

    #31496
    anandasama
    Member

    I am using the Topic Icons plugin and it works great! However I’d like to display a “Default” Icon as a fallback if the Topic Icon plugin doesn’t do it for me.

    Ever since I started using Buddypress and integrated BbPress, Users can now use forum in “Groups” section. When a user creates a new group, A new subforum will appear. So that’s why I need to have a fallback Icon. I can’t manually sit and add numbers everytime there is a new subforum created.

    I already have a script for not showing these subforums in my Forums list.

    So another option than using a default topic icon would be to filter these topics (From the subforums) out from the Latest Discussions. But then I need a script in Latest Discussions to filter out all topics that come from a subforum. I never managed to do that.

    I use this for the forumloop:

    `<?php if ( bb_forums() ) : ?>

    <?php while ( bb_forum() ) : global $forum; if ($forum->forum_parent != 0) continue; ?>`

    But I cant get something similar working with topics. And Im afraid that If i filter out this I will have trouble with the page counter too.

    Somehow the best solution would be a Default fallback Topic Icon. Anyone have any idea how I can solve this?

    #67350

    In reply to: All setting use cache

    _ck_
    Participant

    No, the problem is much worse in 1.0.x

    Not only does the setting have no effect, 1.0 has a “reserved” option list which forces all foreign options (ie. set by plugins) to default to non-autoload, causing an extra query for each one unless they specifically add themselves to the auto-load list.

    So other than hacking nearly every single existing plugin, you can try my workaround:

    https://bbpress.org/forums/topic/heres-how-to-fix-some-of-the-10-query-performance-regression

    #77970

    @ Marius – If you create a wordpress page with the same name of the directory where the forum is, it will automatically take you there, because the directory overrides the page.

    If the forum is in a directory called “forums”, just create a page called “forums” and publish. The tab will appear in the blog menu as a new page and when you click on it, it will take you straight to the forums. I have done it this way too.

    Theme the forums like your wordpress template, like Ipstenu and gerikg have suggested and it will look perfectly integrated. To do this, you can use the Kakumei default theme, edit the header and footer files to look like the blog header and footer (background image, etc.), and match the css in the stylesheet where needed.

    Hope this helps.

    #77875
    chrishajer
    Participant

    In version 1.0.2 there is a search box by default. Are you looking for something different than what is built in?

    #77865
    Marius-
    Member

    Well ugh, there is no space there! I’ve checked ten thousand times already.

    <?php
    /**
    * The base configurations of bbPress.
    *
    * This file has the following configurations: MySQL settings, Table Prefix,
    * Secret Keys and bbPress Language. You can get the MySQL settings from your
    * web host.
    *
    * This file is used by the installer during installation.
    *
    * @package bbPress
    */

    // ** MySQL settings - You can get this info from your web host ** //
    /** The name of the database for bbPress */
    define( 'BBDB_NAME', 'michael_forum' );

    /** MySQL database username */
    define( 'BBDB_USER', 'michael_forum' );

    /** MySQL database password */
    define( 'BBDB_PASSWORD', '***' );

    /** MySQL hostname */
    define( 'BBDB_HOST', 'localhost' );

    /** Database Charset to use in creating database tables. */
    define( 'BBDB_CHARSET', 'utf8' );

    /** The Database Collate type. Don't change this if in doubt. */
    define( 'BBDB_COLLATE', '' );

    /**#@+
    * Authentication Unique Keys.
    *
    * Change these to different unique phrases!
    * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/bbpress/ WordPress.org secret-key service}
    *
    * @since 1.0
    */
    define( 'BB_AUTH_KEY', 'put your unique phrase here' );
    define( 'BB_SECURE_AUTH_KEY', 'put your unique phrase here' );
    define( 'BB_LOGGED_IN_KEY', 'put your unique phrase here' );
    define( 'BB_NONCE_KEY', 'put your unique phrase here' );
    /**#@-*/

    /**
    * bbPress Database Table prefix.
    *
    * You can have multiple installations in one database if you give each a unique
    * prefix. Only numbers, letters, and underscores please!
    */
    $bb_table_prefix = 'bb_';

    /**
    * bbPress Localized Language, defaults to English.
    *
    * Change this to localize bbPress. A corresponding MO file for the chosen
    * language must be installed to a directory called "my-languages" in the root
    * directory of bbPress. For example, install de.mo to "my-languages" and set
    * BB_LANG to 'de' to enable German language support.
    */
    define( 'BB_LANG', '' );
    ?>

    #22660
    neilogic
    Member

    Hi guys first of all thanks to _ck_ for wonderful plugins. We at Ubuntu India have put up or new forum theme which had been using the kakumei theme ever since it came up. Check out or new theme , designed on default Kakumei.

    http://forum.ubuntu-in.info/

    I hope you like it ,comments ( good or bad ) are welcome.

    #77863
    Marius-
    Member

    Well, here the entire thing is, with sensorship:

    <?php

    /**

    * The base configurations of bbPress.

    *

    * This file has the following configurations: MySQL settings, Table Prefix,

    * Secret Keys and bbPress Language. You can get the MySQL settings from your

    * web host.

    *

    * This file is used by the installer during installation.

    *

    * @package bbPress

    */

    // ** MySQL settings – You can get this info from your web host ** //

    /** The name of the database for bbPress */

    define( ‘BBDB_NAME’, ‘michael_forum’ );

    /** MySQL database username */

    define( ‘BBDB_USER’, ‘michael_forum’ );

    /** MySQL database password */

    define( ‘BBDB_PASSWORD’, ‘***’ );

    /** MySQL hostname */

    define( ‘BBDB_HOST’, ‘localhost’ );

    /** Database Charset to use in creating database tables. */

    define( ‘BBDB_CHARSET’, ‘utf8’ );

    /** The Database Collate type. Don’t change this if in doubt. */

    define( ‘BBDB_COLLATE’, ” );

    /**#@+

    * Authentication Unique Keys.

    *

    * Change these to different unique phrases!

    * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/bbpress/ WordPress.org secret-key service}

    *

    * @since 1.0

    */

    define( ‘BB_AUTH_KEY’, ‘put your unique phrase here’ );

    define( ‘BB_SECURE_AUTH_KEY’, ‘put your unique phrase here’ );

    define( ‘BB_LOGGED_IN_KEY’, ‘put your unique phrase here’ );

    define( ‘BB_NONCE_KEY’, ‘put your unique phrase here’ );

    /**#@-*/

    /**

    * bbPress Database Table prefix.

    *

    * You can have multiple installations in one database if you give each a unique

    * prefix. Only numbers, letters, and underscores please!

    */

    $bb_table_prefix = ‘bb_’;

    /**

    * bbPress Localized Language, defaults to English.

    *

    * Change this to localize bbPress. A corresponding MO file for the chosen

    * language must be installed to a directory called “my-languages” in the root

    * directory of bbPress. For example, install de.mo to “my-languages” and set

    * BB_LANG to ‘de’ to enable German language support.

    */

    define( ‘BB_LANG’, ” );

    ?>

    #76698
    Josh Leuze
    Member

    @Ipstenu: I deactivated the Ajaxed Quotes plugin, didn’t seem to make any difference.

    I then deactivated all of the plugins, that didn’t change anything either.

    So I deactivated all the plugins and switched to the default theme. No changes. But when I reactivated those plugins, and switched to my custom theme, I am able to see those posts now, even when I am not logged in.

    The “+2 more” link still remains at the top, but the posts in the thread don’t seem change between the regular and all views. So it seems partially fixed, but the more link remaining makes think that more posts could get caught in this limbo.

    It almost seems like there was some caching involved and reactivating the theme and the plugins cleared this. But I don’t see that being the case with any of the plugins I am using. And it isn’t the brower’s cache, the problem is the same on multiple machines, any OS or browser.

    #76696
    Josh Leuze
    Member

    @chrishajer: I can sort of rescue a spam post. I don’t have any problem finding the spam posts in the admin panel, and marking them as “Not Spam”. They disappear from the spam posts and show up in the regular posts.

    But in the front end, they do not show up unless I am logged in as admin and click the “+2 More” link.

    I am using a custom theme, but it is built from Kakumei and should not be very functionally different from that. I switched back to the default theme, and everything functioned the same.

    Gautam
    Member

    I have seen many people asking that tags are not getting deleted in bbPress 1.0 (Even I faced the same problem, but it was working in the default theme). So I just thought of writing a solution for it.

    Open the topic-tags.php of your theme.

    You would find something like this:

    <?php if ( $public_tags ) : ?>
    <div id="othertags">
    <ul id="yourtaglist">
    <?php foreach ( $public_tags as $tag ) : ?>
    <li id="tag-<?php echo $tag->tag_id; ?>_<?php echo $tag->user_id; ?>">
    <a href="<?php bb_tag_link(); ?>" rel="tag"><?php bb_tag_name(); ?></a> <?php $tags = bb_get_tag_remove_link (); if ($tags) echo '<small>'.$tags.'</small>'; ?>
    </li>
    <?php endforeach; ?>
    </ul>
    </div>

    Replace it with:

    <?php if ( bb_get_topic_tags() ) : ?>
    <?php bb_list_tags(); ?>

    That’s it!

    You can also view the changes to topic-tags.php of the default theme in the trac:

    http://trac.bbpress.org/changeset?old_path=%2Ftrunk%2Fbb-templates%2Fkakumei%2Ftopic-tags.php&old=940&new_path=%2Ftrunk%2Fbb-templates%2Fkakumei%2Ftopic-tags.php&new=2344

    #77873
    chrishajer
    Participant

    What version did you install? Search is built in to all versions, but only visible by default in the 1.0 version.

    Or, are you trying to search bbPress from WordPress?

    spencerjw
    Member

    For some reason I am getting errors when I try to install a custom theme. I took a default theme and copied it into the my-templates directory and it seems all permissions stuck as the default but I am getting an UNstyled site (CSS path is correct) and even the Screenshot sin’t displaying (just a blank image) in the Admin area.

    See below (but permissions *are* all correct):

    Forbidden

    You don’t have permission to access /wp/bbpress/my-templates/mythemetest/screenshot.png on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

    #77821
    chrishajer
    Participant

    You can just delete the files from the file system, if that’s what you mean. If you use an FTP client, there should be a way to delete the whole bbPress folder/directory (normally right click and “Delete” then answer the prompts). That will remove bbPress. You can remove the database tables next with a tool like phpMyAdmin. Hopefully your host provides something like that. You can log in and delete any table with a bb_ prefix, or whatever prefix you chose when installing (default is bb_).

    Good luck.

    #77573
    chrishajer
    Participant

    You will need someone who can help you debug the code then. Something is out of order.

    You can post your whole topic.php at pastebin and post a link here:

    http://pastebin.com/

    Make sure you let the code stay there longer than one day (default is a month which should be OK)

    #77491

    In reply to: All RSS Feeds Broken?

    Rohan Kapoor
    Member

    Nope that didn’t help. I reloaded the rss2.php file to the default kakumei and then disabled deep integration as well. The client states that rss is very important to him. Does anyone have any ideas?

    #31357
    TonyVitabile
    Member

    OK, here’s the functions.php file that I created in my theme to reproduce the drop down menu I had on my WordPress side.

    Please note that this code does not attempt to reproduce all of the functionality of the WordPress wp_list_pages() function. Rather, it just tries to create the HTML needed for the drop down menu code that came with my WordPress theme to work. If you need anything more than that, feel free to modify this or strike out on your own.

    Overview

    Before the code, just a quick overview of how it works.

    The function bb_list_pages() is a recursive function that returns a string containing the HTML for all of the pages that descend from a particular ancestor. The process is started by calling it with a parent ID of 0. The way the wp_posts table in WP is designed, this returns the highest level.

    The function calls a helper function called get_pages() to retrieve the list of child pages from the database. It then loops through all of the pages returned by get_pages() & constructs the list item & anchor tags. It then calls itself to build the HTML for any descendants of the current page.

    Here’s the code:

    <?php
    /**
    * This file contains useful functions that can be called in any of the template's files.
    *
    * Version 1.0
    * Date: 23-July-2009
    * Author: Tony Vitabile
    */

    function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://".$_SERVER["SERVER_NAME"];
    if ($_SERVER["SERVER_PORT"] != "80") {
    $pageURL .= ":".$_SERVER["SERVER_PORT"];
    }
    $pageURL .= $_SERVER["REQUEST_URI"];

    return $pageURL;
    }

    /**
    * Compute the name of the WordPress pages table & return it
    */
    function pages_table() {
    global $bb;

    // Compute the name of the table we need to query
    $table = $bb->wp_table_prefix;
    if ($bb->wordpress_mu_primary_blog_id != "")
    $table .= $bb->wordpress_mu_primary_blog_id."_";
    $table .= "posts";
    return $table;
    }

    /**
    * Retrieve a list of pages from the WordPress posts table whose parent has the ID
    * passed to this function.
    *
    * @param int $parent ID of the page that is the parent of the ones we're searching for
    * @return array List of pages matching defaults or $args
    */
    function get_pages($parent = 0) {
    global $bbdb;

    // Compute the name of the table we need to query
    $table = pages_table();

    // Build our query string
    $parent = (int) $parent;
    $query = "SELECT * FROM {$table} WHERE post_type = 'page' AND post_status = 'publish' AND post_parent = {$parent} ORDER BY menu_order";

    // Get an array of rows back from the database
    $pages = $bbdb->get_results($query);

    // Return whatever we got back to the caller
    return $pages;
    }

    /**
    * Simple function to recursively scan the WordPress posts table looking for pages.
    * It builds a string consisting of <ul><li></li>...</ul> items.
    *
    * @param int $parent ID of the parent page. 0 = no parent
    * @param int $depth How far down in the heirarchy to go
    * @param string $thisPage The name of the page that is currently being displayed
    * @returns string A <ul><li></li>...</ul> list of page navigation information
    */

    function bb_list_pages($parent = 0, $depth=0, $parent_uri='', $indent=' ') {
    // Initialize the output of the function
    $output = "";

    // Is the depth = 0?
    if ($depth == 0) {
    // It is. Return the empty string now
    return $output;
    }

    // Get the child rows of $parent
    $pages = get_pages($parent);

    // Did we get any pages back?
    if ( empty($pages) ) {
    // No, we didn't. Return the empty string now
    return $output;
    }

    // Yes, we got pages back. Loop through all of the pages in our results
    foreach ( $pages as $page ) {
    // Compute this page's URI
    $page_uri = $parent_uri;
    if (substr($page_uri, -1) != '/')
    $page_uri .= "/";
    $page_uri .= $page->post_name . "/";

    // Build the <li> tag
    $output .= "{$indent}<li class="page_item page-item-{$page->ID}";
    if ($page_uri == curPageURL() ) {
    $output .= " current_page_item";
    }
    $output .= "">";

    // Now build the rest of this item's information
    $output .= "<a href="{$page_uri}">".$page->post_title."</a>n";

    if ($page->ID > 0) {
    // Get this page's children recursively
    $kids = bb_list_pages($page->ID, $depth -1, $page_uri, '', $thisPage, $indent . " ");

    // Does this page have any children?
    if ($kids <> "") {
    // It does. Add the information for the kids surrounded by <ul></ul> tages
    $output .= "{$indent}<ul>n" . $kids . "{$indent}</ul>n";
    }
    }

    // Output the closing </li>
    $output .= "</li>";
    }

    // Return the string to the caller
    return $output;
    }

    ?>

    Tony

    #77353
    thekmen
    Member

    Looks like you are still using the default kakumei theme in bb-templates/kakumei.

    As well as renaming your modified template in my-templates/ have you edited that themes style.css to reflect the new name? then selected that new name in your admin/themes selection?

    #77331

    In reply to: Role = Main?

    deadlyhifi
    Participant

    http://www.w3.org/TR/xhtml-role/#s_role_module_attributes explains the role attribute.

    could the other issue be to do line endings? LF, CR, CRLF, etc. I use Coda (mac) and that is set to UNIX LF as default.

    #31329

    Topic: Role = Main?

    in forum Themes
    Mark / t31os
    Member

    Googled, searched the forum, it’s hard to create a specific search for something like the above without getting irrelevant results..

    Had a dig and couldn’t find the answer….

    bbPress 1.0

    I’ve noticed throughout the default themes are references to..

    role="main"

    Firstly, what does this do? .. In some cases removing this from a template file reseults in the file not working.

    Secondly, is there an alternative, these lines are causing invalidtions.

    It’s not the end of the world, i can live with them, but some info on what they are for would be most helpful, if one of you lovely chaps could help.. :)

    As a side question, and this one again isn’t a huge problem, i find tabbing in code in certain files causes T_ error messages, T_SWITCH, T_CASE, depending on where and what i’m editting.. I like to indent the code appropriately when i’m working on it, but as said i simply can’t do this with particular template files..

    Any ideas on that one?

    I’m using Notepad++ and Notepad2 for editting, same programs i use for modifying WordPress. I’m using the correct encoding, transfer type etc… i’m use to handling code..

Viewing 25 results - 5,701 through 5,725 (of 6,780 total)
Skip to toolbar