/**
 * Redirect to a random blog in the multisite network
 *
 * @since BuddyPress (1.0)
 * @package BuddyPress
 * @subpackage BlogsActions
 */
function bp_blogs_redirect_to_random_blog()
{
    // Bail if not looking for a random blog
    if (!bp_is_blogs_component() || !isset($_GET['random-blog'])) {
        return;
    }
    // Multisite is active so find a random blog
    if (is_multisite()) {
        $blog = bp_blogs_get_random_blogs(1, 1);
        bp_core_redirect(get_site_url($blog['blogs'][0]->blog_id));
        // No multisite and still called, always redirect to root
    } else {
        bp_core_redirect(bp_core_get_root_domain());
    }
}
/**
 * Return the linked name of the user who last posted to the current topic in the loop.
 *
 * @return string HTML link to the profile of the user who last posted
 *         to the current topic.
 */
function bp_get_the_topic_last_poster_name()
{
    global $forum_template;
    $domain = bp_core_get_user_domain($forum_template->topic->topic_last_poster, $forum_template->topic->topic_last_poster_nicename, $forum_template->topic->topic_last_poster_login);
    // In the case where no user is found, bp_core_get_user_domain() may return the URL
    // of the Members directory
    if (!$domain || $domain == bp_core_get_root_domain() . '/' . bp_get_members_root_slug() . '/') {
        return __('Deleted User', 'buddypress');
    }
    return apply_filters('bp_get_the_topic_last_poster_name', '<a href="' . $domain . '">' . $forum_template->topic->topic_last_poster_displayname . '</a>');
}
 /**
  * Set up bp-core global settings.
  *
  * Sets up a majority of the BuddyPress globals that require a minimal
  * amount of processing, meaning they cannot be set in the BuddyPress class.
  *
  * @since BuddyPress (1.5.0)
  *
  * @see BP_Component::setup_globals() for description of parameters.
  *
  * @param array $args See {@link BP_Component::setup_globals()}.
  */
 public function setup_globals($args = array())
 {
     $bp = buddypress();
     /** Database **********************************************************/
     // Get the base database prefix
     if (empty($bp->table_prefix)) {
         $bp->table_prefix = bp_core_get_table_prefix();
     }
     // The domain for the root of the site where the main blog resides
     if (empty($bp->root_domain)) {
         $bp->root_domain = bp_core_get_root_domain();
     }
     // Fetches all of the core BuddyPress settings in one fell swoop
     if (empty($bp->site_options)) {
         $bp->site_options = bp_core_get_root_options();
     }
     // The names of the core WordPress pages used to display BuddyPress content
     if (empty($bp->pages)) {
         $bp->pages = bp_core_get_directory_pages();
     }
     /** Basic current user data *******************************************/
     // Logged in user is the 'current_user'
     $current_user = wp_get_current_user();
     // The user ID of the user who is currently logged in.
     $bp->loggedin_user = new stdClass();
     $bp->loggedin_user->id = isset($current_user->ID) ? $current_user->ID : 0;
     /** Avatars ***********************************************************/
     // Fetches the default Gravatar image to use if the user/group/blog has no avatar or gravatar
     $bp->grav_default = new stdClass();
     $bp->grav_default->user = apply_filters('bp_user_gravatar_default', $bp->site_options['avatar_default']);
     $bp->grav_default->group = apply_filters('bp_group_gravatar_default', $bp->grav_default->user);
     $bp->grav_default->blog = apply_filters('bp_blog_gravatar_default', $bp->grav_default->user);
     // Notifications table. Included here for legacy purposes. Use
     // bp-notifications instead.
     $bp->core->table_name_notifications = $bp->table_prefix . 'bp_notifications';
     /**
      * Used to determine if user has admin rights on current content. If the
      * logged in user is viewing their own profile and wants to delete
      * something, is_item_admin is used. This is a generic variable so it
      * can be used by other components. It can also be modified, so when
      * viewing a group 'is_item_admin' would be 'true' if they are a group
      * admin, and 'false' if they are not.
      */
     bp_update_is_item_admin(bp_user_has_access(), 'core');
     // Is the logged in user is a mod for the current item?
     bp_update_is_item_mod(false, 'core');
     do_action('bp_core_setup_globals');
 }
	/**
	 * Return the linked name of the user who last posted to the current topic in the loop.
	 *
	 * @return string HTML link to the profile of the user who last posted
	 *         to the current topic.
	 */
	function bp_get_the_topic_last_poster_name() {
		global $forum_template;

		$domain = bp_core_get_user_domain( $forum_template->topic->topic_last_poster, $forum_template->topic->topic_last_poster_nicename, $forum_template->topic->topic_last_poster_login ) ;

		// In the case where no user is found, bp_core_get_user_domain() may return the URL
		// of the Members directory
		if ( !$domain || $domain == bp_core_get_root_domain() . '/' . bp_get_members_root_slug() . '/' )
			return __( 'Deleted User', 'buddypress' );

		/**
		 * Filters the linked name of the user who last posted to the current topic in the loop.
		 *
		 * @since BuddyPress (1.0.0)
		 *
		 * @param string $value HTML link to the profile of the user who last posted.
		 */
		return apply_filters( 'bp_get_the_topic_last_poster_name', '<a href="' . $domain . '">' . $forum_template->topic->topic_last_poster_displayname . '</a>' );
	}
