Your IP : 216.73.216.71


Current Path : /home/bechata/mp/wp-content/plugins/bbp-private-groups/includes/
Upload File :
Current File : /home/bechata/mp/wp-content/plugins/bbp-private-groups/includes/shortcodes.php

<?php

//new shortcodes first
// then versions of bbpress ones with filtering



//********************  NEW SHORTCODES   ***************
add_shortcode('list-pg-users', 'list_pg_users');  
add_shortcode('pg-single-forum', 'pg_single_forum');
add_shortcode('pg-single-topic', 'pg_display_topic');  
add_shortcode('pg-single-reply', 'pg_display_reply');  


function list_pg_users ($attr) {
global $rpg_groups ;
$users= get_users() ;
	if ( !empty( $attr['group'] ) )  {
	//we have a group name !
	$content=$attr['group'] ;
	foreach ( $rpg_groups as $group => $details ){
		if ($details == $content) {
		echo '<b>'.$details.'</b>';
		echo '<ul>' ;
				foreach ( $users as $user ) {
				$groupcheck=get_user_meta( $user->ID, 'private_group',true);
				if ($groupcheck == $group) echo '<li>'.esc_html( $user->display_name ).'</li>' ;
				}
		echo '</ul>' ;
		}
	}
	}
	else {
	// we don't have a group name, so show all !
		foreach ( $rpg_groups as $group => $details ){
		if ($details == '') $details = $group.' - no name' ;
		echo '<b>'.$details.'</b>';
		echo '<ul>' ;
			foreach ( $users as $user ) {
			$groupcheck=get_user_meta( $user->ID, 'private_group',true);
			if ($groupcheck == $group) echo '<li>'.esc_html( $user->display_name ).'</li>' ;
			}
		echo '</ul>' ;
		}
	}
}


//***********************  NEW PG VERSIONS OF EXISTING SHORTCODES   *****************


/**
	 * Display the contents of a specific forum ID in an output buffer
	 * and return to ensure that post/page contents are displayed first.
	 *
	 * @since bbPress (r3031)
	 *
	 * @param array $attr
	 * @param string $content
	 * @uses get_template_part()
	 * @uses bbp_single_forum_description()
	 * @return string
	 */
	function pg_single_forum( $attr, $content = '' ) {

		// Sanity check required info
		if ( !empty( $content ) || ( empty( $attr['id'] ) || !is_numeric( $attr['id'] ) ) )
			return $content;

		// Set passed attribute to $forum_id for clarity
		$forum_id = bbpress()->current_forum_id = $attr['id'];

		// Bail if ID passed is not a forum
		if ( !bbp_is_forum( $forum_id ) )
			return $content;

		// Start output buffer
		pg_start( 'bbp_single_forum' );
		
		//check if pg user cannot view forum
		if (!private_groups_can_user_view_post_id($forum_id)) {
			if (!empty($attr['message'])) {
			echo $attr['message'] ;
			}
		return pg_end() ;
		}
		

		// Check forum caps
		if ( bbp_user_can_view_forum( array( 'forum_id' => $forum_id ) ) ) {
			bbp_get_template_part( 'content',  'single-forum' );

		// Forum is private and user does not have caps
		} elseif ( bbp_is_forum_private( $forum_id, false ) ) {
			bbp_get_template_part( 'feedback', 'no-access'    );
		}

		// Return contents of output buffer
		return pg_end();
	}
	
/**
	 * Display the contents of a specific topic ID in an output buffer
	 * and return to ensure that post/page contents are displayed first.
	 *
	 * @since bbPress (r3031)
	 *
	 * @param array $attr
	 * @param string $content
	 * @uses get_template_part()
	 * @return string
	 */
