Er, okay. I don’t follow. Are you making one then?
Or are you just rubbishing my idea of porting one of hundreds of existing php polling programs (a dozen for wordpress alone) to save weeks of development and bug squashing?
bbPress needs some serious options fast if it’s going to hit critical mass and attract additional quality programmers. I just want to see a decent polling feature added as soon as reasonable possible.
Yes but how would i use the editing edit post template without having to recreate a post editor, etc.
Oh wait, you mean to create it as the 2nd message when a new topic is created. Old topics would not be able to have a wiki post.
Hmm.
If only bbpress actually obeyed post_position, there would be so many nice tricks that would be so easy to do. Argh.
Thanks for posting it here anyway
bugs go on trac for fixing, and this particular one’s already been addressed. I can’t tell if it went into the latest version (.8.2.1) or not but it should be fixed in trunk.
Hi, the error you are reporting appears to be a problem with the bbPress core code, specifically the user ‘capabilities’ class.
Have I understood this correct:
– You are using the latest bbPress version (0.8.2.1) ?
– The error only appeared AFTER you upgraded to the latest Avatar Upload plugin to version (0.6.2)?
– Does the error appear on EVERY page, or just the Avatar Upload template in the profile area?
Ah I totally forgot I’ve got visitor tracking which adds some calls but doesn’t explain why it’s more than a dozen calls by design.
If anyone’s interested, I’ve ported the “query diagnostics” plugin from wordpress so you can see each mysql call used, hidden as a report at the end of each page (for administrators).
<?php
/*
Plugin Name: bb-benchmark
Plugin URI: http://CKon.WordPress.com
Version: 0.10
Description: Prints simple benchmarks and mysql diagnostics, hidden in page footers.
based on Jerome Lavigne's Query Diagnostics for WordPress http://vapourtrails.ca/wp-plugins
Author: _ck_
Author URI: http://CKon.WordPress.com
*/
/* INSTRUCTIONS:
1. add this line to your bbpress config.php file: @define('SAVEQUERIES', true);
2. install & activate plugin
3. do a "view source" on any bbpress page to see hidden results at bottom
*/
function bb_benchmark_output() {
if (bb_current_user_can( 'administrate' ) ) :
if (SAVEQUERIES) :
global $bbdb;
echo "<!-- n === benchmark & query results === n ";
while($qposition < $bbdb->num_queries){
$qsubtime=$bbdb->queries[$qposition][1];
if ($qsubtime>$qmaxtime) {$qmaxtime=$qsubtime;$qmaxquery=$bbdb->queries[$qposition][0];}
$qtotal += $qsubtime;
$qposition++;
}
$timer_stop=bb_timer_stop(0);
echo @shell_exec("uptime")."n";
echo "query count: ".$bbdb->num_queries." nn";
echo "total query time: ".round($qtotal,4)." seconds nn";
echo "total page time: ".round($timer_stop,4)." seconds.nn";
echo "page render difference: ".(round($timer_stop-$qtotal,4))." seconds nn";
echo "slowest call was: ".$qmaxquery."n at ".round($qmaxtime,4)." seconds nn";
if (phpversion() >5.0 && function_exists(memory_get_peak_usage()) && function_exists(memory_get_usage())) {
echo "nn === memory usage === n";
echo "peak memory ".memory_get_peak_usage()." nn";
echo "total memory ".memory_get_usage()." nn";
}
// echo "nn === resource usage === n";
// print_r (getrusage());
echo "nn === mysql queries used === n";
print_r($bbdb->queries);
echo "-->";
endif;
endif;
}
add_action('bb_foot', 'bb_benchmark_output');
?>
If it makes you feel any better, wordpress doesn’t deal with it well either.
I have to trick it into enforcing trailing slashes like this:
RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_URI} !..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1/ [R=301,L,QSA]
and that doesn’t even work half the time depending on what other htaccess trickery I’ve got going on
But I notice if I have slugs turned on in bbpress, it will remove the trailing slash always. If I have slugs turned off, it won’t tolerate a trailing slash at all and will 404
I did manage to get the topmost rss feed to tolerate slash or not using this obvious mod
RewriteRule ^rss(/|)$ /forums/rss.php [L,QSA]
One thing that is important to do in bbpress vs how it’s typically done in wordpress, is not re-use/re-load the bbpress core engine if there is a redirect (which doubles the mysql calls) but to try to do it through htaccess
Can anyone tell me what the standard number of queries for the front page are on a default install of bbpress?
I think mine are high because of my template hack for the latest reply link. (added: nope, tried removing it and no query reduction)
There has to be a way to cache that and reduce the number of calls by pre-fetching all the links for all the topics to be listed, instead of doing one call at a time…
You know how some forums have a post at or near the top of each thread that can be edited by any member to share collective info?
What do you think would be the best approach to implimenting that in bbpress?
Maybe create a new post in the topic id and push the other post id’s down and affect the timestamp so bbpress shows it on top?
Or should it be a seperate table that is inserted with the topic summary at the top of each page?
The tricky part is getting it to display and be editable by all users.
Well I don’t like to re-invent the wheel if it’s been done.
Many times there are lots of little things you don’t think about when you try to build something from scratch vs convert a program that’s had years of development and on it’s 3rd generation.
It’s far enough work at times to make things work with bbpress. I’ve already spent half a dozen hours this month tracking down subtle bugs in other people’s plugins.
But if you want to try to make one from scratch I’ll do what I can though I am not a professional programmer by any means.
Private messaging doesn’t show up because there is nothing in the trunk. There are only tags. If the author just copies the latest tagged version to the trunk then it will show up too.
@louisedade
That’s always going to be a problem. I haven’t looked closely at all plugins, but I do find that a lot of those that require extra fiddling in templates and what-not don’t actually need to work that way. They often just aren’t taking advantage of the various API hooks a lot of the time. Perhaps one like your avatar plugin that has to create folders etc. could do so using a post-install script, maybe even one that is triggered from the plugin’s admin page?
I’m not sure if this is a bug, or just something I have wrong, but my husband noticed it right away. I missed it even though I’ve been working with bbPress for several weeks and have installed it on three different sites! LOL
Anyhow, it’s a relatively minor issue, but has anyone seen this?
When a user registers, the success message reads “Your registration as was successful…”. I thought it was a simple typo, but when I looked at the code it goes like this:
<?php printf(__('Your registration as <strong>%s</strong> was successful. Within a few minutes you should receive an email with your password.'), $user_login) ?>
BTW, I have the same result when I register on this support forum. I think the main issue is that the variable $user_login
, created in register.php, is no longer available after bb_load_template( 'register-success.php' );
.
Does anyone know if there is a variable containing this info? Since the user is not logged in at that time, I can’t use any of the current user info. As I said, this is quite minor – the success message would be almost as good without the user login ID in there.
eh, sorry I was trying to say: “I’m not going to modify a production core”
yes, I’m not giong to modify a core
buh – do I misunderstand you? You just modified a core file. template-tags.php is as core as anything else.
But yes, submitting this as a feature request on trac I think is a good idea.
Hey all, I’m trying to commit a plugin I built and failing. Any help would be appreciated.
I’m using the command-line client, version 1.4.2. This is the sequence I’m doing:
> svn co http://plugins-svn.bbpress.org/textile/
bbpress-textile
A bbpress-textile/trunk
A bbpress-textile/branches
A bbpress-textile/tags
Checked out revision 506.
( finder: copy my files from the bbpress directory
I initially developed them in to bbpress-textile/trunk )
> cd bbpress-textile/trunk
> ls
readme.txt textile textile.php
> svn add *
A readme.txt
A textile
A textile/classTextile.php
A textile.php
> svn ci -m "Initial commit." --username egypturnash
--password [REDACTED]
Adding trunk/readme.txt
svn: Commit failed (details follow):
svn: CHECKOUT of '/!svn/ver/490/textile/trunk':
403 Forbidden (http://plugins-svn.bbpress.org)
…and then I’m left puzzled, since I’m not _trying_ to do a checkout. I’ve fiddled with subversion on my local machine, but never tried doing a remote commit with it. Any suggestions? I get the same error if I try doing it up in the main source-controlled directory.
(And yes, I did get the email saying my plugin hosting request has been approved. *grin*)
yay, now it works completely as a plugin without having to modify a template in several places! thank you.
it’s interesting, I’ve tried to change echo
output to:
echo apply_filters('post_time', _bb_time_function_return( $time, $args ));
but that gave me post time in the following format: 2007-07-19 00:00:00
I would never get it myself that I should apply_filter() with a bogus (new, not used) tag (like ‘tpl_post_time’).
topic_class() is called in the template just before topics list displayed (* is a typo).
yes, I’m not giong to modify a core –> could possibly be a trouble on upgrade etc, I see.
much better would be to submit a patch to post_time()
i tried upgrading before and as you can imagine, it broke a lot my stuff so i had to go back down because i couldn’t figure out how to fix it all. and just so you know, i always upgrade my wordpress the day it comes out but this time i was a little out of my league with bbpress. i don’t waste people’s time, i’ve tried everything i know how.
The difference between actions and filters is unclear. In principle, filters are supposed to let you modify data and actions give you a chance to respond to events. This is reflected most in the fact that with a filter, you have to return some data which will be used instead of the data given to you in the first place. For actions, you don’t.
The syntax is this:
do_action('action_name', [$argument1, [$argument 2 [...]]]);
apply_filters('filter_name', [$argument1, [$argument 2 [...]]]);
I don’t recommend making changes to the core, of course. But if you have to, you would change the last line of topic_time() from this:
echo _bb_time_function_return( $time, $args );
to this:
echo apply_filters('template_time', _bb_time_function_return( $time, $args ));
and then change the line in the plugin further up to this:
add_filter('template_time', 'freshness_latestlink', 101);
taking out the //
that comment it out. Also, I’m not sure what topic_class*() is?
But yeah, don’t modify the core. Much better to stick to the template change from above.
> Probably better to say that not all functions have _hooks_ or _filters_, since pluggable refers to them being overwritable with another function (see bb-includes/pluggable.php). 
oh, yes right you are, thanks for pointing that out!
so, evidently post_time() just doesn’t have a hook to callback our custom filter. I failed to modify it by the proper way.
fel, could you please show me how it should be modified to have an apply_filter hook?
PS
couldn’t get the subtle difference between ‘filters’ and ‘actions’:
> *Actions* Your plugin can respond to the event by executing a PHP function, which might do one or more of the following:
…
Modify what is displayed in the browser screen (admin or end-user)
> *Filters* are functions that WordPress passes data through, at certain points in execution, just before taking some action with the data (such as adding it to the database or sending it to the browser screen).
which filter or action for instance could be added to the topic_class*() if any?
In principle it’s possible to do so by replacing all the template functions with custom functions that call a custom filter first, but it probably wouldn’t work out overall (not everyone would do it, plugins would still have to be written for forums without this, changes to the core would have to be replicated …).
Probably better to say that not all functions have _hooks_ or _filters_, since pluggable refers to them being overwritable with another function (see bb-includes/pluggable.php). 
You could request this in trac I suppose. Might be quite a decent feature in the future.
Hmmm, great idea, but it doesn’t cope with complex plugins very well yet.
For example, Avatar Upload and Private Messaging (which doesn’t even show up in the browser for some reason), where files need to be placed in different locations to the my-plugins folder.
Still, useful to know when new versions of plugins come out.
> You have to change the template
he-he that’s what I *had to* do initially. so, it appears not all the template_functions.php are ‘pluggable’.
could the actual template be remade in such a way that most functions it uses everywhere (like post_time) to be pluggable (like the post_title), or it’s too late on the template level and core post_time() has to be modified to allow formatting filters to be applied?
I have found and fixed a bug that was preventing the display of the newly uploaded avatar:
https://bbpress.org/plugins/topic/46/page/3?replies=48#post-400
(no more sleep(3) needed)
Ooh. Probably. Nice idea.
<?php
/*
Plugin Name: Freshlink
Description: Turns freshness into a link to the latest post
Author: tisme, fel64
*/
function freshness_latestlink( $fresh ) {
global $topic;
$felgtlpl = get_topic_last_post_link($topic->topic_id);
return "<a href='$felgtlpl'>$fresh</a>";
}
//add_filter('', 'freshness_latestlink', 101);
?>
Unfortunately there doesn’t seem to be a filter for it – only for modifying the actual time, not the text output. Since topic_time() also directly writes to the HTML, you can’t modify it first. You have to change the template, from
<?php topic_time(); ?>
to
<?php echo freshness_latestlink( get_topic_time() ); ?>
oh, implementing this as a plugin even cooler, thank you!
is it possible modify it by a similar way just a little bit, so that “Topic Freshness” (topic_time() ?) would return a hyper-link to the topic_last_post_link()?