BuddyPress Moderation is ready and I tagged a stable release.
It also include and how-to on integration with other plugins/content-types, read more on bp.org
BuddyPress Moderation is ready and I tagged a stable release.
It also include and how-to on integration with other plugins/content-types, read more on bp.org
I’m glad to inform you that all GSOC features have been merged in BP Media and are ready to test, read more on bp.org.
Those are not fresh news so you could already know it, I write them here for who don’t and for leaving a bunch of useful links in a convenient place ![]()
If you are not interested in following BP Media development you can stop reading here, you only need to know that:
Instead if you are interested in BP Media development you’ll be happy to know that this choice will improve interaction with community and it’s involvement in the project development, in addition to ease collaboration between committers.
What you’ll find on google code:
For the next two weeks this will be my workspace. I’m writing you from Ischia, a nice vulcanic island near Naples.

As you see I have everything I need to keep the work going, 3G connection isn’t that bad (at least for what I have to do, of course I’ll not waste my time surfing youtube videos here). I also hope that some relax, a good panorama and cold drinks will boost my productivity in working time.
Just wanted to share my good mood, from tomorrow I’ll be working to get bp-album stable out and to adding multimedia capabilities to it.
Here we have a draft of how I think to make BuddyPress Moderation work and its datamodel.
User-generated contents in a buddypress community are not limited to few content types but can be virtually anything, so this plugin needs to be able differentiate them and have a function to add custom content during page loading (before page is generated).
Each component that lets users generate contents differentiate them with an ID (actually there could be 2 ids, i.e. blog posts in a network install need blog id and post id to be identified); bp-moderation can use those ids to distinguish among contents of the same type, but it also need to store item_type.
An activity is a content? Actually it isn’t. An activity is a pointer to a content, that could be a status, a blog/forum post, etc…
In a single content page or in a specified content type loop, the function that generates the report link is hooked to a content type specific hook, so it’s easy to know which is the content type.
Instead the activity loop displays a great number of different content types, so it’s necessary to have a map that relates activities ‘type’ to bp-moderation ‘item_type’ (each item_type could have more than one activity type mapped to it).
Not all activities correspond to a user-generated content, there are also action activities, for example a new user, a new friendship, a user that become member of a group; imho does not make sense to flag actions as inappropriate, so I’ll not create content types mapped to action activities, but it’s possible to do it as with any other custom content type.
This is the draft of the database schema. Each content can be flagged from different user more than one time, so two tables are needed, contents table contains info about contents and their status, and flags table contains who and when flagged a content.
status could be ‘new‘ (if admin still haven’t taken any action), ‘moderated‘ (admin moderated the content), ‘ignored‘ (admin said that content is ok).
item_owner_id and reporter_id are the id (as it is in wp_user table) of user that generated the content and the id of the user that flagged it.
Some time ago I’ve seen from the server log of a client buddypress site that lot of registration email were bouncing back. It was clear that for the most part they were mispelled and the client decided it was better to add another registration field then loosing a good amount of new members (bouncing emails was 4-5% of successful registrations).
As I read on the forum that other people were asking for email confirm field, I decided to inaugurate a new category for Hacks & Tutorials with this little snipped that add another email field and check it.
Paste this code in your bp-custom.php file or in your custome theme function.php. I tested it only with that site, but it should work with every buddypress site that use the default theme or a child of it. If you have problem ask detalied question with all your software versions, your site url and any error message.
function registration_add_email_confirm(){ ?>
<?php do_action( 'bp_signup_email_first_errors' ); ?>
<input type="text" name="signup_email_first" id="signup_email_first" value="<?php
echo empty($_POST['signup_email_first'])?'':$_POST['signup_email_first']; ?>" />
<label>Confirm Email <?php _e( '(required)', 'buddypress' ); ?></label>
<?php do_action( 'bp_signup_email_second_errors' ); ?>
<?php }
add_action('bp_signup_email_errors', 'registration_add_email_confirm',20);
function registration_check_email_confirm(){
global $bp;
//buddypress check error in signup_email that is the second field, so we unset that error if any and check both email fields
unset($bp->signup->errors['signup_email']);
//check if email address is correct and set an error message for the first field if any
$account_details = bp_core_validate_user_signup( $_POST['signup_username'], $_POST['signup_email_first'] );
if ( !empty( $account_details['errors']->errors['user_email'] ) )
$bp->signup->errors['signup_email_first'] = $account_details['errors']->errors['user_email'][0];
//if first email field is not empty we check the second one
if (!empty( $_POST['signup_email_first'] ) ){
//first field not empty and second field empty
if(empty( $_POST['signup_email'] ))
$bp->signup->errors['signup_email_second'] = 'Please make sure you enter your email twice';
//both fields not empty but differents
elseif($_POST['signup_email'] != $_POST['signup_email_first'] )
$bp->signup->errors['signup_email_second'] = 'The emails you entered do not match.';
}
}
add_action('bp_signup_validate', 'registration_check_email_confirm');WordPress and BuddyPress have a very good hook system so they can be easily customized with short snippets. Is there some other widely useful customization needed?
UPDATE: This GSoC proj has been accepted!
I’ll post more information as soon as I define the details with my mentors.
I’m going to apply for a Google Summer of Code (GSoC) project related to BuddyPress, I have two ideas for it: extending the bp-album plugin to a complete media component plugin and coding a moderation plugin.
I’m already working with foxly to add multiple album, album for groups, flexible taxonomy, member tags (a beta will be ready soon). When this features are tested and released in a stable version, we will work on multiple uploads, widgets, sitewide directory, shortcodes for blog posts. All these features are not part of the GSoC project.
The part of my GSoC proj related to media is mainly extending bp-album to support every kind of media file and upload from remote locations. Remote url could be either a media file or an oEmbed enabled page.
Multimedia capability will be accomplished abstracting the media type and adding the support for media modules. Each module can describe how to display the media files it supports, how to generate thumbs or to use a default thumb. It can also hook in bp-album functions to change the way they handle media files.
I’ll write some basic modules (pics, video, audio) and a detailed documentation on the modules API. Then community could code modules for every kind of media (flash, pdfs, documents, code scripts, …).
Site admins can already edit or delete every content in a BP community, but analyzing every content posted could be a crazy/impossible work in big communities. This plugin use crowdsourcing to help site admins finding contents to moderate.
It adds a “report this” link to every posted content in the site, so members can easily report contents to admins. Admins can then see all the reported contents in an organized table in the wp backend, order/filter by the number of times the content has been reported, the component that have generated the content, the member who posted the content, etc. Then admins can take action on that content (ignore it, delete, mark the content author as spammer).
Another table show members, how many posts from them have been reported/moderated, how many posts have they reported and moderated from admin. So admins can easily find bad/good members and take action on them (mark as spammer, thanks them).
Accepted projects are announced on April 26, then Google timeline suggest a month of ‘community bonding’ and starting coding on May 24. Suggested ‘pencil down’ date is August 9, projects must be completed before August 16.
What happens if my project is not accepted? I won’t discard it, but I can’t affirm that I’ll have the time to work on it, or give any accurate timing. If it is accepted Google will give me a stipend to complete the project, so I can afford not accepting paid works and I’ll not look for a summer job; otherwise I’ll need to find some works for this summer and I don’t know how much time I’ll have to work on this.
Hope you like my ideas, feedback in comments is appreciated.
As announced in the last post the beta version has been released today.
Please use this version only on tests sites, we will not provide support for it. The purpose of this version is to demonstrate the new features. We are doing major changes so you should wait a more stable version before reporting bugs. Probably db structure will change before next release.
You can always download latest development version from http://downloads.wordpress.org/plugin/bp-album.zip
New features:
for further details and installing guide please see this post: http://buddypress.org/forums/topic/bp-album-new-features-requests-and-discussion/page/3#post-44269
Okay community, we’ve just finished our developer’s meeting and have decided what features we’re going to include in the next BP Album+ release. They will be as follows:
… That’s it …
We’re targeting Monday next week for a beta release.
Get excited!
We have finished the template set for the next release of the plugin, and we’d like your feedback so we can modify the plugin to make your life easier.
Download the code here:
http://foxly.ca/bp-album_0-1-6-FOR_TEMPLATE_DEVELOPERS.zip
You have 24 hours to evaluate it and post your feedback in this discussion.