/**
 * Return the "root domain", the URL of the BP root blog.
 *
 * @since 1.1.0
 *
 * @return string URL of the BP root blog.
 */
function bp_get_root_domain()
{
    $bp = buddypress();
    if (!empty($bp->root_domain)) {
        $domain = $bp->root_domain;
    } else {
        $domain = bp_core_get_root_domain();
        $bp->root_domain = $domain;
    }
    /**
     * Filters the "root domain", the URL of the BP root blog.
     *
     * @since 1.2.4
     *
     * @param string $domain URL of the BP root blog.
     */
    return apply_filters('bp_get_root_domain', $domain);
}
Example #6
0
 /**
  * generte an <a href ...> tag that point to an url that trigger the flag
  * for the content identified by given parameters
  *
  * @param <array|strings> $args see defaults
  * @return <string> the flag/unflag link
  */
 function generate_link($args = '')
 {
     $defaults = array('type' => '', 'id' => 0, 'id2' => 0, 'author_id' => 0, 'is_author' => false, 'unflagged_text' => null, 'flagged_text' => null, 'can_moderate' => is_super_admin(), 'is_main_content' => false, 'custom_class' => '', 'context' => 'called');
     $params = wp_parse_args($args, $defaults);
     extract($params, EXTR_SKIP);
     //check mandatory params
     if (!$type || !$id) {
         return false;
     }
     $id = (int) $id;
     $id2 = (int) $id2;
     //TODO: anonymous flagging?cookies?
     if (!bp_loggedin_user_id()) {
         return null;
     }
     $is_author = $is_author || $author_id == bp_loggedin_user_id();
     // role relative to the content: 'moderator', 'author' or 'normal'
     if ($can_moderate) {
         $role = 'moderator';
     } elseif ($is_author) {
         $role = 'author';
     } else {
         $role = 'normal';
     }
     switch ($role) {
         case 'author':
             return null;
         case 'moderator':
         case 'normal':
             //has current user already flagged this?
             $flagged = in_array("{$type}-{$id}-{$id2}", $this->already_flagged);
             $action = $flagged ? 'unflag' : 'flag';
             $nonce = $this->create_nonce($action, $type, $id, $id2);
             $get_data = array('bpmod-action' => $action, 'type' => $type, 'id' => $id, 'id2' => $id2, '_wpnonce' => $nonce);
             $url = bp_core_get_root_domain() . '/?' . http_build_query($get_data);
             $text = $flagged ? $flagged_text : $unflagged_text;
             if (null === $text) {
                 $text = $flagged ? $this->options['flagged_text'] : $this->options['unflagged_text'];
             }
             $text = apply_filters('bp_moderation_link_text', $text, $flagged, $type, $id, $id2);
             $title_text = $flagged ? __('Unflag this content', 'bp-moderation') : __('Flag as inappropriate', 'bp-moderation');
             $link = "<a href='{$url}' title='" . $title_text;
             $link .= "' class='bpm-report-link bpm-type-{$type} ";
             $link .= $flagged ? 'bpm-flagged ' : 'bpm-unflagged ';
             $link .= empty($text) ? 'bpm-no-text ' : '';
             $link .= "bpm-context-{$context} {$custom_class}' >";
             $link .= "<span class='bpm-inner-text' >" . ($text ? $text : '&nbsp;') . "</span>";
             $link .= "</a>";
             return apply_filters('bp_moderation_get_link', $link, $type, $is_author, $id, $id2);
         default:
             return null;
     }
 }