function pg_display_topic( $attr, $content = '' ) {

		// Sanity check required info
		if ( !empty( $content ) || ( empty( $attr['id'] ) || !is_numeric( $attr['id'] ) ) )
			return $content;

		// Unset globals
		pg_unset_globals();

		// Set passed attribute to $forum_id for clarity
		$topic_id = bbpress()->current_topic_id = $attr['id'];
		$forum_id = bbp_get_topic_forum_id( $topic_id );

		// Bail if ID passed is not a topic
		if ( !bbp_is_topic( $topic_id ) )
			return $content;

		// Reset the queries if not in theme compat
		if ( !bbp_is_theme_compat_active() ) {

			$bbp = bbpress();

			// Reset necessary forum_query attributes for topics loop to function
			$bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type();
			$bbp->forum_query->in_the_loop             = true;
			$bbp->forum_query->post                    = get_post( $forum_id );

			// Reset necessary topic_query attributes for topics loop to function
			$bbp->topic_query->query_vars['post_type'] = bbp_get_topic_post_type();
			$bbp->topic_query->in_the_loop             = true;
			$bbp->topic_query->post                    = get_post( $topic_id );
		}

		// Start output buffer
		pg_start( 'bbp_single_topic' );
		
		//check if pg user cannot view post
		$post_id = $attr['id'] ;
		$post_type = get_post_type( $post_id ) ;
		$forum_id = private_groups_get_forum_id_from_post_id($post_id, $post_type );
		if (!private_groups_can_user_view_post_id($forum_id) || topic_permissions_check ($post_id) == false) {
			if (!empty($attr['message'])) {
			echo $attr['message'] ;
			}
		return pg_end() ;
		}

		// Check forum caps
		if ( bbp_user_can_view_forum( array( 'forum_id' => $forum_id ) ) ) {
			bbp_get_template_part( 'content', 'single-topic' );

		// Forum is private and user does not have caps
		} elseif ( bbp_is_forum_private( $forum_id, false ) ) {
			bbp_get_template_part( 'feedback', 'no-access'    );
		}

		// Return contents of output buffer
		return pg_end();
}




	/**
	 * Display the contents of a specific reply ID in an output buffer
	 * and return to ensure that post/page contents are displayed first.
	 *
	 * @since bbPress (r3031)
	 *
	 * @param array $attr
	 * @param string $content
	 * @uses get_template_part()
	 * @return string
	 */
function pg_display_reply( $attr, $content = '' ) {

		// Sanity check required info
		if ( !empty( $content ) || ( empty( $attr['id'] ) || !is_numeric( $attr['id'] ) ) )
			return $content;

		// Unset globals
		pg_unset_globals();

		// Set passed attribute to $reply_id for clarity
		$reply_id = bbpress()->current_reply_id = $attr['id'];
		$forum_id = bbp_get_reply_forum_id( $reply_id );

		// Bail if ID passed is not a reply
		if ( !bbp_is_reply( $reply_id ) )
			return $content;

		// Reset the queries if not in theme compat
		if ( !bbp_is_theme_compat_active() ) {

			$bbp = bbpress();

			// Reset necessary forum_query attributes for replys loop to function
			$bbp->forum_query->query_vars['post_type'] = bbp_get_forum_post_type();
			$bbp->forum_query->in_the_loop             = true;
			$bbp->forum_query->post                    = get_post( $forum_id );

			// Reset necessary reply_query attributes for replys loop to function
			$bbp->reply_query->query_vars['post_type'] = bbp_get_reply_post_type();
			$bbp->reply_query->in_the_loop             = true;
			$bbp->reply_query->post                    = get_post( $reply_id );
		}

		// Start output buffer
		pg_start( 'bbp_single_reply' );
		
		//check if pg user cannot view post
		$post_type = get_post_type( $reply_id ) ;
		$forum_id = private_groups_get_forum_id_from_post_id($reply_id, $post_type );
		if (!private_groups_can_user_view_post_id($forum_id) || topic_permissions_check ($reply_id) == false) {
			if (!empty($attr['message'])) {
			echo $attr['message'] ;
			}
		return pg_end() ;
		}

		// Check forum caps
		if ( bbp_user_can_view_forum( array( 'forum_id' => $forum_id ) ) ) {
			bbp_get_template_part( 'content',  'single-reply' );

		// Forum is private and user does not have caps
		} elseif ( bbp_is_forum_private( $forum_id, false ) ) {
			bbp_get_template_part( 'feedback', 'no-access'    );
		}

		// Return contents of output buffer
		return pg_end();
	}
	
//***********************  START END UNSET PG VERSIONS   *****************
	
	function pg_start( $query_name = '' ) {

		// Set query name
		bbp_set_query_name( $query_name );

		// Start output buffer
		ob_start();
	}
	
	function pg_end() {

		// Unset globals
		pg_unset_globals();

		// Reset the query name
		bbp_reset_query_name();

		// Return and flush the output buffer
		return ob_get_clean();
	}
	
	function pg_unset_globals() {
		$bbp = bbpress();

		// Unset global queries
		$bbp->forum_query  = new WP_Query();
		$bbp->topic_query  = new WP_Query();
		$bbp->reply_query  = new WP_Query();
		$bbp->search_query = new WP_Query();

		// Unset global ID's
		$bbp->current_view_id      = 0;
		$bbp->current_forum_id     = 0;
		$bbp->current_topic_id     = 0;
		$bbp->current_reply_id     = 0;
		$bbp->current_topic_tag_id = 0;

		// Reset the post data
		wp_reset_postdata();
	}