Search Results for 'code'
-
AuthorSearch Results
-
August 17, 2009 at 1:22 am #78154
In reply to: Posting error
parity
MemberSome 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
<?phpif ( !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’;
else
$host = ‘http://www.gravatar.com’;
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?
August 16, 2009 at 11:40 pm #72206circulartrend
MemberJust want to make sure I did it correctly, so with this new code that CK re-wrote….how much do you replace?
I assume just the function from
function pm_new_message( $id_receiver, $id_sender, $pmtitle, $message ){
}
You replace just that section to the } with the CK rewrite?
PS thanks for this, security issue=bad
August 16, 2009 at 10:17 pm #63071In reply to: Open Links in new window
_ck_
ParticipantMy code is still working perfectly for me. Post what you are actually using.
August 16, 2009 at 9:46 pm #31510Topic: User ID not Author ID
in forum Troubleshootinggerikg
MemberWhat is the code to pull up someone’s user name? <?php echo post_author();?> pulls the nick name not user name.
August 16, 2009 at 8:55 pm #31509Topic: How to: allow headings in post
in forum Showcasejulienbechade
MemberHi guys,
First of all, many thanks for your great work, you’ve made bbpress THE forum for wordpress & as his big brother, you offered infinite customization possibilities to us, users, developers & webdesigners.
Ok, that’s done, now I can ask my question…

I’m using Tinymce, for my users to post, with the advanced theme. The only problem is headings aren’t supported by bbpress. What can I do to change that ?
Thanks for your answers…
August 16, 2009 at 8:19 pm #78103In reply to: How do I use BB Polls?
johnhiler
MemberThat plugin was written by _ck_ – she’s stated that she’s not going to update her plugins until bbPress 1.0 has had a chance to settle down… around December or so:
https://bbpress.org/forums/topic/bbcode-buttons-and-bbpress-smilies-not-working-for-me
If you’re in any sort of hurry to use her plugins, your best bet is to use bbPress 0.9.
August 16, 2009 at 7:26 pm #78124In reply to: BB Smileys doesn't work… either :(
Marius-
MemberI’ve disabled all non-working plugins, but I can’t disable working ones. I’ve actually launched the forum for public use now, so I can’t mess around too much.
–
I’m depressed now
August 16, 2009 at 7:21 pm #78106In reply to: Bavatars doesn't work!
Marius-
MemberAgain, I have no clue about permissions and codes and stuff. I just upload files to my server. And no, that directory does not exist. Atleast not as I can see.
August 16, 2009 at 7:15 pm #78105In reply to: Bavatars doesn't work!
chrishajer
ParticipantDoes this directory exist and is it writable (0755 permissions on the directory)
/home/michael/public_html/forum//avatars/c/c4/c4c/Also, the double forward slash there doesn’t need to be there. This is not causing your problem, but it is unnecessary. Something has a leading slash or trailing slash that’s unnecessary.
August 16, 2009 at 7:12 pm #31506Topic: Bavatars doesn't work!
in forum PluginsMarius-
MemberIt gives me this error when uploading an avatar image:
Warning: imagepng() [function.imagepng]: Unable to open '/home/michael/public_html/forum//avatars/c/c4/c4c/c4ca4238a0b923820dcc509a6f75849b.png' for writing: No such file or directory in /home/michael/public_html/forum/bb-plugins/bavatars/bavatars-profile.php on line 42What do I do?
August 16, 2009 at 6:56 pm #77184In reply to: Comment on a post ala Facebook style
Ben L.
MemberTechnically, this would be threaded posts, and yes, avatars are resizable with basic code.
post_author_avatar( 48 );makes 48×48 pixel avatars,post_author_avatar( 80 );makes 80×80 pixel avatars, etc.August 16, 2009 at 2:47 pm #77182In reply to: cannot install plugins
johnhiler
MemberYah, a lot of plugins don’t have admin menus… they either:
* Have no settings at all, or
* Have the settings at the top of their code, and require you to edt them using a text editing program
Hopefully that’s the case! If you’re not sure, let us know which plugins you’re using…
August 16, 2009 at 12:11 pm #60374In reply to: Smilies aka Emoticons Plugin (in English)?
Navin
MemberThis is not working either on 1.0.1
August 16, 2009 at 10:19 am #76995Ashish Kumar (Ashfame)
ParticipantI didn’t get what are you trying to do? Can you explain further?
August 16, 2009 at 4:26 am #76994Navin
MemberI haven’t been here for a while. Will try it for sure and give feedback.
August 15, 2009 at 4:38 pm #77608In reply to: Display random (or online) member avatars
Ashish Kumar (Ashfame)
ParticipantThere is a direct function for your need but I can’t recall it at the moment.
How about the following?
<?php $avatar = bb_get_avatar( $user->ID ) ;
echo $avatar; ?>I took it from the
profile.phpAugust 15, 2009 at 4:25 pm #78090In reply to: Show post Author next to Last poster?
Ashish Kumar (Ashfame)
ParticipantTry hardcoding
<?php topic_author(); ?>in your template at the place where do you want the Author name to appear.August 15, 2009 at 6:44 am #78063In reply to: Topic Icons Default Icon (Advanced request)
Olaf Lederer
ParticipantHi,
you mean like on my frontpage (check the link from my profile)
I use this code:
<?php while ( bb_forum() ) :
if (get_forum_parent_id() == 0) : ?>
<?php if (bb_get_forum_is_category()) : ?>
<tr<?php bb_forum_class('bb-category'); ?>>
<td colspan="3"><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><?php forum_description( array( 'before' => '<small> – ', 'after' => '</small>' ) ); ?><?php bb_forum_pad( '</div>' ); ?></td>
</tr>
<?php continue; endif; ?>
<tr<?php bb_forum_class(); ?>>
<td><?php bb_forum_pad( '<div class="nest">' ); ?><a href="<?php forum_link(); ?>"><?php forum_name(); ?></a><?php forum_description( array( 'before' => '<small> – ', 'after' => '</small>' ) ); ?><?php bb_forum_pad( '</div>' ); ?></td>
<td class="num"><?php forum_topics(); ?></td>
<td class="num"><?php forum_posts(); ?></td>
</tr>
<?php
endif;
endwhile; ?>The function get_forum_parent_id() is located in my personal plugin file:
function get_forum_parent_id( $forum_id = 0 ) {
$forum = get_forum( get_forum_id( $forum_id ) );
return apply_filters( 'get_forum_parent_id', $forum->forum_parent, $forum->forum_id );
}August 15, 2009 at 6:36 am #78069In reply to: How to sort on column heads?
Olaf Lederer
ParticipantI know this function from many type of websites but never used on a forum