function bp_get_root_domain()
{
    global $bp;
    if (isset($bp->root_domain) && !empty($bp->root_domain)) {
        $domain = $bp->root_domain;
    } else {
        $domain = bp_core_get_root_domain();
        $bp->root_domain = $domain;
    }
    return apply_filters('bp_get_root_domain', $domain);
}
 function forum_post_edit($id, $id2)
 {
     if (!($post = bp_forums_get_post($id2))) {
         return false;
     }
     $topic = bp_forums_get_topic_details($post->topic_id);
     $url = bp_core_get_root_domain() . '/' . BP_GROUPS_SLUG . '/' . $topic->object_slug . '/forum/topic/' . $topic->topic_slug . '/edit/post/' . $post->post_id . '/';
     return wp_nonce_url($url, 'bp_forums_edit_post');
 }
/**
 * Return the "root domain", the URL of the BP root blog.
 *
 * @return string URL of the BP root blog.
 */
function bp_get_root_domain()
{
    $bp = buddypress();
    if (!empty($bp->root_domain)) {
        $domain = $bp->root_domain;
    } else {
        $domain = bp_core_get_root_domain();
        $bp->root_domain = $domain;
    }
    return apply_filters('bp_get_root_domain', $domain);
}
Example #10
0
/**
 * bp_core_setup_globals()
 *
 * Sets up default global BuddyPress configuration settings and stores
 * them in a $bp variable.
 *
 * @package BuddyPress Core Core
 * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
 * @global $current_user A WordPress global containing current user information
 * @global $current_component Which is set up in /bp-core/bp-core-catch-uri.php
 * @global $current_action Which is set up in /bp-core/bp-core-catch-uri.php
 * @global $action_variables Which is set up in /bp-core/bp-core-catch-uri.php
 * @uses bp_core_get_user_domain() Returns the domain for a user
 */
