Skip to:
Content
Pages
Categories
Search
Top
Bottom

Forum Replies Created

Viewing 25 replies - 1 through 25 (of 488 total)
  • Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Do you have bbPress plugin installed. If not, please install “bbPress” plugin and on its settings page, enable forums for BuddyPress. That will do it.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    The above code at the moment is not doing anything.
    I will start by explaining.

    The action “bp_after_message_thread_content” is called on single thread page where all messages of a thread(conversation between two people) are listed. It happens at the bottom of that page.

    In your function, you are populating the variable $thread with current thread and all its messages

    The code

    
    
    end($thread->messages)
    

    Forwards the array pointer to the last message and on that object you are accessing the “id”. So it returns the id of the last message. You should store that in some variable and do some further processing to make it more meaningful.

    Hope that helps.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Is your BuddyPress Network active? Deactivate and activate it only on the subsite. That should fix it.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Also, I will suggest using the above plugin in combination with BuddyBlog for a better experience.
    http://buddydev.com/plugins/buddyblog/

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    This may be considered as bug in current behavior. Currently, BuddyPress only looks for published pages when looking for component associated pages in bp_core_get_directory_pages().

    You may want to report it on the BuddyPress trac and the core developers and weigh their opinions on this.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi George,
    No, There is no API function to fetch field group id from field group name and you will need to write your own sql query for the purpose.

    Also, In your example you have passed the profile_group_id to the bp_get_profile_field_data. Please note, it does not take that as a valid argument. It only accepts user_id and field. group id is not required for fetching field data.

    Now, If we forget about the group name API and come to the original requirement, Do you plan to fetch the data for multiple users(In loop) or just once/twice.

    For fetching data, these two functions work

    You can either use

    
    $data = xprofile_get_field_data( $field, $user_id = 0, $multi_format = 'array' )
    
    

    where $field is field id or name( If you know the id, It will fetch from any group, Name has the issue)

    or as you specified

    
    $data = bp_get_profile_field_data( array(
    	'user_id'	=> $user_id,
    	'field_id'	=> $field
    	
    ) );
    
    

    The xprofile data APIs do not allow passing group in general. You either pass a field id or name.

    The problem will happen when multiple fields have same name. In that case, the first field with the name matches if you use the above functions.

    Another point, In both the cases, There is no group arguement and if you use field name, that will need one extra query(field id should be preferred if the id is known).

    Honestly speaking, It is ok to use it one or 2 time on page but avoid using it inside the loop. If you plan to use it inside the loop, you should try to first fetch the xprofile data and cache and then use any of these functions. One way to cache will be by calling

    
    
    BP_XProfile_ProfileData::get_value_byid( $field_id, $user_ids )
    

    Where $field_id is the id of field(not name) and $user_ids is one or more user ids.

    Hope that helps.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    You need to override this js function

    
     bp_legacy_theme_hide_comments(
    

    There are many ways to do it. You can either put the following code in your theme’s js file

    
    function bp_legacy_theme_hide_comments() {
    	var comments_divs = jq('div.activity-comments'),
    		parent_li, comment_lis, comment_count;
    	
    		var max_show = 2;
    	
    	if ( !comments_divs.length ) {
    		return false;
    	}
    
    	comments_divs.each( function() {
    		if ( jq(this).children('ul').children('li').length < max_show ) {
    			return;
    		}
    
    		comments_div = jq(this);
    		parent_li = comments_div.parents('#activity-stream > li');
    		comment_lis = jq(this).children('ul').children('li');
    		comment_count = ' ';
    
    		if ( jq('#' + parent_li.attr('id') + ' a.acomment-reply span').length ) {
    			comment_count = jq('#' + parent_li.attr('id') + ' a.acomment-reply span').html();
    		}
    
    		comment_lis.each( function(i) {
    			/* Show the latest 5 root comments */
    			if ( i < comment_lis.length - max_show ) {
    				jq(this).addClass('hidden');
    				jq(this).toggle();
    
    				if ( !i ) {
    					jq(this).before( '<li class="show-all"><a href="#' + parent_li.attr('id') + '/show-all/" title="' + BP_DTheme.show_all_comments + '">' + BP_DTheme.show_x_comments.replace( '%d', comment_count ) + '</a></li>' );
    				}
    			}
    		});
    
    	});
    }
    
    

    or you can put the following php code in your bp-custom.php/functions.php

    
    
    function buddydev_override_legacy_theme_hide_comments_js() {
    	?>
    <script type="text/javascript">
    function bp_legacy_theme_hide_comments() {
    	var comments_divs = jq('div.activity-comments'),
    		parent_li, comment_lis, comment_count;
    	
    		var max_show = 2;
    	
    	if ( !comments_divs.length ) {
    		return false;
    	}
    
    	comments_divs.each( function() {
    		if ( jq(this).children('ul').children('li').length < max_show ) {
    			return;
    		}
    
    		comments_div = jq(this);
    		parent_li = comments_div.parents('#activity-stream > li');
    		comment_lis = jq(this).children('ul').children('li');
    		comment_count = ' ';
    
    		if ( jq('#' + parent_li.attr('id') + ' a.acomment-reply span').length ) {
    			comment_count = jq('#' + parent_li.attr('id') + ' a.acomment-reply span').html();
    		}
    
    		comment_lis.each( function(i) {
    			/* Show the latest 5 root comments */
    			if ( i < comment_lis.length - max_show ) {
    				jq(this).addClass('hidden');
    				jq(this).toggle();
    
    				if ( !i ) {
    					jq(this).before( '<li class="show-all"><a href="#' + parent_li.attr('id') + '/show-all/" title="' + BP_DTheme.show_all_comments + '">' + BP_DTheme.show_x_comments.replace( '%d', comment_count ) + '</a></li>' );
    				}
    			}
    		});
    
    	});
    }
    
    </script>
    
    <?php
    	
    }
    add_action( 'bp_after_activity_loop', 'buddydev_override_legacy_theme_hide_comments_js' );
    
    

    Both will work. you can change the max_show to any value. Hope that helps.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    Since I got this same question in my email today. Assuming that it was you or a coincidence, I will post the code here as well for everyone else.

    1. BuddyPress Needs the field_1, so you can not delete it. That gives us a solution, we can hide it using css/js and set it’s value to the value of username.

    There are two possible approaches.
    The first step is use following in css

    
    div.field_1{
    display:none;
    }
    
    

    That will hide the input box on the form.

    Now, we can update it using the js or PHP. I will post the simple solution using js

    You can put the following code in your bp-custom.php or functions.php

    
    function buddydev_disable_firstname() {
    	?>
    <script type="text/javascript">
    	jQuery(document).ready(function(){
    
    	var jq=jQuery;
    
    	jq("#signup_username").on("blur",function(){
    
    	jq("#field_1").val(jq("#signup_username").val());
    
    	});
    
    	});
    </script>
    <?php
    }
    add_action( 'bp_after_register_page', 'buddydev_disable_firstname');
    
    

    That should do it.

    There is another pure php solution by settings $_POST[‘field_1’] to the other value but I will leave that for others to figure out 🙂

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    No problem. Thank you for confirming 🙂

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    No problem. The bbPress encodes the code.It is always better to avoid the code in email and copy paste from forum itself.

    Is the issue fixed now?

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    sorry about the trouble. Please make sure that you put that line in php block. Either before the closing ‘?>’ or after the ‘<?php’ tag.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    If your site is not loading, there can be various reasons. One of the simple reasons can be php version. Most of these plugin need php 5.3 or above( 3rd party libraries using namespaces etc make it a requirement).

    What is your php version? Also, It will be easier to help if you can enable “WP_DEBUG” and then post the actual error.

    I just saw that plugin is looking for maintainer at the moment, so I will recommend looking for well maintained plugins.

    One of the plugins I have seen a lot of my community members use is
    https://wordpress.org/plugins/oa-social-login/

    So, may be you can give that a try too.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    For that purpose, please put the following line too in your bp-custom.php

    
    add_filter( 'bp_core_fetch_avatar_no_grav', '__return_true' );
    
    

    That forces BuddyPress to avoid using gravatar and use local avatars for default(when no avatar is uploaded).

    Hope that helps

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    No problem. Glad to help 🙂

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi Daryll,
    Your best bet is creating a new xprofile field type and extend select filed type.

    It is a code I had written around a year ago for some client, but this may point you into the direction. It is for country list.

    https://gist.github.com/sbrajesh/5b3f4fd44c9c91b3ed3e

    All you need to do is extend the select field and override 3 methods

    is_valid(),
    display_filter()
    and edit_field_options_html()

    I did a little more as I wanted the same field type to allow single/multi selection both.

    Hope that helps.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi @buckybeever,
    You need to change one line

    change this

    
    'show_for_displayed_user' => true,
    
    

    to this

    
    'show_for_displayed_user' => bp_is_my_profile() || is_super_admin(),
    
    

    That will do it. Hope it helps.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Sorry if I am late here.
    I just tested the plugin today with BuddyPress 2.2.3.1 and It is working. I have updated a new version too that cleans it a little bit.

    Hope that helps.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    Is your theme BuddyPress compatible, if yes, Please check if there is ‘members/single/member-header.php or buddypress/members/single/member-header.php

    If yes, you can put the code anywhere in that file. If your theme does not have this file, It can be added via ‘bp_member_header_actions’ too like this

    
    add_action('bp_member_header_actions', 'devb_show_displayed_user_email' );
    

    which you can put in the bp-custom.php too.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi Christian,
    no problem. If you decide to not use it again, you can use my plugin BuddyPress notification widget in that case.

    About the notice plugin,
    I will write the code tonight and put on github and link here.
    Thanks
    Brajesh

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi Christian,
    in case of limited no. of trusted users, we can add the capability ‘bp_moderate’. Still, I will say it is a flawed approach and insecure. Please do not try that.

    Can you please let me the answers of the following questions and may be I can put some code:-

    1. By notice, do you want to show the users who created this notice?
    2. I assume there can be more than one notice at a time?
    3. Should all users be mailed on notice(also a local notification be generated for each user)
    4. Is there anything else you want to be part of this notice feature?

    Thanks

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi Christian,
    If you want to allow it for all users using the inbuilt notice my not be the best option as it needs bp_moderate capability and I will strongly recommend against giving everyone the ‘bp_moderate’ capability.

    If you are comfortable with the code, I will suggest look at the bp-messages component and check now the notices are handled. With some slight modification, you can achieve the same.

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    You are right about creating a home.php or front-page file and putting the content from activity/index.php

    Here are a couple of things that I may suggest to improve it.
    Since you are using the code (which is part of bp-legacy template and most theme include that), you activity/index.php does not have header/footer.
    The easy way is.
    1. copy the page.php from your theme and rename it to home.php
    2. Now look for the section where you see the loop code( something like while(have_posts()) ..etc, replace only that section of code with the the content of actvity/index.php or you can put this line

    
    <?php bp_get_template_part( 'activity/index' ); ?>
    

    It will include the activity loop inside your home page.

    You may want to look for the div/classes that is generated for your post. If you can inject that, it should look fine(as your theme supports bp and they should have the css.

    If it does not work, please post the content of your homepage on pastebin and I will modify it for you 🙂

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi Christian,
    There is one functionality in BuddyPress that allows it. You can see the feature as site wide notice(Mark a message as notice).

    The problem is currently, only a user with the capability ‘bp_moderate’ can send the notice. Do you want to allow this notification feature for all users or just selected few?

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Thank you for the ticket @mercime 🙂

    Profile photo of Brajesh Singh
    Brajesh Singh
    Participant

    @sbrajesh

    Hi,
    the problem is that currently the pagination links are broken.
    for example if you put the page number manually like this
    https://buddypress.org/extend/plugins/?ppage=5
    It will work. After the second page, the pagination is broken .

    I am not sure if the moderators, developers are aware.

Viewing 25 replies - 1 through 25 (of 488 total)
Skip to toolbar