don’t think that it will be easy to develop inside bbpress, check the plugin list I thought I saw some old extension there
ps. Pimp is a word young people like to say (pimp a car)
August 14, 2009 at 4:38 pm #77060In reply to: bbpress and memcache?
johnhiler
MemberRuby on Rails has some stuff to allow memcached storage of user sessions:
http://awesomerails.wordpress.com/2008/06/26/memcache-sessions-in-rails/
@finalwebsite – _ck_ is a female developer.
I was referring to her statements that “the performance boost will be trivial, almost non-existent for a single server setup” and ” Memcache is only beneficial for multi-server systems, it’s why it was invented in the first place.” But ymmv!
August 14, 2009 at 2:31 pm #77781In reply to: Sometimes Less Is Just Less
DennisH
Member@johnhiler Thanks for the links. I’ve decided it only makes sense for us to use BB if it was deeply integrated. I’m willing to take the server hit, it can’t be any worse than what phpbb is doing.
@mark-k I think you would be everyones hero if you pulled it off. Instead of one big plugin, maybe you could do several smaller ones.
The one thing I can’t wrap my head around is login pages and profile pages. Having 2 different pages (integrated or not) is not only confusing to users it’s confusing to administrators. In a perfect world BB would handle all of this, but we know that’s not the case. So what to do? You can’t have a BB “login box” in WP, but BB should be their only profile page (that’s where they will be uploading avatars, checking PMs, etc.). So could you redirect WP login page to BB? If so how would you automatically redirect them back to the last visited blog page? I’m so confused I don’t even know how to write these questions intelligently. How do you have just one login page and just one profile page?
PS
I got the avatars working.
August 14, 2009 at 2:19 pm #76989Olaf Lederer
ParticipantI thought the multi CSS border has covered IE browsers too

…looks good in chrome and FF on Linux
August 14, 2009 at 2:15 pm #77159In reply to: tranfer posts from another forum
Olaf Lederer
ParticipantHi,
you need to check the old and the new table structure (use phpmyadmin) for this.
next you need to convert the old tables to the format of the new tables.
Learn from how bbpress will create the records inside the tables and import your old data this way.
I don’t think that there is a tutorial on how to do that (didn’t know that Joomla has a forum module)
August 14, 2009 at 10:36 am #67349In reply to: All setting use cache
Tomcraft1980
MemberIs setting up this code in bb-config.php still important fpr bb 1.02 as it became part of bb-settings-php?
$bb->load_options = true;kind regards
Tom
August 14, 2009 at 3:40 am #77054In reply to: bbpress and memcache?
frooyo
MemberInstead of memcache, output caching might be a better option for non-logged in user. Something like WordPress’ SuperCache plugin.
More information can be found about this discussion here:
https://bbpress.org/forums/topic/covert-wp-super-cache-plug-in-for-bbpress#post-37072
Essentially, a lot of people would love the SuperCache plugin to be converted for use with bbPress … but no one has yet committed to performing the work needed to convert the plugin
-
AuthorSearch Results