function bp_core_setup_globals()
{
    global $bp, $wpdb;
    global $current_user, $current_component, $current_action, $current_blog;
    global $displayed_user_id;
    global $action_variables;
    $current_user = wp_get_current_user();
    /* The domain for the root of the site where the main blog resides */
    $bp->root_domain = bp_core_get_root_domain();
    /* The user ID of the user who is currently logged in. */
    $bp->loggedin_user->id = $current_user->ID;
    /* The domain for the user currently logged in. eg: http://domain.com/members/andy */
    $bp->loggedin_user->domain = bp_core_get_user_domain($current_user->ID);
    /* The user id of the user currently being viewed, set in /bp-core/bp-core-catchuri.php */
    $bp->displayed_user->id = $displayed_user_id;
    /* The domain for the user currently being displayed */
    $bp->displayed_user->domain = bp_core_get_user_domain($displayed_user_id);
    /* The component being used eg: http://domain.com/members/andy/ [profile] */
    $bp->current_component = $current_component;
    // type: string
    /* The current action for the component eg: http://domain.com/members/andy/profile/ [edit] */
    $bp->current_action = $current_action;
    // type: string
    /* The action variables for the current action eg: http://domain.com/members/andy/profile/edit/ [group] / [6] */
    $bp->action_variables = $action_variables;
    // type: array
    /* Only used where a component has a sub item, e.g. groups: http://domain.com/members/andy/groups/ [my-group] / home - manipulated in the actual component not in catch uri code.*/
    $bp->current_item = '';
    // type: string
    /* Used for overriding the 2nd level navigation menu so it can be used to display custom navigation for an item (for example a group) */
    $bp->is_single_item = false;
    /* The default component to use if none are set and someone visits: http://domain.com/members/andy */
    $bp->default_component = 'profile';
    /* Sets up the array container for the component navigation rendered by bp_get_nav() */
    $bp->bp_nav = array();
    /* Sets up the array container for the user navigation rendered by bp_get_user_nav() */
    $bp->bp_users_nav = array();
    /* Sets up the array container for the component options navigation rendered by bp_get_options_nav() */
    $bp->bp_options_nav = array();
    /* Sets up container used for the title of the current component option and rendered by bp_get_options_title() */
    $bp->bp_options_title = '';
    /* Sets up container used for the avatar of the current component being viewed. Rendered by bp_get_options_avatar() */
    $bp->bp_options_avatar = '';
    /* Fetches the default Gravatar image to use if the user has no avatar or gravatar */
    $bp->grav_default = get_site_option('user-avatar-default');
    /* Fetch the full name for the logged in and current user */
    $bp->loggedin_user->fullname = bp_core_global_user_fullname($bp->loggedin_user->id);
    $bp->displayed_user->fullname = bp_core_global_user_fullname($bp->displayed_user->id);
    /* Used to determine if user has admin rights on current content. If the logged in user is viewing
       their own profile and wants to delete a post on their wire, is_item_admin is used. This is a
       generic variable so it can be used in other components. It can also be modified, so when viewing a group
       'is_item_admin' would be 1 if they are a group admin, 0 if they are not. */
    $bp->is_item_admin = bp_is_home();
    /* Used to determine if the logged in user is a moderator for the current content. */
    $bp->is_item_mod = false;
    $bp->core->image_base = BP_PLUGIN_URL . '/bp-core/images';
    $bp->core->table_name_notifications = $wpdb->base_prefix . 'bp_notifications';
    if (!$bp->current_component) {
        $bp->current_component = $bp->default_component;
    }
}
 function setup_globals()
 {
     global $bp;
     /** Database **********************************************************/
     // Get the base database prefix
     if (empty($bp->table_prefix)) {
         $bp->table_prefix = bp_core_get_table_prefix();
     }
     // The domain for the root of the site where the main blog resides
     if (empty($bp->root_domain)) {
         $bp->root_domain = bp_core_get_root_domain();
     }
     // Fetches all of the core BuddyPress settings in one fell swoop
     if (empty($bp->site_options)) {
         $bp->site_options = bp_core_get_root_options();
     }
     // The names of the core NXTClass pages used to display BuddyPress content
     if (empty($bp->pages)) {
         $bp->pages = bp_core_get_directory_pages();
     }
     /** Admin Bar *********************************************************/
     // Set the 'My Account' global to prevent debug notices
     $bp->my_account_menu_id = false;
     /** Component and Action **********************************************/
     // Used for overriding the 2nd level navigation menu so it can be used to
     // display custom navigation for an item (for example a group)
     $bp->is_single_item = false;
     // Sets up the array container for the component navigation rendered
     // by bp_get_nav()
     $bp->bp_nav = array();
     // Sets up the array container for the component options navigation
     // rendered by bp_get_options_nav()
     $bp->bp_options_nav = array();
     // Contains an array of all the active components. The key is the slug,
     // value the internal ID of the component.
     //$bp->active_components = array();
     /** Basic current user data *******************************************/
     // Logged in user is the 'current_user'
     $current_user = nxt_get_current_user();
     // The user ID of the user who is currently logged in.
     $bp->loggedin_user->id = $current_user->ID;
     /** Avatars ***********************************************************/
     // Fetches the default Gravatar image to use if the user/group/blog has no avatar or gravatar
     $bp->grav_default->user = apply_filters('bp_user_gravatar_default', $bp->site_options['avatar_default']);
     $bp->grav_default->group = apply_filters('bp_group_gravatar_default', $bp->grav_default->user);
     $bp->grav_default->blog = apply_filters('bp_blog_gravatar_default', $bp->grav_default->user);
     // Notifications Table
     $bp->core->table_name_notifications = $bp->table_prefix . 'bp_notifications';
     /**
      * Used to determine if user has admin rights on current content. If the
      * logged in user is viewing their own profile and wants to delete
      * something, is_item_admin is used. This is a generic variable so it
      * can be used by other components. It can also be modified, so when
      * viewing a group 'is_item_admin' would be 'true' if they are a group
      * admin, and 'false' if they are not.
      */
     bp_update_is_item_admin(bp_user_has_access(), 'core');
     // Is the logged in user is a mod for the current item?
     bp_update_is_item_mod(false, 'core');
     do_action('bp_core_setup_globals');
 }
Example #12
0
/**
 * bp_core_setup_globals()
 *
 * Sets up default global BuddyPress configuration settings and stores
 * them in a $bp variable.
 *
 * @package BuddyPress Core Core
 * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
 * @global $current_user A WordPress global containing current user information
 * @global $current_component Which is set up in /bp-core/bp-core-catch-uri.php
 * @global $current_action Which is set up in /bp-core/bp-core-catch-uri.php
 * @global $action_variables Which is set up in /bp-core/bp-core-catch-uri.php
 * @uses bp_core_get_user_domain() Returns the domain for a user
 */
