Search Results for 'bbpress'
-
Search Results
-
I have a client who wants to be able to disable the registration requirement for BBPress. In other words, have it completely open and work more like a threaded comment blog.
Has anyone done this? Any ideas?
(He’s ready to deal with the spam.)
I’m wondering if he would be better off using a threaded comment plugin in WP, and having pages with threaded comments rather than integrating bbPress….
E-mail subscription is one thing that most of my users miss. In trunk we have this built-in, but problem is that we can only have a link on which users could click to subscribe/unsubscribe and no checkboxes bellow post’s form or automatic subscription.
I inspected trunk to see how this could be solved and found that there aren’t any hooks that could be used. Only way is to copy existing functions used for subscription and editing them so that they could work as we want.
So I tried to follow this aproach and make function which would add checkboxes. I took inspiration from _ck_’s Subscribe to Topic plugin.
First thing, I wanted checkbox to show option depending on if user is already subscribed or not. By hacking function bb_user_subscribe_link I succeed in this. Here is a code:
function bb_user_subscribe_checkbox() {
global $topic, $bb_current_user, $bbdb, $bb;
if ( !bb_is_user_logged_in() )
return false;
$there = false;
if ( $term_id = $bbdb->get_var( “SELECT term_id FROM $bbdb->terms WHERE slug = ‘topic-$topic->topic_id'” ) ) {
$term_taxonomy_ids = $bbdb->get_col( “SELECT term_taxonomy_id FROM $bbdb->term_taxonomy WHERE term_id = $term_id AND taxonomy = ‘bb_subscribe'” );
$term_taxonomy_ids = join(‘,’, $term_taxonomy_ids );
$there = $bbdb->get_var( “SELECT object_id FROM $bbdb->term_relationships WHERE object_id = $bb_current_user->ID AND term_taxonomy_id IN ( $term_taxonomy_ids )” );
}
if ( $there )
echo ‘<label><input name=”subscription_checkbox” type=”checkbox” value=”remove” ‘ . checked_on_front(false, $there) . ‘>Remove my e-mail subscription for this thread</label>’;
else
echo ‘<label><input name=”subscription_checkbox” type=”checkbox” value=”add” ‘ . checked_on_front(false, $there) . ‘>Notify me of followup posts via e-mail</label>’;
}
function checked_on_front( $checked, $current) {
if ( $checked == $current)
return ‘ checked=”checked”‘;
}
add_action(‘edit_form’,’bb_user_subscribe_checkbox’,9);
add_action(‘post_form’,’bb_user_subscribe_checkbox’,9);
As I said above, this works. But problem is with function that should take value of checkbox and subscribe or unsubscribe user. I used code from file bb-includes/action.subscribe.php but without succes. Here is it:
function bb_checkbox_subscription_update($post_id=0) {
global $bbdb, $bb_current_user, $bb_post, $topic, $wp_taxonomy_object;
$bb_post=bb_get_post($post_id);
if (!empty($_REQUEST)) {
$checkbox_status = $_REQUEST;
if ( ‘add’ == $checkbox_status ) {
$tt_ids = $wp_taxonomy_object->set_object_terms( $bb_current_user->ID, ‘topic-‘ . $topic->topic_id, ‘bb_subscribe’, array( ‘append’ => true, ‘user_id’ => $bb_current_user->ID ) );
} elseif ( ‘remove’ == $checkbox_status ) {
// I hate this with the passion of a thousand suns
$term_id = $bbdb->get_var( “SELECT term_id FROM $bbdb->terms WHERE slug = ‘topic-$topic->topic_id'” );
$term_taxonomy_id = $bbdb->get_var( “SELECT term_taxonomy_id FROM $bbdb->term_taxonomy WHERE term_id = $term_id AND taxonomy = ‘bb_subscribe'” );
$bbdb->query( “DELETE FROM $bbdb->term_relationships WHERE object_id = $bb_current_user->ID AND term_taxonomy_id = $term_taxonomy_id” );
$bbdb->query( “DELETE FROM $bbdb->term_taxonomy WHERE term_id = $term_id AND taxonomy = ‘bb_subscribe'” );
}
}
}
add_action( ‘bb_insert_post’, ‘bb_checkbox_subscription_update’);
It does nothing. State of subscription of user is not changed but I also do not get any errors.
Is there any way to change this code so that it becomes useful?
Apart from above, after inspecting this code, I think that this could be solved much better, by making more functions and hooks which could be used by developers.
First, here is how subscription works. (links are to current revison, 2421).
In topic.php file of template, we call function bb_user_subscribe_link. This function is placed in bb-includes/funtions.templates.php and what it does is to show link with subscribe/unsubscribe action. Checking for state of subscription is done inside this function. Those links make GET request so in bb-load.php there is check for them which includes file bb-includes/action.subscribe.php. In this file there is function which adds values for subscription in database, based on request from link above, and finally redirects user to topic’s page.
Sending of notification is done via function bb_notify_subscribers in file bb-includes/functions.bb-posts.php. This function is called by action bb_new_post in bb-includes/default.bb-filters.php.
As you can see, we can’t use functions for this nor could we add hooks. My idea is following:
- splitting function bb_user_subscribe_link into one that does checking status of subscription for cuurent user, so that we can use it like in my example with checkboxes, and one which would only return link
- in bb-includes/action.subscribe.php (or in other functions file) make function that would do subscribing/unsubscribing in database so that it could be called on other places like in my example above; rest of file would be used as it now, with difference that we call function from last sentence
- in function bb_notify_subscribers add hook before sending e-mail so that we can, for example, have plugin which sends only one meesage to user, untill he visit topic again (as in other forum software, requested here)
- add bb_user_subscribe_link inside if function which checks if e-mail subscription is turned on globaly by administrator (there are forum owners who don’t want this feature for any of reasons; would be turned on by default)
What are others thinking about this, especialy those involved with development (commiters, patch-makers)? Could those solutions be made and included? I think that there isn’t much work for it because it is only hacking of existing code.
I am looking at different forums to use and I like the idea of bbpress because all of my web development is within wordpress. I like the idea of being able to integrate the forum with wordpress. I installed simple:press just to take a look at it and I like how the forum is on the wordpress platform because it uses use my existing wordpress theme with all of my widgets and site navigation already there. Now that I hear bbpress is going to do the same, I am leaning toward going with bbpress instead of simple:press since I am guessing long term that is where the most development and compatibility will be. For example, bbpress appears to integrate with buddyppress and mingle but simple:press does not.
What I would like to know is, if I do decide to go with bbpress, how should I set bbpress up now before it becomes a plugin to make the transition better when it does become a plugin?
Should I set it up to use my wordpress database or give bbpress its own database? I am not sure if the separate database will be an option after it is a plugin.
Or is there a way to set it up bbpress now as a plugin?
Is it simple to import simple:press data to bbpress? If so I may just use simple:press for now until bbpress becomes a plugin and gets any bugs straightened out and then import the forum to bbpress.
I would also like to hear any comments about my reasoning here.
Topic: Timezone support
Is there a way to get post dates in the support forums (or any bbPress forum) to show the time in my time zone?