query( 'CREATE TABLE IF NOT EXISTS `' . $bbdb->prefix . 'bbmodsuite_reports` ( `ID` int(10) NOT NULL auto_increment, `report_reason` varchar(32) NOT NULL default \'d41d8cd98f00b204e9800998ecf8427e\', `report_from` int(10) NOT NULL, `reported_post` int(10) NOT NULL, `report_content` text NOT NULL, `report_type` varchar(250) NOT NULL default \'new\', `resolved_by` int(10) NOT NULL default \'0\', `resolve_type` varchar(32) NOT NULL default \'d41d8cd98f00b204e9800998ecf8427e\', `resolve_content` text NOT NULL default \'\', `reported_at` datetime NOT NULL, `resolved_at` datetime, PRIMARY KEY (`ID`) )' ); if ( !$options = bb_get_option( 'bbmodsuite_report_options' ) ) { $types = array(); $types[md5( __( 'Offensive', 'bbpress-moderation-suite' ) )] = __( 'Offensive', 'bbpress-moderation-suite' ); $types[md5( __( 'Spam', 'bbpress-moderation-suite' ) )] = __( 'Spam', 'bbpress-moderation-suite' ); $types[md5( __( 'Abusive', 'bbpress-moderation-suite' ) )] = __( 'Abusive', 'bbpress-moderation-suite' ); $resolve_types = array(); $resolve_types[md5( __( 'Invalid', 'bbpress-moderation-suite' ) )] = __( 'Invalid', 'bbpress-moderation-suite' ); $resolve_types[md5( __( 'Post deleted', 'bbpress-moderation-suite' ) )] = __( 'Post deleted', 'bbpress-moderation-suite' ); $resolve_types[md5( __( 'Post edited', 'bbpress-moderation-suite' ) )] = __( 'Post edited', 'bbpress-moderation-suite' ); bb_update_option( 'bbmodsuite_report_options', $options = array( 'min_level' => 'moderate', 'max_level' => 'moderate', 'types' => $types, 'resolve_types' => $resolve_types, 'obtrusive' => true, 'version' => '0.1-beta2' ) ); } if ( !isset( $options['version'] ) || $options['version'] != '0.1-beta2' ) { switch ( isset( $options['version'] ) ? $options['version'] : false ) { case false: if ( !isset( $options['obtrusive'] ) ) $options['obtrusive'] = true; $bbdb->query( 'ALTER TABLE `' . $bbdb->prefix . 'bbmodsuite_reports` MODIFY `report_reason` varchar(32) NOT NULL default \'d41d8cd98f00b204e9800998ecf8427e\', MODIFY `resolve_type` varchar(32) NOT NULL default \'d41d8cd98f00b204e9800998ecf8427e\'' ); $report_types = array_keys( bbmodsuite_report_reasons() ); foreach ( $report_types as $old => $new ) $bbdb->update( $bbdb->prefix . 'bbmodsuite_reports', array( 'report_reason' => $new ), array( 'report_reason' => $old ) ); $resolve_types = array_keys( bbmodsuite_report_resolve_types() ); foreach ( $resolve_types as $old => $new ) $bbdb->update( $bbdb->prefix . 'bbmodsuite_reports', array( 'resolve_type' => $new ), array( 'resolve_type' => $old ) ); break; } $options['version'] = '0.1-beta2'; bb_update_option( 'bbmodsuite_report_options', $options ); } } function bbmodsuite_report_uninstall() { global $bbdb; $bbdb->query( 'DROP TABLE `' . $bbdb->prefix . 'bbmodsuite_reports`' ); bb_delete_option( 'bbmodsuite_report_options' ); } if ( !function_exists( 'add_action' ) && isset( $_GET['report'] ) ) { if ( file_exists( '../bb-load.php' ) ) require_once '../bb-load.php'; elseif ( file_exists( '../../bb-load.php' ) ) require_once '../../bb-load.php'; elseif ( file_exists( '../../../bb-load.php' ) ) require_once '../../../bb-load.php'; else exit( 'Fatal error.' ); if ( strtoupper( $_SERVER['REQUEST_METHOD'] ) === 'GET' ) { if ( !bb_verify_nonce( $_GET['_nonce'], 'bbmodsuite-report-' . $_GET['report'] ) ) bb_die( __( 'Invalid report', 'bbpress-moderation-suite' ) ); global $forums, $bb_post; $bb_post = bb_get_post( $_GET['report'] ); if ( $bb_post->post_status ) bb_die( __( 'Invalid report', 'bbpress-moderation-suite' ) ); function bbmodsuite_report_form_uri( $a, $b ) { if ( $b == 'bb-post.php' ) return str_replace( '\\', '/', substr( BB_PLUGIN_URL, 0, -1 ) . str_replace( realpath( BB_PLUGIN_DIR ), '', dirname( __FILE__ ) ) . '/' . basename( __FILE__ ) . '?report=' . $_GET['report'] ); return $a; } add_filter( 'bb_get_uri', 'bbmodsuite_report_form_uri', 10, 2 ); $forums = false; function bbmodsuite_report_form( $a, $b ) { if ( $b === 'post-form.php' ) { return $template = bb_get_template( 'report-form.php' ) ? $template : dirname( __FILE__ ) . '/report-form.php'; } return $a; } add_filter( 'bb_template', 'bbmodsuite_report_form', 10, 2 ); bb_get_header(); echo '
Your report was submitted. The moderation staff will review the post in question.
', 'bbpress-moderation-suite' ), __( 'Report Submitted', 'bbpress-moderation-suite' ) ); } } function bbpress_moderation_suite_report() { ?>' . __( 'There is a new report waiting for you!', 'bbpress-moderation-suite' ) . '
'; else echo ''; } add_action( 'bb_logged-in.php', 'bbmodsuite_report_header' ); function bbmodsuite_report_loggedin_header( $file ) { if ( substr( $file, -14 ) == '/logged-in.php' ) bbmodsuite_report_header(); return $file; } if ( version_compare( bb_get_option( 'version' ), '1.0dev', '<' ) ) add_filter( 'bb_template', 'bbmodsuite_report_loggedin_header' ); function bbmodsuite_report_count( $type = 'all' ) { global $bbdb; if ( false === $count = wp_cache_get( $type, 'bbmodsuite-report' ) ) { if ( $type == 'all' ) $count = $bbdb->get_var( 'SELECT COUNT(*) FROM `' . $bbdb->prefix . 'bbmodsuite_reports`' ); else $count = $bbdb->get_var( $bbdb->prepare( 'SELECT COUNT(*) FROM `' . $bbdb->prefix . 'bbmodsuite_reports` WHERE `report_type`=%s', $type ) ); wp_cache_add( $type, $count, 'bbmodsuite-report' ); } return $count; } function bbmodsuite_report_link( $parts, $args ) { $post_id = get_post_id(); if ( bb_current_user_can( 'participate' ) && !bb_current_user_can( 'delete_post', $post_id ) ) { $post_author_id = get_post_author_id( $post_id ); if ( class_exists( 'BP_User' ) ) $post_author = new BP_User( $post_author_id ); else $post_author = new WP_User( $post_author_id ); global $bbmodsuite_cache; $options = bb_get_option( 'bbmodsuite_report_options' ); if ( $post_author_id != bb_get_current_user_info( 'ID' ) && ( $options['max_level'] == 'none' || !$post_author->has_cap( $options['max_level'] ) ) ) { $title = __( 'Report this post to a moderator.', 'bbpress-moderation-suite' ); $href = str_replace( '\\', '/', substr( BB_PLUGIN_URL, 0, -1 ) . str_replace( realpath( BB_PLUGIN_DIR ), '', dirname( __FILE__ ) ) . '/' . basename( __FILE__ ) ); $parts['report'] = $args['before_each'] . '' . __( 'Report', 'bbpress-moderation-suite' ) . '' . $args['after_each']; } } return $parts; } add_filter( 'bb_post_admin', 'bbmodsuite_report_link', 10, 2 );