sweet, thanks.
now the only one i’m getting hung up on is the “add new topic” page because the page url is http://www.example.com/bbpress/?new=1 and i can’t see which page that actually is referring to (i can usually see something like “/topic.php?id=35&page&replies=2” in the url to know what page to edit. i know the actual form itself resides in post-form.php but the <h2> i’m trying to alter isn’t actually in that file. same goes with the line breaks before it, they would go in the same place.
i can see where it is in the template-functions.php:
elseif ( is_bb_tag() || is_front() )
$h2 = __(‘Add New Topic’);
i simply can’t find it elsewhere in the code and i’m going mad and blind!
all your help is much appreciated.
ps: one more thing! do you know where would i change the “you must log in to post” text?
You do the same thing, but in different templates. If you look at the code, if $h2 is empty (ie. you didn’t tell it what to set) then it checks where it is – in a topic, in a forum, on a tag page or on the front page. But you can always tell it what to put instead. So if you want something else on a tag page, open the tag pages (tags.php, tag-single.php I think) in your template, look for <?php post_form(); ?> and change it to <?php post_form('No pizza for you!'); ?>. That’s a change that will happen only on the pages whose template you modified.
To add line breaks in HTML you use <br />. But I’m not sure you can have that inside an <h2> element. You can probably just put that right above the <?php post_form(); ?>, like so:
<br />
<br />
<?php post_form('Macaroni Cheese'); ?>
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
Hi,
I just upgraded to the last version and now my forum prints this message:
Warning: call_user_func_array() [function.call-user-func-array]: First argumented is expected to be a valid callback, 'stdClass::has_cap' was given in /home/ficcion/public_html/wp-includes/capabilities.php on line 454
Warning: call_user_func_array() [function.call-user-func-array]: First argumented is expected to be a valid callback, ‘stdClass::has_cap’ was given in /home/ficcion/public_html/wp-includes/capabilities.php on line 454
Warning: call_user_func_array() [function.call-user-func-array]: First argumented is expected to be a valid callback, ‘stdClass::has_cap’ was given in /home/ficcion/public_html/wp-includes/capabilities.php on line 454
Warning: call_user_func_array() [function.call-user-func-array]: First argumented is expected to be a valid callback, ‘stdClass::has_cap’ was given in /home/ficcion/public_html/wp-includes/capabilities.php on line 454
Sadly i don’t know what it is.
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.
Log In with the account you use here, then click New Ticket and describe the problem.
Cool. You’ll find it is an improvement. 
That’s really simple. Just change post_form() to post_form('Take some Pizza') or whatever else you want in there.
(The only reason I know this is I looked into template-functions.php and searched for post_form, then saw this:
function post_form( $h2 = '' ) {
which tells me it wants $h2 as an argument. $h2 is the <h2>text here</h2> as you can imagine.)
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 got the upgrade to work, thank you for your advice. and your php code worked great. now the only thing i need to know is, how do i change the word “reply” to “post a reply” without altering the template-functions.php? or any other predetermined text for that matter?
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.
Don’t worry about it 
I’m sorry I wasn’t clearer, that was raw PHP code. So that PHP code runs, you have to put <?php and ?> tags around it.
<?php
global $page, $topic;
$add = topic_pages_add();
$last_page = get_page_number( $topic->topic_posts + $add );
if( $page == $last_page ) {
print( '<h2 class="post-form">POST A REPLY</h2>' );
}
?>
This just worked for me in my template’s topic.php.
i didn’t know that 
i tried your code but i couldn’t get it to work because i didn’t fully understand it. i think i pieced it together wrong or left out something.
do i just paste the whole thing into topic.php? or some other file?
> 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?
It’s a very bad idea to edit template-functions.php or any other core files. What will you do when the next version comes? You should always put custom code in your template or plugin. Did my code not work in your template?
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.
> I don’t want to have to scroll through a wall of text looking for new paragraphs.
Daring Fireball says:
> Any decent text editor should make email-style quoting easy. For example, with BBEdit, you can make a selection and choose Increase Quote Level from the Text menu.
anyway, that doesn’t seem to be a big issue as folks usually quote just 1-2 para to mantain a coherent (connected) dialog on web forums (like we do now 
basically, most used syntax is just as on http://programming.reddit.com/help/commenting and it works pretty well out there, although they have a threaded *nested* comments, which eases communications alots since there’s no need in usual for web-forums perverted form of addressing like “@username: …” etc.
as I noted on misc web-boards its quite popular to use a JS to grab the quoted username. though, it doesn’t seem to me related to this kind of *text-formatting* plugins we’re discussing. as it is more like up to a higher-level of software — if it doesn’t have a “Reply” (to a particular post) function there’s nothing much can be done about it.
your plugin is working just fine. I guess its syntax rules will be enough for the most folks. the only thing is just the same as with that ‘Markdown PHP’ — I think it would be logical to have deal only with its (markdownifed
syntax _while editing a post_, not with HTML tags again — as it may produce some kind of schismo in non-savvy users minds 
once again, thanks for sharing!
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() ); ?>
> I guess ‘>’ in front of every _paragraph_.
It’s still annoying somewhat annoying
. I don’t want to have to scroll through a wall of text looking for new paragraphs. Perhaps >>Quote …. << ? What would also be interesting is the ability to add the name of who you’re quoting. Name>>Quote<< or “Name blah”>>Quote<<? Although that’s starting to get a bit artificial.
It is an option to make this plugin rewrite the posts as they’re being read, but I was worried about the extra server load (although it’s pretty light code) and it’s playing pretty badly with the Allow Images plugin.
I don’t want to keep hosting it on my server, so I’ll take this down the next time I think about it. http://www.loinhead.net/files/felise
http://www.loinhead.net/files/felise.php is a working, non-bb copy of the script so you can test it (note that >>Name[post#] doesn’t work). Ignore the sucky name, I hate naming things and needed something just temporarily