{"id":9003,"date":"2010-05-02T14:37:09","date_gmt":"2010-05-02T14:37:09","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/bp-moderation\/"},"modified":"2014-11-18T17:57:31","modified_gmt":"2014-11-18T17:57:31","slug":"bp-moderation","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/bp-moderation\/","author":5284947,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.1.7","stable_tag":"0.1.7","tested":"","requires":"","requires_php":"","requires_plugins":"","header_name":"BuddyPress Moderation","header_author":"Francesco Laffi","header_description":"","assets_banners_color":"","last_updated":"2014-11-18 17:57:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/buddypress.org\/community\/groups\/bp-moderation\/","header_author_uri":"http:\/\/flweb.it","rating":2.2,"author_block_rating":0,"active_installs":10,"downloads":26575,"num_ratings":9,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"0.1.1":"<p>First bp-moderation release<\/p>","0.1.2":"<p>Fixes some bugs<\/p>","0.1.3":"<p>Other fixes<\/p>","0.1.4":"<p>wp 3.1 compatibility: tested with wp3.1+bp1.2.8, not tested with previous versions<\/p>","0.1.5":"<p>bp 1.5 compatibility<\/p>","0.1.7":"<p>Requires PHP 5.3\nModeration page has now a top-level menu item<\/p>"},"ratings":{"1":"7","2":0,"3":0,"4":0,"5":"3"},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0","0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":"745024","resolution":"1","location":"assets"},"screenshot-2.png":{"filename":"screenshot-2.png","revision":"745024","resolution":"2","location":"assets"}},"screenshots":{"1":"<strong>Activity Loop Integration<\/strong> \u2014 contents can be flagged directly from the activity that represent them","2":"<strong>Ajax Flagging<\/strong> \u2014 the flagging animation"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[204,14005,1756],"plugin_category":[44],"plugin_contributors":[81962,78535],"plugin_business_model":[],"class_list":["post-9003","plugin","type-plugin","status-publish","hentry","plugin_tags-buddypress","plugin_tags-flagging","plugin_tags-moderation","plugin_category-discussion-and-community","plugin_contributors-francescolaffi","plugin_contributors-saurabhshukla","plugin_committers-francescolaffi","plugin_committers-saurabhshukla"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/bp-moderation.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/bp-moderation\/assets\/screenshot-1.png?rev=745024","caption":"<strong>Activity Loop Integration<\/strong> \u2014 contents can be flagged directly from the activity that represent them"},{"src":"https:\/\/ps.w.org\/bp-moderation\/assets\/screenshot-2.png?rev=745024","caption":"<strong>Ajax Flagging<\/strong> \u2014 the flagging animation"}],"raw_content":"<!--section=description-->\n<h4>LATEST VERSION REQUIRE PHP 5.3+<\/h4>\n\n<p>Site admins can already edit or delete every content in a BP community, but\nanalyzing every content posted could be a crazy\/impossible work in big communities.\nThis plugin use crowdsourcing to help site admins finding contents to moderate.<\/p>\n\n<p>It adds links\/buttons to flag inappropriate user generated content in the site,\nso members can easily flag contents as inappropriate. Admins can then see all the\nreported contents in an organized table in the wp backend, order\/filter them and\ntake actions (ignore, delete, mark\/unmark the content author as spammer, ...).<\/p>\n\n<p>Another table show members, how many posts from them have been reported\/moderated,\nhow many posts have they reported and moderated from admin. Here find bad\/good\nmembers and take action on them.<\/p>\n\n<p>Note on private messages:\n* private message sender: reporting this will flag the sender, not the thread, but the admin is not able to see the messages, effective against bulk spammer\n* private message: in this case a sender is reported in a specific thread, the admin can see the messages, more useful for moderation (eg k-12 communities)\nthe latter is a bit hackish and could be less solid on future bp upgrades, the first one is based on apis that should be more stable<\/p>\n\n<p>Use <a href=\"http:\/\/wordpress.org\/support\/plugin\/bp-moderation\">support forum on wordpress.org<\/a>\nfor support and discussion.<\/p>\n\n<p>The default style uses one icon from http:\/\/www.famfamfam.com\/lab\/icons\/silk\/\n(cc-by-2.5) and one from http:\/\/damieng.com\/creative\/icons\/silk-companion-1-icons\n(cc-by-3.0), so if you use default style give credit to them somewhere in your site.<\/p>\n\n<h3>Moderator panel<\/h3>\n\n<p>You can access the backend panel from the \"BP Moderation\" link in your\nWordpress admin menu.<\/p>\n\n<p>There are three tabs on the top: \"contents\", \"users\", \"settings\".<\/p>\n\n<h4>Contents view<\/h4>\n\n<p>In this view you can see the reported contents.<\/p>\n\n<p>Use the custom query filter\/order contents.<\/p>\n\n<p>The contents table has three columns:<\/p>\n\n<ol>\n<li>info on the content author<\/li>\n<li>info on the content itself ( and link to take actions on it on mouseover )<\/li>\n<li>info on the flags on this content<\/li>\n<\/ol>\n\n<h4>Users view<\/h4>\n\n<p>In this view you can see users that reported a content or users whom contents\nhave been reported.<\/p>\n\n<p>Use the custom query filter\/order contents.<\/p>\n\n<p>The contents table has three columns:<\/p>\n\n<ol>\n<li>info on the user itself<\/li>\n<li>info on the contents generated by the user and flagged by others<\/li>\n<li>info on the contents generated by others and flagged by the user<\/li>\n<\/ol>\n\n<h4>Hotkeys<\/h4>\n\n<p>You can enable and disable hotkeys with the link displayed under contents and users tables.<\/p>\n\n<p>I tried to make hotkeys similar wordpress comments table hotkeys, if you never\nused them, give a look to <a href=\"http:\/\/codex.wordpress.org\/Keyboard_Shortcuts\">this codex page<\/a>.<\/p>\n\n<p>When a row is selected with hotkeys the possible keys will be shown next to the actions links.<\/p>\n\n<p>Hotkeys in both tables:<\/p>\n\n<ul>\n<li>j\/k: moves down\/up<\/li>\n<li>x: check current row for bulk actions<\/li>\n<li>shift+x: invert row selection<\/li>\n<li>c: direct contact selected user (or selected content author)<\/li>\n<li>s\/u: mark as spammer selected user (or selected content author) \/ unmark him<\/li>\n<\/ul>\n\n<p>Only in contents table:<\/p>\n\n<ul>\n<li>v: view content<\/li>\n<li>a: approve (ignore)<\/li>\n<li>e: edit<\/li>\n<li>m: mark as moderated<\/li>\n<li>d: delete<\/li>\n<\/ul>\n\n<p>Only in user table:<\/p>\n\n<ul>\n<li>b: see the contents generated by the selected user and flagged by others in the content view<\/li>\n<li>g: see the contents generated by others and flagged by the selected user in the content view<\/li>\n<\/ul>\n\n<p>Bulk hotkeys:<\/p>\n\n<p>Some keys can be triggered on all selected rows if pressed with shift.\nThose keys are s,u,a,m,d.<\/p>\n\n<h3>Integration guide<\/h3>\n\n<p>= Introduction =\nThis guide aims to explain how integrate bp-moderation with custom content types,\nwp\/bp core content types are already covered by the plugin, but you can write your\nown custom content type definitions also for them.<\/p>\n\n<p>It's important to understand how bp-moderation differentiate\/recognize contents:\neach content have to be identified by an internal content type slug (you choose\nit in your custom content type definition) and one or two bigint ids.<\/p>\n\n<p>Decide a convention with 2 ids for your content type, is not something you can change\nlater. You have to call bp-moderation methods using always the same convention and\nbp-moderation will use the same one when referring to your contents.\nIf your contents are tied with the activity stream you already have chosen a convention\nfor primary and secondary ids, using the same convention you use with activities\nwill make things easier. If you only have one id use 0 for the secondary id.<\/p>\n\n<h4>Register a content type<\/h4>\n\n<p>The main entry point in bp-moderation is bpModeration::register_content_type(), it\nallows you to register a content type and has to be called at every page load.<\/p>\n\n<p>You'll need to provide:<\/p>\n\n<ul>\n<li>a slug: used to differentiate between content types  (alfanumeric and underscore only)<\/li>\n<li>a label: human readable name of the content type (used in backend)<\/li>\n<li>some callbacks: called by bp-moderation to request information\/operations on your contents<\/li>\n<li>activity types: the activity types that your content are posted on the activity stream with (if any)<\/li>\n<\/ul>\n\n<h4>Code sample<\/h4>\n\n<pre><code>examples\/bpMod_ContentType_BlogPostExample.php is a code sample that shows\n<\/code><\/pre>\n\n<p>how to integrate content types with bp-moderation taking blog posts as an example,\nyou can also modify and adapt it to your content type.<\/p>\n\n<p>Other informations are in the doc of <code>bpModeration::register_content_type()<\/code> and\n    bpModFrontend::get_link(), those are most likely the only two bp-moderation\nmethods you need to use.<\/p>\n\n<p>All core content types are in bpModDefaultContentTypes.php, but they are hardcoded\nfor speed reasons, so don't use them as an example.<\/p>\n\n<h4>Advanced integration with activities<\/h4>\n\n<p>If you use the same primary and secondary id convention for activities and bp-moderation\nyou only have to tell the activity types of your content when registering,\nbp-moderation is already hooked in the activity loop and will print the links\nfor your contents too.<\/p>\n\n<p>Instead if some reason you cat use the same convention or you want to customize\nthe activity loop flag button, you can use the filter<\/p>\n\n<pre><code>    bp_moderation_activity_loop_link_args_{the activity type}\n<\/code><\/pre>\n\n<p>where <code>{the activity type}<\/code> is the activity type you'd like to filter.\nLook in <code>bpModFrontend::activity_loop_link()<\/code> to see what to filter.<\/p>\n\n<h4>Contents generated by non members<\/h4>\n\n<p>It's possible to have contents generated by not members (e.g. blog comments).\nIf you have to provide a user id to bp-moderation give 0 for it, but you'll also\nneed to filter author information for displaying them in backend table. Use the filter<\/p>\n\n<pre><code>    bp_moderation_author_details_for_{slug used in content type registration}\n<\/code><\/pre>\n\n<p>to add missing info, look in <code>bpModBackend::author_details()<\/code> to see info needed.<\/p>\n\n<h4>OK I coded my custom content type, and now?<\/h4>\n\n<p>If you have coded a custom content type and you think that could be widely useful,\ncontact me and it could easily get included in the bp-moderation plugin.<\/p>\n\n<p>If you integrated your plugin and you prefer to keep the custom content type in\nyour plugin it's fine, I guess is more convenient and you can update it together\nwith your plugin.\nRemember to check if bp-moderation is active before including unnecessary code\nor calling non-existing functions: safest way is to use the action <code>bp_moderation_init<\/code>\nfor including\/registering it.<\/p>\n\n<p>If none of the above this is the easier way to get a custom content type loaded:<\/p>\n\n<ul>\n<li>place your custom content type php file in <code>wp-content\/plugins\/bp-moderation-content-types\/<\/code><\/li>\n<li>copy this line in wp-config.php <code>define('BPMOD_LOAD_CUSTOM_CONTENT_TYPES', true);<\/code><\/li>\n<\/ul>\n\n<h4>Possible future content type system features<\/h4>\n\n<ul>\n<li>differentiate between trash, untrash and delete, or maybe custom actions on content<\/li>\n<li>methods to be called when a content is edited\/trashed\/untrashed\/deleted so bp-moderation\ncan display also what happen outside of it<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install, activate and configure <a href=\"http:\/\/buddypress.org\/download\/\">BuddyPress<\/a>.<\/li>\n<li>Install BuddyPress Moderation either by:\n\n<ul>\n<li>using the <a href=\"http:\/\/coveredwebservices.com\/wp-plugin-install\/?plugin=bp-moderation\">installer wizard<\/a>;<\/li>\n<li>search bp-moderation in the built in WordPress plugin installer;<\/li>\n<li>download it manually and upload it to <code>\/wp-content\/plugins\/bp-moderation\/<\/code>.<\/li>\n<\/ul><\/li>\n<li>Activate BuddyPress Moderation in the \"Plugins\" admin panel using the \"Activate\" link.<\/li>\n<li>Configure settings: go to \"BuddyPress\" &gt; \"Moderation\" from the WordPress admin menu,\nthen select the \"Settings\" tab on the top.<\/li>\n<li>For a quick start you can read the \"Moderator panel\" section of this readme\/webpage.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt>Where do flags show up?<\/dt>\n<dd><p>Flags show up in \"BP Moderation\" from the Wordpress admin menu.\nRead the \"Moderator panel\" section of this guide for more information.<\/p><\/dd>\n<dt>How can I use keyboard shortcuts?<\/dt>\n<dd><p>Read the \"Moderator panel &gt; Hotkeys\" section of this guide.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>first stable release<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>bugfixes<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>wp 3.1 compatibility<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>bp 1.5 compatibility<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>bp 1.7 and 1.8 compatibility<\/li>\n<li>requires PHP 5.3<\/li>\n<\/ul>","raw_excerpt":"Adds links\/buttons to flag inappropriate content and gives a convenient way to moderators to view reports and take actions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/9003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=9003"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/francescolaffi"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=9003"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=9003"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=9003"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=9003"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=9003"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=9003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}