function bp_core_setup_globals() {
	global $bp;
	global $current_user, $current_component, $current_action, $current_blog;
	global $displayed_user_id;
	global $action_variables;

	$current_user = wp_get_current_user();

	/* Get the base database prefix */
	$bp->table_prefix = bp_core_get_table_prefix();

	/* The domain for the root of the site where the main blog resides */
	$bp->root_domain = bp_core_get_root_domain();

	/* The user ID of the user who is currently logged in. */
	$bp->loggedin_user->id = $current_user->ID;

	/* The domain for the user currently logged in. eg: http://domain.com/members/andy */
	$bp->loggedin_user->domain = bp_core_get_user_domain( $bp->loggedin_user->id );

	/* The core userdata of the user who is currently logged in. */
	$bp->loggedin_user->userdata = bp_core_get_core_userdata( $bp->loggedin_user->id );

	/* is_super_admin() hits the DB on single WP installs, so we need to get this separately so we can call it in a loop. */
	$bp->loggedin_user->is_super_admin = is_super_admin();
	$bp->loggedin_user->is_site_admin  = $bp->loggedin_user->is_super_admin; // deprecated 1.2.6

	/* The user id of the user currently being viewed, set in /bp-core/bp-core-catchuri.php */
	$bp->displayed_user->id = $displayed_user_id;

	/* The domain for the user currently being displayed */
	$bp->displayed_user->domain = bp_core_get_user_domain( $bp->displayed_user->id );

	/* The core userdata of the user who is currently being displayed */
	$bp->displayed_user->userdata = bp_core_get_core_userdata( $bp->displayed_user->id );

	/* The component being used eg: http://domain.com/members/andy/ [profile] */
	$bp->current_component = $current_component; // type: string

	/* The current action for the component eg: http://domain.com/members/andy/profile/ [edit] */
	$bp->current_action = $current_action; // type: string

	/* The action variables for the current action eg: http://domain.com/members/andy/profile/edit/ [group] / [6] */
	$bp->action_variables = $action_variables; // type: array

	/* Only used where a component has a sub item, e.g. groups: http://domain.com/members/andy/groups/ [my-group] / home - manipulated in the actual component not in catch uri code.*/
	$bp->current_item = ''; // type: string

	/* Used for overriding the 2nd level navigation menu so it can be used to display custom navigation for an item (for example a group) */
	$bp->is_single_item = false;

	/* The default component to use if none are set and someone visits: http://domain.com/members/andy */
	if ( !defined( 'BP_DEFAULT_COMPONENT' ) ) {
		if ( defined( 'BP_ACTIVITY_SLUG' ) )
			$bp->default_component = BP_ACTIVITY_SLUG;
		else
			$bp->default_component = 'profile';
	} else {
		$bp->default_component = BP_DEFAULT_COMPONENT;
	}

	/* Fetches all of the core database based BuddyPress settings in one foul swoop */
	$bp->site_options = bp_core_get_site_options();

	/* Sets up the array container for the component navigation rendered by bp_get_nav() */
	$bp->bp_nav = array();

	/* Sets up the array container for the component options navigation rendered by bp_get_options_nav() */
	$bp->bp_options_nav = array();

	/* Contains an array of all the active components. The key is the slug, value the internal ID of the component */
	$bp->active_components = array();

	/* Fetches the default Gravatar image to use if the user/group/blog has no avatar or gravatar */
	$bp->grav_default->user  = apply_filters( 'bp_user_gravatar_default', $bp->site_options['user-avatar-default'] );
	$bp->grav_default->group = apply_filters( 'bp_group_gravatar_default', 'identicon' );
	$bp->grav_default->blog  = apply_filters( 'bp_blog_gravatar_default', 'identicon' );

	/* Fetch the full name for the logged in and current user */
	$bp->loggedin_user->fullname  = bp_core_get_user_displayname( $bp->loggedin_user->id );
	$bp->displayed_user->fullname = bp_core_get_user_displayname( $bp->displayed_user->id );

	/* Used to determine if user has admin rights on current content. If the logged in user is viewing
	   their own profile and wants to delete something, is_item_admin is used. This is a
	   generic variable so it can be used by other components. It can also be modified, so when viewing a group
	   'is_item_admin' would be 1 if they are a group admin, 0 if they are not. */
	$bp->is_item_admin = bp_user_has_access();

	/* Used to determine if the logged in user is a moderator for the current content. */
	$bp->is_item_mod = false;

	$bp->core->table_name_notifications = $bp->table_prefix . 'bp_notifications';

	if ( !$bp->current_component && $bp->displayed_user->id )
		$bp->current_component = $bp->default_component;

	do_action( 'bp_core_setup_globals' );
}