Hi,
I have a strange behaviour or bug on a private forum.
On the same computer...
1° in Firefox I have page /participant/maxgarin/subscriptions open. This user has one forum-topic subscription "Envoi à tous" and wants to add the topic "Agriculture et élevage"
2° When submitting the "Agriculture et élevage" topic is not added to the user's maxgarin list, BUT TO ADMIN ?!
3° in Brave where admin is logged I have on /participant/{admin}/subscriptions page the forum topic added by user maxgarin (see attached JPG)
This is really odd. User subscriptions on page /participant/{user}/subscriptions are set to the
/participant/{admin}/subscriptions.
I checked the wpforo_subscribes SQL table and confirms the subscription transfer from user to admin.
Can you please help me trace and fix the problem ?
thank you
Additionnal information...
The subscription submission form "wpf_sbs_form" contains a hidden field "wpforo[userid]" with value = 1 (this is ADMIN). It should be 7 for user "maxgarin" (see JPG test with another user). This explains why ADMIN is getting the user subscription.
Now why is the user ID getting lost when displaying page : /participant/{user}/subscriptions and falls back to 1 ?
The Wordpress login cookies are correct :
- domain : federation-francaise-de-geobiologie.org
- name : wordpress_logged_in_7e3863606bc70e6f2e98232e1eba9c04
- value : maxgarin%7C1671300294%7CQaO5vbcmAIgWltPeSgDYThJUY6iwg04itakB1GPHZTK%7C8d5d9b71952dbc99616393cf0474c6ee605ef6dd273475363f59a9f33985dea6
any idea ?
OK, I found the problem and patched
wpforo/modules/subscriptions/classes/Template.php
Same behaviour on PHP 7.4 and PHP 8.1 with wpForo 2.1.1 and Wordpress 6.1.1
On line 32 in Template.php => $userid is assigned to 0
public function manager_form( $userid = 0 ) {
In my case however $userid is an ARRAY() with the following values being connected as "maxgarin" and the default value 0 is not taken.
userid[0] = Array val[subid] = 93 val[itemid] = 8 val[type] = forum-topic val[confirmkey] = 1d989ced9d29275b5185ea66f171ac7e val[userid] = 7 val[active] = 1 val[user_name] = val[user_email] =
On line 43 we have
$userid = intval( $userid );
But intval( array() ) returns 1 if not empty => which is the ADMIN userid in my case
I patched this line and changed it to
$userid = (is_array($userid)) ? 0 : intval( $userid );
And the userid is retrieved correctly and is 7 (in this example) and this solves the problem.
Does this makes sense to you ? Will you include the patch in the next wpForo release ?
thank you