Search Results for 'buddypress'
-
Search Results
-
I had an issue with a client site that the BP team may want to look into, in the event that it is affecting more sites than just mine.
The issue: Running the latest version of BuddyPress (10.2), I had a client site and server that were seeing spikes to 100% CPU and high RAM usage — but only when a logged-in user opened the WordPress media library (/wp-admin/upload.php).
My hosting support first told me it was a plugin error, then I was told it was a theme error. But we were unable to find any evidence of this. I cloned the live site, deactivated all plugins and switched to a default WP theme, and the issue still occurred.
There were no related items in the Apache or Nginx error logs, but the PHP access log fills with lines like this, seemingly for every media file:
(server IP) – [15/Apr/2022:15:57:37 +0000] “GET /index.php?bp-attachment=13109/NorthCrawford-300×225.jpg” 301 0 – 798 14702 0.648 8388608 9.27% 3.09% “/?bp-attachment=13109/NorthCrawford-300×225.jpg”
The solution: This is what I received from my hosting support:
The issue is BuddyPress created htaccess that redirects all wp-content/uploads/bp-attachments/ to ?bp_attachments= URL. The redirects spawn heaps of apache and php-fpm which also cause the issue . They created this sample htaccess found on the directory below
/public_html/wp-content/uploads/bp-attachments# cat .htaccess
RewriteEngine On
RewriteBase /
RewriteRule (.+) ?bp-attachment=$1 [R=302,NC]The htaccess has been renamed so, when you load medias, it should no longer reach 100%
The solution was to take the .htaccess file out of the equation by renaming it, which is only a temporary fix. I presume this file would be overwritten upon the next BP update?
If that’s the case, how would I keep this from happening, aside from renaming the offending .htaccess file each time there is a BP update?
Wordpress v. 5.9.3
Buddypress v. 10.2.0
Theme. BuddyXIn Private Messages – the message body part ‘shows’ at the top that you can attach a file or a link,
the link option works, but when you click on the image attachment, it gives a popup that asks for the ‘source’ of the image. It doesn’t open a normal file explorer window to select the image.
Please, how do I FIX this?What I do:
I create the ability to edit the profile of a specific user by another specific userWhat I’ve done:
Added filter for bp_core_can_edit_settings which returns truebut i also need to be able to edit custom fields
Question: how to redefine this line, because it requires bp_moderate, which I don’t want to give normal users even for a while
if ( ! bp_is_my_profile() && ! bp_current_user_can( 'bp_moderate' ) ) { return false; }This line is in the file “plugins\buddypress\bp-xprofile\screens\edit.php”
I use gravity forms to create a new user from a groups tab and assign them to a group, based on the group that the group admin is adding them from. This was working just fine in BuddyPress version 8.0 but since upgrading to 10 it is no longer working. What am I missing?
/** * Add member form handler. This form is currently located under the Group Information tab */ add_action( 'gform_after_submission', 'add_member_gform_handle', 10, 2 ); function add_member_gform_handle( $entry, $form ) { if ( $form['title'] === 'Add Member' ) { $fields = $form['fields']; $first_name = rgar( $entry, '1' ); $last_name = rgar( $entry, '2' ); $login = rgar( $entry, '3' ); $password = rgar( $entry, '4' ); $email = rgar( $entry, '5' ); $group_id = rgar( $entry, '6' ); $role = rgar( $entry, '11' ); $notification = rgar( $entry, '9.1' ); $birthdate = rgar( $entry, '10' ); $userdata = array( 'user_login' => $login, 'user_pass' => $password, ); if ( ! empty( $first_name ) ) { $userdata['first_name'] = $first_name; } if ( ! empty( $last_name ) ) { $userdata['last_name'] = $last_name; } if ( ! empty( $email ) ) { $userdata['user_email'] = $email; } if ( ! empty( $role ) ) { $userdata['role'] = $role; } // Create a new user $new_user_id = wp_insert_user( $userdata ); // GFCommon::log_debug( __METHOD__ . '(): form => ' . print_r( $birthdate, true ) ); if ( ! is_wp_error( $new_user_id ) ) { groups_join_group( $group_id, $new_user_id ); // Make the user displayed as a staff on a clubhouse page if ( $role === 'staff' ) { $group_ids = groups_get_user_groups( $new_user_id ); $group = groups_get_group( array( 'group_id' => $group_ids['groups'][0]) ); $group_id = $group->id; groups_promote_member( $new_user_id, $group_id, 'admin' ); } else { groups_demote_member( $new_user_id, $group_id ); } if ( ! empty( $notification ) ) { tml_send_new_user_notifications( $new_user_id, 'both' ); } if ( ! empty( $birthdate ) ) { $date = DateTime::createFromFormat('Y-m-d', $birthdate); $date = $date->format('Ymd'); update_field('user_birthdate', $date, 'user_' . $new_user_id); } } // Delete form entry // GFAPI::delete_entry( $entry['id'] ); } } /** * Add Member form validation */ add_filter( "gform_validation_$clubnet_add_member_form_id", 'add_member_form_validation' ); function add_member_form_validation( $validation_result ) { $form = $validation_result['form']; $login = rgpost( 'input_3' ); $email = rgpost( 'input_5' ); $send_notificaton = rgpost( 'input_9_1' ); if ( ! empty( $login ) && get_user_by( 'login', $login ) ) { $validation_result['is_valid'] = false; //finding Field with ID and marking it as failed validation foreach( $form['fields'] as &$field ) { if ( $field->id == '3' ) { $field->failed_validation = true; $field->validation_message = 'The user with this login already exists.'; break; } } // foreach } if ( ! empty( $email ) && get_user_by( 'email', $email ) ) { $validation_result['is_valid'] = false; //finding Field with ID and marking it as failed validation foreach( $form['fields'] as &$field ) { if ( $field->id == '5' ) { $field->failed_validation = true; $field->validation_message = 'The user with this email already exists.'; break; } } // foreach } // GFCommon::log_debug( 'VALIDATION' . __METHOD__ . '(): form => ' . print_r( 'Empty', true ) ); // Email is required if we requested to send a email about user's account if ( ! empty( $send_notificaton ) && empty( $email ) ) { $validation_result['is_valid'] = false; //finding Field with ID and marking it as failed validation foreach( $form['fields'] as &$field ) { if ( $field->id == '5' ) { $field->failed_validation = true; $field->validation_message = 'Email is required since you requested to send an email.'; break; } } // foreach } //Assign modified $form object back to the validation result $validation_result['form'] = $form; return $validation_result; } /** * Role field */ add_action( 'init', 'clubnet_add_role_field' ); function clubnet_add_role_field( $form ) { global $wp_roles; global $clubnet_add_member_form_id; $all_roles = $wp_roles->roles; // $editable_roles = apply_filters('editable_roles', $all_roles); // $roles_to_skip = array( 'administrator' ); $editable_roles = $all_roles; $roles_to_display = array( 'mentor', 'member', 'youth_leader', 'alumni', 'staff' ); $choices = array(); foreach ( $editable_roles as $role => $role_data ) { if ( ! in_array( $role, $roles_to_display ) ) { continue; } $choice = array( 'text' => $role_data['name'], 'value' => $role ); array_push( $choices, $choice ); } // Reorder to make member role first usort( $choices, function( $choice ) { if ( $choice['text'] === 'Member' ) { return -1; } return 1; } ); $form = GFAPI::get_form( $clubnet_add_member_form_id ); if ( ! $form ) { return; } $label = 'User Role'; $field_idx = -1; $field_id = -1; foreach ($form['fields'] as $idx => $field) { if ( $field->label === $label ) { $field_idx = $idx; $field_id = $field->id; } } if ( $field_idx === -1 ) { $field_id = GFFormsModel::get_next_field_id( $form['fields'] ); } $props = array( 'id' => $field_id, 'label' => $label, 'type' => 'select', 'choices' => $choices, ); if ( $field_idx === -1 ) { $field = GF_Fields::create( $props ); $form['fields'][] = $field; GFAPI::update_form( $form ); } else if ( $form['fields'][$field_idx]->choices !== $choices ) { $field = GF_Fields::create( $props ); $form['fields'][$field_idx] = $field; GFAPI::update_form( $form ); } }Hello
I have decided to add a bbpress forum to my buddypress site because it allows to sort, archive and retrieve easily threads. In fact, when a user posts a question in the “what’s new” text box in buddypress and when other users comment this post, the thread quickly diseappears under the newsfeed activity. So, it becomes impractical to retrieve this interesting thread later. That’s why I prefer to prevent the users from posting anything on the newsfeed page and to force them to create a forum topic to launch a discussion.
With a bbpress forum, the topics and the different forums allow to have a look easily on every topics created and it is very simple to search any type of topic with the search feature.
So, to get a perfect combination of Buddypress and Bbpress, I am trying to get the next features :
1. Disable the “Comment” button when a forum topic is displayed on the newsfeed = we can configure it in the buddypress general settings = OK.
2. I would like to allow the user to directly reply to the topic by clicking on the comment reply button. Actually, if he clicks on this button he just will be able to commment the activity. It would be great if by clicking he could reply to the topic.
The new link for the comment reply button would be the direct link to reply the topic.
I also would like to change “Comment” tab by “Reply” tab.
3. Hide the “what’s new” text box at the top of the newsfeed page = I did it with css/display=none. I have created instead a “new topic” button in a widget.
4. When a user creates a buddypress group, a forum should be automatically created with the same name as the group (the user can’t choose if he wants to create a forum or not). Is it possible to force that ?
5. When a user creates a new topic from a buddypress group forum, the “Create new topic” button should create a new topic directly in the group linked to the forum. Is it possible to force that ?
6. Once a new topic is created, when you push the “Submit” button, you should be linked to the newsfeed page to see how the topic you have just created is displayed on the newsfeed and not to the forum index page.
I hope you understand all what I mean with my poor english. I have contacted the theme’s author (BuddyX/Webcom design) but they answered they can not help me. Bbpress support advised me to post here.
Do you think it is possible to configure such features ?
Thanks a lot.
Fabien
Hi!
Trying to find the source of sudden weird lag on my large Buddypress website. I noticed this query running very frequently:# Time: 220408 21:41:46 # User@Host: [removed] @ localhost [] # Thread_id: 337208 Schema: [removed] QC_hit: No # Query_time: 1.645619 Lock_time: 0.000068 Rows_sent: 0 Rows_examined: 0 # Rows_affected: 0 Bytes_sent: 77 SET timestamp=1649454106; SELECT DISTINCT a.id FROM wp_bp_activity a WHERE ( ( ( a.component = 'groups' AND a.item_id IN ( 0 ) ) AND a.hide_sitewide = 0 ) ) AND a.is_spam = 0 AND a.type NOT IN ('activity_comment', 'last_activity') ORDER BY a.date_recorded DESC, a.id DESC LIMIT 0, 16;Query_time: 1.645619
It always results in nothing. So, where is it coming from and how can I stop it?
Any idea what function is triggering this, I’d be able to even edit the core file just to have it check “if certain params are true, don’t even run this query”I think it’s killing my site’s performance
Hello
I use the BuddyX theme. I have installed a BBpress forum.
I want to force the users to ask questions in the forum and to prevent them from posting comments on the newsfeed page.
In the buddypress settings, i have disabled the users’s ability to post comments.
Now, I would like to propose users so create new forum topics from the top newsfeed window : https://www.awesomescreenshot.com/image/25425875?key=c016bab1832426963f4c9b9655c974ee
Instead of the text “Quoi de neuf (french version ;)), I would like a text like : “Ask a new question by clicking here / here = a link to https://espace-organisateur.fr/forums/#new-post
Of course, the user would not have any other choice than clicking on the link. He could not write anything else in the window.Also, I would like to do the same in the activity tabs of the members pages profile.
Do you think this is possible ?
Thanks a lot for your help.
Fabien
Hello!
I have the Elearni template which has this buddypress plugin for signup among other options.
I want customers who want to register not to activate via email, but automatically.
Another option would be to disable this account activation but I don’t see any options within the plugin that allow me to do so.
How could I do this?
For our intranet, we use BuddyPress extended profiles as well as WPO365 to sync data from Microsoft active directory. We don’t allow users to edit their avatars or user information as everything is synced from Microsoft.
After the last update, our “Recently active users” widget is showing old (and sometimes no) avatar for users. When you click through to the profile however the newer images load correctly.
It almost looks like the avatars stored for BuddyPress are different from the BuddyPress extended profile avatar.
Is there a simple fix for this or do we need to stop using the recently active widget all together?
I am experiencing an issue with Smash Balloon YouTube Feed when loading more of the videos. If I disable BuddyPress the “Load More” button works normally.
When displaying the feed (say about 6 videos) there is a button to “Load More” below the videos. When the button is clicked a new browser tab will open and display in the url “about:blank#blocked”. When I go back to the website page, it does “Load More” however I need to prevent this new blank tab from opening.
Wordpress v. 5.9.2 with Olympus Theme
BuddyPress V. 10.2.0
Smash Balloon YouTube Feed V 1.4.4The output format for text returning from function bp-groups-bp_get_group_avatar_url appears to have changed between 9.2.0 and 10.0.0. The output used to produce a raw URL but now it produces
HTML.
I noticed the change when I tried to upgrade from 9.2.0 to 10.2.0. It breaks my code which was expecting the raw URL.
Was the output format changed intentionally?
It seems to me the name of the original function was accurate for raw URL, but the new version inadvertently switches the nature of the group avatar url function.
It would be nice to clarify whether the return format change for the bp_get_group_avatar_url was intentional or not. If it was intentional and there’s no plan to revert to the old function version then the work around for anyone who wishes to strip the raw url out of the img text is …
// Hack for Buddypress v10.0.0+
// Pull raw url from the fullHTML element
$group_image_url = bp_get_group_avatar_url( $group, 'full' );
preg_match('/<img(.*)src(.*)=(.*)"(.*)"/U', $group_image_url, $result);
$raw_image_url = array_pop($result);
It may be better to introduce a new function called bp_get_group_avatar_img which returns the img html and keep the original function, bp_get_group_avatar_url, returning the raw url.
Please advise on whether the change to the function bp_get_group_avatar_img in v10.0.0+ will remain permanent or whether there are plans to revert the function to the previous 9.2.0 behaviour.
My preference, if it makes sense, is to stick with the original 9.2.0 version, but I can adapt to the 10.0.0+ version if required. The raw url gives me more flexibility to code my preferred img element.
Thanks!
Hey, so i am trying to add a filter in the members search to only show the profiles that have a certain role in an Xprofile field, doing some research i came across the next code
if ( !defined( 'ABSPATH' ) ) exit; class BP_Loop_Filters { /** * Constructor */ public function __construct() { $this->setup_actions(); } private function setup_actions() { add_action( 'bp_members_directory_order_options', array( $this, 'random_order' ) ); if( bp_is_active( 'groups' ) ) add_action( 'bp_groups_directory_order_options', array( $this, 'random_order' ) ); if( is_multisite() && bp_is_active( 'blogs' ) ) add_action( 'bp_blogs_directory_order_options', array( $this, 'random_order' ) ); } public function random_order() { ?> <option value="random"><?php _e( 'Random', 'buddypress' ); ?></option> <?php } } function bp_loop_filters() { return new BP_Loop_Filters(); } add_action( 'bp_include', 'bp_loop_filters' );i tried adjusting it to call the Xprofile fields i want but it caused a complete error on the website, any help?