function post_review($args = '') { global $bp; $defaults = array('content' => false, 'rating' => false, 'user_id' => $bp->loggedin_user->id, 'group_id' => $bp->groups->current_group->id); $r = wp_parse_args($args, $defaults); extract($r, EXTR_SKIP); if (empty($content) || !strlen(trim($content)) || empty($user_id) || empty($group_id)) { return false; } // Be sure the user is a member of the group before posting. if (!is_super_admin() && !groups_is_user_member($user_id, $group_id)) { return false; } // Record this in activity streams $activity_action = sprintf(__('%s reviewed %s:', 'bpgr'), bp_core_get_userlink($user_id), '<a href="' . bp_get_group_permalink($bp->groups->current_group) . '">' . esc_html($bp->groups->current_group->name) . '</a>'); $rating_content = false; if (!empty($rating)) { $rating_content = '<span class="p-rating">' . bpgr_get_review_rating_html($rating) . '</span>'; } $activity_content = $rating_content . $content; $activity_id = groups_record_activity(array('user_id' => $user_id, 'action' => $activity_action, 'content' => $activity_content, 'type' => 'review', 'item_id' => $group_id)); $this->add_rating(array('score' => $rating, 'activity_id' => $activity_id, 'group_id' => $group_id)); groups_update_groupmeta($group_id, 'last_activity', gmdate("Y-m-d H:i:s")); do_action('bpgr_posted_review', $args, $activity_id); return $activity_id; }
public function test_groups_is_user_member_should_return_false_when_user_is_also_banned() { $this->add_user_to_group(self::$user, self::$groups[1]); $m = new BP_Groups_Member(self::$user, self::$groups[1]); $m->ban(); $this->assertEquals(false, groups_is_user_member(self::$user, self::$groups[1])); }
/** * @param EM_Event $EM_Event */ function bp_em_group_event_save($result, $EM_Event) { if (is_object($EM_Event) && !empty($EM_Event->event_id)) { if (!empty($_REQUEST['group_id']) && is_numeric($_REQUEST['group_id']) && bp_is_active('groups')) { //we have been requested an event creation tied to a group, so does this group exist, and does this person have admin rights to it? if (groups_is_user_admin(get_current_user_id(), $_REQUEST['group_id'])) { $EM_Event->group_id = $_REQUEST['group_id']; } if (!empty($EM_Event->group_id)) { //if group is private, make it private $group = groups_get_group(array('group_id' => $EM_Event->group_id)); $is_member = groups_is_user_member(get_current_user_id(), $EM_Event->group_id) || groups_is_user_admin(get_current_user_id(), $EM_Event->group_id) || groups_is_user_mod(get_current_user_id(), $EM_Event->group_id); if ($group->status != 'public' && $is_member) { //Make sure event status is private and set post status to private global $wpdb; $EM_Event->event_private = 1; $wpdb->update($wpdb->posts, array('post_status' => 'private'), array('ID' => $EM_Event->post_id)); $wpdb->update(EM_EVENTS_TABLE, array('event_private' => 1), array('event_id' => $EM_Event->event_id)); } } } else { $EM_Event->group_id = null; } } return $result; }
/** * Load the Forums directory. */ function bp_forums_directory_forums_setup() { // Get BuddyPress once $bp = buddypress(); if (bp_is_forums_component() && (!bp_current_action() || 'tag' == bp_current_action() && bp_action_variables()) && !bp_current_item()) { if (!bp_forums_has_directory()) { return false; } if (!bp_forums_is_installed_correctly()) { bp_core_add_message(__('The forums component has not been set up yet.', 'buddypress'), 'error'); bp_core_redirect(bp_get_root_domain()); } bp_update_is_directory(true, 'forums'); do_action('bbpress_init'); // Check to see if the user has posted a new topic from the forums page. if (isset($_POST['submit_topic']) && bp_is_active('forums')) { check_admin_referer('bp_forums_new_topic'); $bp->groups->current_group = groups_get_group(array('group_id' => $_POST['topic_group_id'])); if (!empty($bp->groups->current_group->id)) { // Auto join this user if they are not yet a member of this group if (!bp_current_user_can('bp_moderate') && 'public' == $bp->groups->current_group->status && !groups_is_user_member(bp_loggedin_user_id(), $bp->groups->current_group->id)) { groups_join_group($bp->groups->current_group->id); } $error_message = ''; $forum_id = groups_get_groupmeta($bp->groups->current_group->id, 'forum_id'); if (!empty($forum_id)) { if (empty($_POST['topic_title'])) { $error_message = __('Please provide a title for your forum topic.', 'buddypress'); } else { if (empty($_POST['topic_text'])) { $error_message = __('Forum posts cannot be empty. Please enter some text.', 'buddypress'); } } if ($error_message) { bp_core_add_message($error_message, 'error'); $redirect = bp_get_group_permalink($bp->groups->current_group) . 'forum'; } else { if (!($topic = groups_new_group_forum_topic($_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id))) { bp_core_add_message(__('There was an error when creating the topic', 'buddypress'), 'error'); $redirect = bp_get_group_permalink($bp->groups->current_group) . 'forum'; } else { bp_core_add_message(__('The topic was created successfully', 'buddypress')); $redirect = bp_get_group_permalink($bp->groups->current_group) . 'forum/topic/' . $topic->topic_slug . '/'; } } bp_core_redirect($redirect); } else { bp_core_add_message(__('Please pick the group forum where you would like to post this topic.', 'buddypress'), 'error'); bp_core_redirect(add_query_arg('new', '', bp_get_forums_directory_permalink())); } } else { bp_core_add_message(__('Please pick the group forum where you would like to post this topic.', 'buddypress'), 'error'); bp_core_redirect(add_query_arg('new', '', bp_get_forums_directory_permalink())); } } do_action('bp_forums_directory_forums_setup'); bp_core_load_template(apply_filters('bp_forums_template_directory_forums_setup', 'forums/index')); } }
/** * * @return type * @since 0.5 * @version 1.2.2 * v2, 10/5/2013 */ function cac_catch_group_doc_request() { $error = false; if (empty($_GET['get_group_doc'])) { return; } $doc_id = $_GET['get_group_doc']; // Check to see whether the current user has access to the doc in question $file_deets = explode('/', $doc_id); $group_id = $file_deets[0]; $group = new BP_Groups_Group($group_id); $doc_name = $file_deets[1]; if (empty($group->id)) { $error = array('message' => __('That group does not exist.', 'bp-group-documents'), 'redirect' => bp_get_root_domain()); } else { if ($group->status != 'public') { // If the group is not public, if (!is_super_admin()) { //then the user must be logged in and // a member of the group to download the document if (!is_user_logged_in() || !groups_is_user_member(bp_loggedin_user_id(), $group_id)) { $error = array('message' => sprintf(__('You must be a logged-in member of the group %s to access this document. If you are a member of the group, please log into the site and try again.', 'bp-group-documents'), $group->name), 'redirect' => bp_get_group_permalink($group)); } } } // If we have gotten this far without an error, then the download can go through if (!$error) { $document = new BP_Group_Documents(); $document->populate_by_file($doc_name); $doc_path = $document->get_path(); clearstatcache(); if (file_exists($doc_path)) { $mime_type = mime_content_type($doc_path); $doc_size = filesize($doc_path); header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); header("Pragma: hack"); header("Content-Type: {$mime_type}; name='" . $file_deets[1] . "'"); header("Content-Length: " . $doc_size); header('Content-Disposition: inline; filename="' . $file_deets[1] . '"'); header("Content-Transfer-Encoding: binary"); ob_clean(); flush(); readfile($doc_path); die; } else { // File does not exist $error = array('message' => _e('The file could not be found.', 'bp-group-documents'), 'redirect' => bp_get_group_permalink($group) . 'documents'); } } } // If we have gotten this far, there was an error. Add a message and redirect bp_core_add_message($error['message'], 'error'); bp_core_redirect($error['redirect']); }
/** * Here you can see more customization of the config options */ function __construct() { global $buddyforms, $buddyforms_user_can; $buddyforms_pig = get_option('buddyforms_pig_options'); $this->post_in_group_form_slug = groups_get_groupmeta(bp_get_current_group_id(), '_bf_pig_form_slug', true); $this->buddyforms_pig = groups_get_groupmeta(bp_get_current_group_id(), '_buddyforms_pig', true); $buddyforms_user_can = false; //$this->enable_create_step = false; $form_slug = $this->post_in_group_form_slug; $name = $buddyforms[$form_slug]['name']; if (isset($this->buddyforms_pig['create'])) { switch ($this->buddyforms_pig['create']) { case 'admin': if (groups_is_user_admin(bp_loggedin_user_id(), bp_get_current_group_id())) { $buddyforms_user_can = true; } break; case 'mod': if (groups_is_user_mod(bp_loggedin_user_id(), bp_get_current_group_id()) || groups_is_user_admin(bp_loggedin_user_id(), bp_get_current_group_id())) { $buddyforms_user_can = true; } break; case 'member': default: if (groups_is_user_member(bp_loggedin_user_id(), bp_get_current_group_id())) { $buddyforms_user_can = true; } break; } } $args = array('slug' => $form_slug, 'name' => $name); switch ($buddyforms_pig['permission']) { case 'all': add_action('bp_after_group_settings_admin', array($this, 'bp_pig_after_group_manage_members_admin'), 1, 1); add_action('groups_group_settings_edited', array($this, 'bf_pig_groups_group_settings_edited'), 10, 1); add_action('bp_after_group_settings_creation_step', array($this, 'bp_pig_after_group_manage_members_admin'), 1, 1); add_action('groups_create_group_step_save_group-settings', array($this, 'bf_pig_groups_group_settings_edited'), 10, 1); break; case 'group-admin': add_action('bp_after_group_settings_admin', array($this, 'bp_pig_after_group_manage_members_admin'), 1, 1); add_action('groups_group_settings_edited', array($this, 'bf_pig_groups_group_settings_edited'), 10, 1); break; case 'admin': if (is_super_admin()) { add_action('bp_after_group_settings_admin', array($this, 'bp_pig_after_group_manage_members_admin'), 1, 1); add_action('groups_group_settings_edited', array($this, 'bf_pig_groups_group_settings_edited'), 10, 1); } break; } parent::init($args); }
function bp_checkins_single_place_check_access() { if (bp_checkins_if_single_place()) { global $wp_query, $bp; $redirect = bp_get_checkins_places_home(); $check_places = wp_cache_get('single_query', 'bp_checkins_single'); if (false === $check_places) { $check_places = new BP_Checkins_Place(); $check_places->get(array('p' => bp_action_variable(0))); } $place_id = $check_places->query->post->ID; if (empty($place_id)) { bp_core_add_message(__('OOps, looks like this place does not exist ! You can try to search for it or browse categories', 'bp-checkins'), 'error'); bp_core_redirect($redirect); } else { if (bp_is_active('groups')) { // 1. check for group access !! $group_id = get_post_meta($place_id, '_bpci_group_id', true); $bp->groups->current_group = new BP_Groups_Group($group_id); if (isset($bp->groups->current_group->status) && 'public' != $bp->groups->current_group->status) { if (!is_user_logged_in() || !groups_is_user_member($bp->loggedin_user->id, $group_id)) { bp_core_add_message(__('OOps, looks like this place is private ! You can try to search for another one or browse categories', 'bp-checkins'), 'error'); bp_core_redirect($redirect); } } } // 2. check for live type to load the timer on the client side ! if ("live" == get_post_meta($place_id, 'bpci_places_is_live', true)) { $start = get_post_meta($place_id, 'bpci_places_live_start', true); $end = get_post_meta($place_id, 'bpci_places_live_end', true); $start = strtotime($start); $end = strtotime($end); $now = current_time('timestamp'); if ($end >= $now && $now >= $start) { add_filter('bp_get_the_body_class', 'bp_checkins_body_class_is_live'); } } add_filter('bp_get_the_body_class', 'bp_checkins_body_class_is_single_place'); // 3. Check for notifications if (isset($_GET['n'])) { bp_core_delete_notifications_by_item_id($bp->loggedin_user->id, $place_id, 'checkins', 'new_comment'); } } } }
/** * copied from boss theme functions because of code error * * @return int */ function rw_bp_doc_single_group_id($return_dummy = true) { $group_id = false; if (function_exists('bp_is_active') && bp_is_active('groups')) { if (bp_docs_is_doc_create()) { $group_slug = isset($_GET['group']) ? $_GET['group'] : ''; if ($group_slug) { global $bp, $wpdb; $group_id = $wpdb->get_var($wpdb->prepare("SELECT id FROM {$bp->groups->table_name} WHERE slug=%s", $group_slug)); } if (!$group_id) { if ($return_dummy) { $group_id = 99999999; } } return $group_id; } $doc_group_ids = bp_docs_get_associated_group_id(get_the_ID(), false, true); $doc_groups = array(); foreach ($doc_group_ids as $dgid) { $maybe_group = groups_get_group($dgid); // since buddypress 2.7 param should be integer // Don't show hidden groups if the // current user is not a member if (isset($maybe_group->status) && 'hidden' === $maybe_group->status) { // @todo this is slow if (!current_user_can('bp_moderate') && !groups_is_user_member(bp_loggedin_user_id(), $dgid)) { continue; } } if (!empty($maybe_group->name)) { $doc_groups[] = $dgid; } } if (!empty($doc_groups) && count($doc_groups) == 1) { $group_id = $doc_groups[0]; } } if (!$group_id) { if ($return_dummy) { $group_id = 99999999; } } return $group_id; }
function bp_forums_directory_forums_setup() { global $bp; if ( $bp->current_component == $bp->forums->slug ) { if ( (int) $bp->site_options['bp-disable-forum-directory'] || !function_exists( 'groups_install' ) ) return false; if ( !bp_forums_is_installed_correctly() ) { bp_core_add_message( __( 'The forums component has not been set up yet.', 'buddypress' ), 'error' ); bp_core_redirect( $bp->root_domain ); } $bp->is_directory = true; do_action( 'bbpress_init' ); /* Check to see if the user has posted a new topic from the forums page. */ if ( isset( $_POST['submit_topic'] ) && function_exists( 'bp_forums_new_topic' ) ) { /* Check the nonce */ check_admin_referer( 'bp_forums_new_topic' ); if ( $bp->groups->current_group = groups_get_group( array( 'group_id' => $_POST['topic_group_id'] ) ) ) { /* Auto join this user if they are not yet a member of this group */ if ( !is_super_admin() && 'public' == $bp->groups->current_group->status && !groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) groups_join_group( $bp->groups->current_group->id, $bp->groups->current_group->id ); if ( $forum_id = groups_get_groupmeta( $bp->groups->current_group->id, 'forum_id' ) ) { if ( !$topic = groups_new_group_forum_topic( $_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id ) ) bp_core_add_message( __( 'There was an error when creating the topic', 'buddypress'), 'error' ); else bp_core_add_message( __( 'The topic was created successfully', 'buddypress') ); bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) . '/forum/topic/' . $topic->topic_slug . '/' ); } else { bp_core_add_message( __( 'Please pick the group forum where you would like to post this topic.', 'buddypress' ), 'error' ); } } } do_action( 'bp_forums_directory_forums_setup' ); bp_core_load_template( apply_filters( 'bp_forums_template_directory_forums_setup', 'forums/index' ) ); } }
function group_activity_subscription() { $this->name = __('Email Options', 'bp-ass'); $this->slug = 'notifications'; // Only enable the notifications nav item if the user is a member of the group if (bp_is_group() && groups_is_user_member(bp_loggedin_user_id(), bp_get_current_group_id())) { $this->enable_nav_item = true; } else { $this->enable_nav_item = false; } $this->nav_item_position = 91; $this->enable_create_step = false; if (get_option('ass-admin-can-send-email') == 'no') { $this->enable_edit_item = false; } // hook in the css and js add_action('wp_print_styles', array(&$this, 'add_settings_stylesheet')); add_action('wp_enqueue_scripts', array(&$this, 'ass_add_javascript'), 1); }
function display() { global $bp, $wpmudev_chat; if (groups_is_user_member($bp->loggedin_user->id, $bp->groups->current_group->id)) { $chat_id = 'bp-group-' . $bp->groups->current_group->id; //echo "chat_id=[". $chat_id ."]<br />"; $atts = groups_get_groupmeta($bp->groups->current_group->id, self::settings_slug); if (empty($atts)) { $atts = array('id' => $chat_id, 'session_type' => 'bp-group', 'box_input_position' => 'top', 'box-width' => '100%', 'users_list_show' => 'avatar', 'users_list_position' => 'right', 'users_list_width' => '30%', 'users_list_avatar_width' => '50'); } // We changed the key because it was too long for the wp_options optin_name field if (!isset($atts['id']) || $atts['id'] != $chat_id) { $atts['id'] = $chat_id; } echo $wpmudev_chat->process_chat_shortcode($atts); } else { ?> <p><?php _e('You must be a member of this group to use Chat', $wpmudev_chat->translation_domain); ?> </p><?php } }
public function view_single() { $bp = buddypress(); if (function_exists('bp_is_group') && !bp_is_group()) { return; } //do not catch the request for creating new post if (bp_is_action_variable('create', 0)) { return; } $current_group = groups_get_current_group(); if (bcg_is_disabled($current_group->id)) { return; } //if the group is private/hidden and user is not member, return if (($current_group->status == 'private' || $current_group->status == 'hidden') && (!is_user_logged_in() || !groups_is_user_member(bp_loggedin_user_id(), $current_group->id))) { return; //avoid prioivacy troubles } if (bcg_is_component() && !empty($bp->action_variables[0])) { //should we check for the existence of the post? add_action('bp_template_content', array($this, 'get_single_post_contents')); } }
/** * Set up component global data. * * The BP_GROUPS_SLUG constant is deprecated, and only used here for * backwards compatibility. * * @since 1.5.0 * * @see BP_Component::setup_globals() for a description of arguments. * * @param array $args See BP_Component::setup_globals() for a description. */ public function setup_globals($args = array()) { $bp = buddypress(); // Define a slug, if necessary. if (!defined('BP_GROUPS_SLUG')) { define('BP_GROUPS_SLUG', $this->id); } // Global tables for groups component. $global_tables = array('table_name' => $bp->table_prefix . 'bp_groups', 'table_name_members' => $bp->table_prefix . 'bp_groups_members', 'table_name_groupmeta' => $bp->table_prefix . 'bp_groups_groupmeta'); // Metadata tables for groups component. $meta_tables = array('group' => $bp->table_prefix . 'bp_groups_groupmeta'); // All globals for groups component. // Note that global_tables is included in this array. $args = array('slug' => BP_GROUPS_SLUG, 'root_slug' => isset($bp->pages->groups->slug) ? $bp->pages->groups->slug : BP_GROUPS_SLUG, 'has_directory' => true, 'directory_title' => _x('Groups', 'component directory title', 'buddypress'), 'notification_callback' => 'groups_format_notifications', 'search_string' => _x('Search Groups...', 'Component directory search', 'buddypress'), 'global_tables' => $global_tables, 'meta_tables' => $meta_tables); parent::setup_globals($args); /* Single Group Globals **********************************************/ // Are we viewing a single group? if (bp_is_groups_component() && ($group_id = BP_Groups_Group::group_exists(bp_current_action()))) { $bp->is_single_item = true; /** * Filters the current PHP Class being used. * * @since 1.5.0 * * @param string $value Name of the class being used. */ $current_group_class = apply_filters('bp_groups_current_group_class', 'BP_Groups_Group'); if ($current_group_class == 'BP_Groups_Group') { $this->current_group = groups_get_group(array('group_id' => $group_id, 'populate_extras' => true)); } else { /** * Filters the current group object being instantiated from previous filter. * * @since 1.5.0 * * @param object $value Newly instantiated object for the group. */ $this->current_group = apply_filters('bp_groups_current_group_object', new $current_group_class($group_id)); } // When in a single group, the first action is bumped down one because of the // group name, so we need to adjust this and set the group name to current_item. $bp->current_item = bp_current_action(); $bp->current_action = bp_action_variable(0); array_shift($bp->action_variables); // Using "item" not "group" for generic support in other components. if (bp_current_user_can('bp_moderate')) { bp_update_is_item_admin(true, 'groups'); } else { bp_update_is_item_admin(groups_is_user_admin(bp_loggedin_user_id(), $this->current_group->id), 'groups'); } // If the user is not an admin, check if they are a moderator. if (!bp_is_item_admin()) { bp_update_is_item_mod(groups_is_user_mod(bp_loggedin_user_id(), $this->current_group->id), 'groups'); } // Is the logged in user a member of the group? if (is_user_logged_in() && groups_is_user_member(bp_loggedin_user_id(), $this->current_group->id)) { $this->current_group->is_user_member = true; } else { $this->current_group->is_user_member = false; } // Should this group be visible to the logged in user? if ('public' == $this->current_group->status || $this->current_group->is_user_member) { $this->current_group->is_visible = true; } else { $this->current_group->is_visible = false; } // If this is a private or hidden group, does the user have access? if ('private' == $this->current_group->status || 'hidden' == $this->current_group->status) { if ($this->current_group->is_user_member && is_user_logged_in() || bp_current_user_can('bp_moderate')) { $this->current_group->user_has_access = true; } else { $this->current_group->user_has_access = false; } } else { $this->current_group->user_has_access = true; } // Check once if the current group has a custom front template. $this->current_group->front_template = bp_groups_get_front_template($this->current_group); // Set current_group to 0 to prevent debug errors. } else { $this->current_group = 0; } /** * Filters the list of illegal groups names/slugs. * * @since 1.0.0 * * @param array $value Array of illegal group names/slugs. */ $this->forbidden_names = apply_filters('groups_forbidden_names', array('my-groups', 'create', 'invites', 'send-invites', 'forum', 'delete', 'add', 'admin', 'request-membership', 'members', 'settings', 'avatar', $this->slug, $this->root_slug)); // If the user was attempting to access a group, but no group by that name was found, 404. if (bp_is_groups_component() && empty($this->current_group) && bp_current_action() && !in_array(bp_current_action(), $this->forbidden_names)) { bp_do_404(); return; } /** * Filters the preconfigured groups creation steps. * * @since 1.1.0 * * @param array $value Array of preconfigured group creation steps. */ $this->group_creation_steps = apply_filters('groups_create_group_steps', array('group-details' => array('name' => _x('Details', 'Group screen nav', 'buddypress'), 'position' => 0), 'group-settings' => array('name' => _x('Settings', 'Group screen nav', 'buddypress'), 'position' => 10))); // If avatar uploads are not disabled, add avatar option. $disabled_avatar_uploads = (int) bp_disable_group_avatar_uploads(); if (!$disabled_avatar_uploads && $bp->avatar->show_avatars) { $this->group_creation_steps['group-avatar'] = array('name' => _x('Photo', 'Group screen nav', 'buddypress'), 'position' => 20); } if (bp_group_use_cover_image_header()) { $this->group_creation_steps['group-cover-image'] = array('name' => _x('Cover Image', 'Group screen nav', 'buddypress'), 'position' => 25); } // If friends component is active, add invitations. if (bp_is_active('friends')) { $this->group_creation_steps['group-invites'] = array('name' => _x('Invites', 'Group screen nav', 'buddypress'), 'position' => 30); } /** * Filters the list of valid groups statuses. * * @since 1.1.0 * * @param array $value Array of valid group statuses. */ $this->valid_status = apply_filters('groups_valid_status', array('public', 'private', 'hidden')); // Auto join group when non group member performs group activity. $this->auto_join = defined('BP_DISABLE_AUTO_GROUP_JOIN') && BP_DISABLE_AUTO_GROUP_JOIN ? false : true; }
/** * * @param type $group_id * @param type $user_id * * @return boolean */ function can_user_create_album_in_group($group_id = false, $user_id = false) { if ($group_id == false) { $group = groups_get_current_group(); $group_id = $group->id; } $upload_level = groups_get_groupmeta($group_id, "rt_media_group_control_level"); if (empty($upload_level)) { $upload_level = groups_get_groupmeta($group_id, "bp_media_group_control_level"); if (empty($upload_level)) { $upload_level = "all"; } } $user_id = get_current_user_id(); $display_flag = false; if (groups_is_user_member($user_id, $group_id)) { if ($upload_level == "admin") { if (groups_is_user_admin($user_id, $group_id) > 0) { $display_flag = true; } } else { if ($upload_level == "moderators") { if (groups_is_user_mod($user_id, $group_id) || groups_is_user_admin($user_id, $group_id)) { $display_flag = true; } } else { $display_flag = true; } } } $display_flag = apply_filters('can_user_create_album_in_group', $display_flag); return $display_flag; }
/** * Load the page for a single activity item. * * @since 1.2.0 * * @uses bp_is_activity_component() * @uses bp_activity_get_specific() * @uses bp_current_action() * @uses bp_action_variables() * @uses bp_do_404() * @uses bp_is_active() * @uses groups_get_group() * @uses groups_is_user_member() * @uses apply_filters_ref_array() To call the 'bp_activity_permalink_access' hook. * @uses do_action() To call the 'bp_activity_screen_single_activity_permalink' hook. * @uses bp_core_add_message() * @uses is_user_logged_in() * @uses bp_core_redirect() * @uses site_url() * @uses esc_url() * @uses bp_get_root_domain() * @uses bp_get_activity_root_slug() * @uses bp_core_load_template() * @uses apply_filters() To call the 'bp_activity_template_profile_activity_permalink' hook. */ function bp_activity_screen_single_activity_permalink() { $bp = buddypress(); // No displayed user or not viewing activity component. if (!bp_is_activity_component()) { return false; } if (!bp_current_action() || !is_numeric(bp_current_action())) { return false; } // Get the activity details. $activity = bp_activity_get_specific(array('activity_ids' => bp_current_action(), 'show_hidden' => true, 'spam' => 'ham_only')); // 404 if activity does not exist if (empty($activity['activities'][0]) || bp_action_variables()) { bp_do_404(); return; } else { $activity = $activity['activities'][0]; } // Default access is true. $has_access = true; // If activity is from a group, do an extra cap check. if (isset($bp->groups->id) && $activity->component == $bp->groups->id) { // Activity is from a group, but groups is currently disabled. if (!bp_is_active('groups')) { bp_do_404(); return; } // Check to see if the group is not public, if so, check the // user has access to see this activity. if ($group = groups_get_group(array('group_id' => $activity->item_id))) { // Group is not public. if ('public' != $group->status) { // User is not a member of group. if (!groups_is_user_member(bp_loggedin_user_id(), $group->id)) { $has_access = false; } } } } /** * Filters the access permission for a single activity view. * * @since 1.2.0 * * @param array $access Array holding the current $has_access value and current activity item instance. */ $has_access = apply_filters_ref_array('bp_activity_permalink_access', array($has_access, &$activity)); /** * Fires before the loading of a single activity template file. * * @since 1.2.0 * * @param BP_Activity_Activity $activity Object representing the current activity item being displayed. * @param bool $has_access Whether or not the current user has access to view activity. */ do_action('bp_activity_screen_single_activity_permalink', $activity, $has_access); // Access is specifically disallowed. if (false === $has_access) { // User feedback. bp_core_add_message(__('You do not have access to this activity.', 'buddypress'), 'error'); // Redirect based on logged in status. if (is_user_logged_in()) { $url = bp_loggedin_user_domain(); } else { $url = sprintf(site_url('wp-login.php?redirect_to=%s'), urlencode(esc_url_raw(bp_activity_get_permalink((int) bp_current_action())))); } bp_core_redirect($url); } /** * Filters the template to load for a single activity screen. * * @since 1.0.0 * * @param string $template Path to the activity template to load. */ bp_core_load_template(apply_filters('bp_activity_template_profile_activity_permalink', 'members/single/activity/permalink')); }
/** * Opens a folder and list the files attach to it depending on its privacy * * @uses buddydrive_get_buddyfile() to get the folder * @uses buddydrive_get_folder_post_type() to get the folder post type * @uses bp_is_active() to check if friends or groups components are actives * @uses friends_check_friendship() to check if current user is a friend of the folder owner * @uses groups_is_user_member() to check if the user is a member of the group the folder is attached to * @uses buddydrive_get_template() to get the template for bp-default or any theme * @return string the list of files */ function buddydrive_open_buddyfolder() { // Bail if not a POST action if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) { return; } $buddyfolder_id = $_POST['folder']; $buddyfolder = buddydrive_get_buddyfile($buddyfolder_id, buddydrive_get_folder_post_type()); $result = array(); $access = false; $buddyscope = $_POST['scope']; if (empty($buddyfolder->ID)) { $result[] = '<tr id="no-buddyitems"><td colspan="5"><div id="message" class="info"><p>' . __('Sorry, this folder does not exist anymore.', 'buddydrive') . '</p></div></td></tr>'; } else { switch ($buddyfolder->check_for) { case 'private': $access = $buddyfolder->user_id == bp_loggedin_user_id() ? true : false; break; case 'public': $access = true; break; case 'password': $access = true; break; case 'friends': if (bp_is_active('friends') && friends_check_friendship($buddyfolder->user_id, bp_loggedin_user_id()) || $buddyfolder->user_id == bp_loggedin_user_id()) { $access = true; } else { $access = false; } break; case 'groups': if (bp_is_active('groups') && groups_is_user_member(bp_loggedin_user_id(), intval($buddyfolder->group))) { $access = true; } else { if ($buddyfolder->user_id == bp_loggedin_user_id()) { $access = true; } else { if (is_super_admin()) { $access = true; } else { $access = false; } } } break; } if (!empty($access) || bp_current_user_can('bp_moderate')) { ob_start(); bp_get_template_part('buddydrive-loop'); $result[] = ob_get_contents(); ob_end_clean(); } else { $result[] = '<tr id="no-access"><td colspan="5"><div id="message" class="info"><p>' . __('Sorry, this folder is private', 'buddydrive') . '</p></div></td></tr>'; } $name_required = !empty($_POST['foldername']) ? 1 : 0; if (!empty($name_required)) { $result[] = $buddyfolder->title; } } echo json_encode($result); die; }
/** * This screen function handles actions related to group forums. */ function groups_screen_group_forum() { if (!bp_is_active('forums') || !bp_forums_is_installed_correctly()) { return false; } if (bp_action_variable(0) && !bp_is_action_variable('topic', 0)) { bp_do_404(); return; } $bp = buddypress(); if (!$bp->groups->current_group->user_has_access) { bp_core_no_access(); return; } if (!bp_is_single_item()) { return false; } // Fetch the details we need. $topic_slug = (string) bp_action_variable(1); $topic_id = bp_forums_get_topic_id_from_slug($topic_slug); $forum_id = groups_get_groupmeta($bp->groups->current_group->id, 'forum_id'); $user_is_banned = false; if (!bp_current_user_can('bp_moderate') && groups_is_user_banned(bp_loggedin_user_id(), $bp->groups->current_group->id)) { $user_is_banned = true; } if (!empty($topic_slug) && !empty($topic_id)) { // Posting a reply. if (!$user_is_banned && !bp_action_variable(2) && isset($_POST['submit_reply'])) { // Check the nonce. check_admin_referer('bp_forums_new_reply'); // Auto join this user if they are not yet a member of this group. if (bp_groups_auto_join() && !bp_current_user_can('bp_moderate') && 'public' == $bp->groups->current_group->status && !groups_is_user_member(bp_loggedin_user_id(), $bp->groups->current_group->id)) { groups_join_group($bp->groups->current_group->id, bp_loggedin_user_id()); } $topic_page = isset($_GET['topic_page']) ? $_GET['topic_page'] : false; // Don't allow reply flooding. if (bp_forums_reply_exists($_POST['reply_text'], $topic_id, bp_loggedin_user_id())) { bp_core_add_message(__('It looks like you\'ve already said that!', 'buddypress'), 'error'); } else { if (!($post_id = groups_new_group_forum_post($_POST['reply_text'], $topic_id, $topic_page))) { bp_core_add_message(__('There was an error when replying to that topic', 'buddypress'), 'error'); } else { bp_core_add_message(__('Your reply was posted successfully', 'buddypress')); } } $query_vars = isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : ''; $redirect = bp_get_group_permalink(groups_get_current_group()) . 'forum/topic/' . $topic_slug . '/' . $query_vars; if (!empty($post_id)) { $redirect .= '#post-' . $post_id; } bp_core_redirect($redirect); } elseif (bp_is_action_variable('stick', 2) && (bp_is_item_admin() || bp_is_item_mod())) { // Check the nonce. check_admin_referer('bp_forums_stick_topic'); if (!bp_forums_sticky_topic(array('topic_id' => $topic_id))) { bp_core_add_message(__('There was an error when making that topic a sticky', 'buddypress'), 'error'); } else { bp_core_add_message(__('The topic was made sticky successfully', 'buddypress')); } /** * Fires after a group forum topic has been stickied. * * @since 1.1.0 * * @param int $topic_id ID of the topic being stickied. */ do_action('groups_stick_forum_topic', $topic_id); bp_core_redirect(wp_get_referer()); } elseif (bp_is_action_variable('unstick', 2) && (bp_is_item_admin() || bp_is_item_mod())) { // Check the nonce. check_admin_referer('bp_forums_unstick_topic'); if (!bp_forums_sticky_topic(array('topic_id' => $topic_id, 'mode' => 'unstick'))) { bp_core_add_message(__('There was an error when unsticking that topic', 'buddypress'), 'error'); } else { bp_core_add_message(__('The topic was unstuck successfully', 'buddypress')); } /** * Fires after a group forum topic has been un-stickied. * * @since 1.1.0 * * @param int $topic_id ID of the topic being un-stickied. */ do_action('groups_unstick_forum_topic', $topic_id); bp_core_redirect(wp_get_referer()); } elseif (bp_is_action_variable('close', 2) && (bp_is_item_admin() || bp_is_item_mod())) { // Check the nonce. check_admin_referer('bp_forums_close_topic'); if (!bp_forums_openclose_topic(array('topic_id' => $topic_id))) { bp_core_add_message(__('There was an error when closing that topic', 'buddypress'), 'error'); } else { bp_core_add_message(__('The topic was closed successfully', 'buddypress')); } /** * Fires after a group forum topic has been closed. * * @since 1.1.0 * * @param int $topic_id ID of the topic being closed. */ do_action('groups_close_forum_topic', $topic_id); bp_core_redirect(wp_get_referer()); } elseif (bp_is_action_variable('open', 2) && (bp_is_item_admin() || bp_is_item_mod())) { // Check the nonce. check_admin_referer('bp_forums_open_topic'); if (!bp_forums_openclose_topic(array('topic_id' => $topic_id, 'mode' => 'open'))) { bp_core_add_message(__('There was an error when opening that topic', 'buddypress'), 'error'); } else { bp_core_add_message(__('The topic was opened successfully', 'buddypress')); } /** * Fires after a group forum topic has been opened. * * @since 1.1.0 * * @param int $topic_id ID of the topic being opened. */ do_action('groups_open_forum_topic', $topic_id); bp_core_redirect(wp_get_referer()); } elseif (empty($user_is_banned) && bp_is_action_variable('delete', 2) && !bp_action_variable(3)) { // Fetch the topic. $topic = bp_forums_get_topic_details($topic_id); /* Check the logged in user can delete this topic */ if (!bp_is_item_admin() && !bp_is_item_mod() && (int) bp_loggedin_user_id() != (int) $topic->topic_poster) { bp_core_redirect(wp_get_referer()); } // Check the nonce. check_admin_referer('bp_forums_delete_topic'); /** * Fires before a group forum topic is deleted. * * @since 1.5.0 * * @param int $topic_id ID of the topic being deleted. */ do_action('groups_before_delete_forum_topic', $topic_id); if (!groups_delete_group_forum_topic($topic_id)) { bp_core_add_message(__('There was an error deleting the topic', 'buddypress'), 'error'); } else { bp_core_add_message(__('The topic was deleted successfully', 'buddypress')); } /** * Fires after a group forum topic has been deleted. * * @since 1.5.0 * * @param int $topic_id ID of the topic being deleted. */ do_action('groups_delete_forum_topic', $topic_id); bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'forum/'); } elseif (empty($user_is_banned) && bp_is_action_variable('edit', 2) && !bp_action_variable(3)) { // Fetch the topic. $topic = bp_forums_get_topic_details($topic_id); // Check the logged in user can edit this topic. if (!bp_is_item_admin() && !bp_is_item_mod() && (int) bp_loggedin_user_id() != (int) $topic->topic_poster) { bp_core_redirect(wp_get_referer()); } if (isset($_POST['save_changes'])) { // Check the nonce. check_admin_referer('bp_forums_edit_topic'); $topic_tags = !empty($_POST['topic_tags']) ? $_POST['topic_tags'] : false; if (!groups_update_group_forum_topic($topic_id, $_POST['topic_title'], $_POST['topic_text'], $topic_tags)) { bp_core_add_message(__('There was an error when editing that topic', 'buddypress'), 'error'); } else { bp_core_add_message(__('The topic was edited successfully', 'buddypress')); } /** * Fires after a group forum topic has been edited. * * @since 1.1.0 * * @param int $topic_id ID of the topic being edited. */ do_action('groups_edit_forum_topic', $topic_id); bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'forum/topic/' . $topic_slug . '/'); } /** * Filters the template to load for a topic edit page. * * @since 1.1.0 * * @param string $value Path to a topic edit template. */ bp_core_load_template(apply_filters('groups_template_group_forum_topic_edit', 'groups/single/home')); // Delete a post. } elseif (empty($user_is_banned) && bp_is_action_variable('delete', 2) && ($post_id = bp_action_variable(4))) { // Fetch the post. $post = bp_forums_get_post($post_id); // Check the logged in user can edit this topic. if (!bp_is_item_admin() && !bp_is_item_mod() && (int) bp_loggedin_user_id() != (int) $post->poster_id) { bp_core_redirect(wp_get_referer()); } // Check the nonce. check_admin_referer('bp_forums_delete_post'); /** * Fires before the deletion of a group forum post. * * @since 1.5.0 * * @param int $post_id ID of the forum post being deleted. */ do_action('groups_before_delete_forum_post', $post_id); if (!groups_delete_group_forum_post($post_id)) { bp_core_add_message(__('There was an error deleting that post', 'buddypress'), 'error'); } else { bp_core_add_message(__('The post was deleted successfully', 'buddypress')); } /** * Fires after the deletion of a group forum post. * * @since 1.1.0 * * @param int $post_id ID of the forum post being deleted. */ do_action('groups_delete_forum_post', $post_id); bp_core_redirect(wp_get_referer()); // Editing a post. } elseif (empty($user_is_banned) && bp_is_action_variable('edit', 2) && ($post_id = bp_action_variable(4))) { // Fetch the post. $post = bp_forums_get_post($post_id); // Check the logged in user can edit this topic. if (!bp_is_item_admin() && !bp_is_item_mod() && (int) bp_loggedin_user_id() != (int) $post->poster_id) { bp_core_redirect(wp_get_referer()); } if (isset($_POST['save_changes'])) { // Check the nonce. check_admin_referer('bp_forums_edit_post'); $topic_page = isset($_GET['topic_page']) ? $_GET['topic_page'] : false; if (!($post_id = groups_update_group_forum_post($post_id, $_POST['post_text'], $topic_id, $topic_page))) { bp_core_add_message(__('There was an error when editing that post', 'buddypress'), 'error'); } else { bp_core_add_message(__('The post was edited successfully', 'buddypress')); } if ($_SERVER['QUERY_STRING']) { $query_vars = '?' . $_SERVER['QUERY_STRING']; } /** * Fires after the editing of a group forum post. * * @since 1.1.0 * * @param int $post_id ID of the forum post being edited. */ do_action('groups_edit_forum_post', $post_id); bp_core_redirect(bp_get_group_permalink($bp->groups->current_group) . 'forum/topic/' . $topic_slug . '/' . $query_vars . '#post-' . $post_id); } /** This filter is documented in bp-groups/bp-groups-screens.php */ bp_core_load_template(apply_filters('groups_template_group_forum_topic_edit', 'groups/single/home')); // Standard topic display. } else { if (!empty($user_is_banned)) { bp_core_add_message(__("You have been banned from this group.", 'buddypress')); } /** * Filters the template to load for a topic page. * * @since 1.1.0 * * @param string $value Path to a topic template. */ bp_core_load_template(apply_filters('groups_template_group_forum_topic', 'groups/single/home')); } // Forum topic does not exist. } elseif (!empty($topic_slug) && empty($topic_id)) { bp_do_404(); return; } else { // Posting a topic. if (isset($_POST['submit_topic']) && bp_is_active('forums')) { // Check the nonce. check_admin_referer('bp_forums_new_topic'); if ($user_is_banned) { $error_message = __("You have been banned from this group.", 'buddypress'); } elseif (bp_groups_auto_join() && !bp_current_user_can('bp_moderate') && 'public' == $bp->groups->current_group->status && !groups_is_user_member(bp_loggedin_user_id(), $bp->groups->current_group->id)) { // Auto join this user if they are not yet a member of this group. groups_join_group($bp->groups->current_group->id, bp_loggedin_user_id()); } if (empty($_POST['topic_title'])) { $error_message = __('Please provide a title for your forum topic.', 'buddypress'); } elseif (empty($_POST['topic_text'])) { $error_message = __('Forum posts cannot be empty. Please enter some text.', 'buddypress'); } if (empty($forum_id)) { $error_message = __('This group does not have a forum setup yet.', 'buddypress'); } if (isset($error_message)) { bp_core_add_message($error_message, 'error'); $redirect = bp_get_group_permalink($bp->groups->current_group) . 'forum'; } else { if (!($topic = groups_new_group_forum_topic($_POST['topic_title'], $_POST['topic_text'], $_POST['topic_tags'], $forum_id))) { bp_core_add_message(__('There was an error when creating the topic', 'buddypress'), 'error'); $redirect = bp_get_group_permalink($bp->groups->current_group) . 'forum'; } else { bp_core_add_message(__('The topic was created successfully', 'buddypress')); $redirect = bp_get_group_permalink($bp->groups->current_group) . 'forum/topic/' . $topic->topic_slug . '/'; } } bp_core_redirect($redirect); } /** * Fires at the end of the group forum screen loading process. * * @since 1.0.0 * * @param int $topic_id ID of the topic being displayed. * @param int $forum_id ID of the forum being displayed. */ do_action('groups_screen_group_forum', $topic_id, $forum_id); /** * Filters the template to load for a group forum page. * * @since 1.0.0 * * @param string $value Path to a group forum template. */ bp_core_load_template(apply_filters('groups_template_group_forum', 'groups/single/home')); } }
/** * Get a list of friends that a user can invite into this group. * * Excludes friends that are already in the group, and banned friends if the * user is not a group admin. * * @since BuddyPress (1.0.0) * * @param int $user_id User ID whose friends to see can be invited. Default: * ID of the logged-in user. * @param int $group_id Group to check possible invitations against. * @return mixed False if no friends, array of users if friends. */ function friends_get_friends_invite_list($user_id = 0, $group_id = 0) { // Default to logged in user id if (empty($user_id)) { $user_id = bp_loggedin_user_id(); } // Only group admins can invited previously banned users $user_is_admin = (bool) groups_is_user_admin($user_id, $group_id); // Assume no friends $friends = array(); // Default args $args = apply_filters('bp_friends_pre_get_invite_list', array('user_id' => $user_id, 'type' => 'alphabetical', 'per_page' => 0)); // User has friends if (bp_has_members($args)) { /** * Loop through all friends and try to add them to the invitation list. * * Exclude friends that: * 1. are already members of the group * 2. are banned from this group if the current user is also not a * group admin. */ while (bp_members()) { // Load the member bp_the_member(); // Get the user ID of the friend $friend_user_id = bp_get_member_user_id(); // Skip friend if already in the group if (groups_is_user_member($friend_user_id, $group_id)) { continue; } // Skip friend if not group admin and user banned from group if (false === $user_is_admin && groups_is_user_banned($friend_user_id, $group_id)) { continue; } // Friend is safe, so add it to the array of possible friends $friends[] = array('id' => $friend_user_id, 'full_name' => bp_get_member_name()); } } // If no friends, explicitly set to false if (empty($friends)) { $friends = false; } // Allow friends to be filtered return apply_filters('bp_friends_get_invite_list', $friends, $user_id, $group_id); }
/** * Join or leave a group when clicking the "join/leave" button via a POST request. * * @return string HTML * @since BuddyPress (1.2) */ function bp_dtheme_ajax_joinleave_group() { // Bail if not a POST action if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) { return; } if (groups_is_user_banned(bp_loggedin_user_id(), $_POST['gid'])) { return; } if (!($group = groups_get_group(array('group_id' => $_POST['gid'])))) { return; } if (!groups_is_user_member(bp_loggedin_user_id(), $group->id)) { if ('public' == $group->status) { check_ajax_referer('groups_join_group'); if (!groups_join_group($group->id)) { _e('Error joining group', 'logicalboneshug'); } else { echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'logicalboneshug') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'logicalboneshug') . '</a>'; } } elseif ('private' == $group->status) { check_ajax_referer('groups_request_membership'); if (!groups_send_membership_request(bp_loggedin_user_id(), $group->id)) { _e('Error requesting membership', 'logicalboneshug'); } else { echo '<a id="group-' . esc_attr($group->id) . '" class="membership-requested" rel="membership-requested" title="' . __('Membership Requested', 'logicalboneshug') . '" href="' . bp_get_group_permalink($group) . '">' . __('Membership Requested', 'logicalboneshug') . '</a>'; } } } else { check_ajax_referer('groups_leave_group'); if (!groups_leave_group($group->id)) { _e('Error leaving group', 'logicalboneshug'); } elseif ('public' == $group->status) { echo '<a id="group-' . esc_attr($group->id) . '" class="join-group" rel="join" title="' . __('Join Group', 'logicalboneshug') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group') . '">' . __('Join Group', 'logicalboneshug') . '</a>'; } elseif ('private' == $group->status) { echo '<a id="group-' . esc_attr($group->id) . '" class="request-membership" rel="join" title="' . __('Request Membership', 'logicalboneshug') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_send_membership_request') . '">' . __('Request Membership', 'logicalboneshug') . '</a>'; } } exit; }
/** * Checks if the user can get the link of an item * * @param array $privacy the sharing options * @uses buddydrive_get_owner_id() to get owner's id * @uses bp_loggedin_user_id() to get current user id * @uses is_user_logged_in() to check if the visitor is not logged in * @uses bp_is_active() to check for friends and groups component * @uses friends_check_friendship() to check the friendship between owner and current user * @uses groups_is_user_member() to check if the current user is member of the group the BuddyDrive item is attached to * @return boolean true or false */ function buddydrive_current_user_can_link($privacy = false) { $can_link = false; if (buddydrive_get_owner_id() == bp_loggedin_user_id()) { $can_link = true; } else { if (empty($privacy)) { $can_link = false; } else { if (!is_user_logged_in()) { $can_link = false; } else { if ($privacy['privacy'] == 'public') { $can_link = true; } else { if ($privacy['privacy'] == 'friends' && bp_is_active('friends') && friends_check_friendship(buddydrive_get_owner_id(), bp_loggedin_user_id())) { $can_link = true; } else { if ($privacy['privacy'] == 'groups' && bp_is_active('groups') && !empty($privacy['group']) && groups_is_user_member(bp_loggedin_user_id(), intval($privacy['group']))) { $can_link = true; } else { if (is_super_admin()) { $can_link = true; } } } } } } } return apply_filters('buddydrive_current_user_can_link', $can_link); }
function bp_dtheme_ajax_joinleave_group() { global $bp; if (groups_is_user_banned($bp->loggedin_user->id, $_POST['gid'])) { return false; } if (!($group = new BP_Groups_Group($_POST['gid'], false, false))) { return false; } if (!groups_is_user_member($bp->loggedin_user->id, $group->id)) { if ('public' == $group->status) { check_ajax_referer('groups_join_group'); if (!groups_join_group($group->id)) { _e('Error joining group', 'buddypress'); } else { echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'buddypress') . '</a>'; } } else { if ('private' == $group->status) { check_ajax_referer('groups_request_membership'); if (!groups_send_membership_request($bp->loggedin_user->id, $group->id)) { _e('Error requesting membership', 'buddypress'); } else { echo '<a id="group-' . esc_attr($group->id) . '" class="membership-requested" rel="membership-requested" title="' . __('Membership Requested', 'buddypress') . '" href="' . bp_get_group_permalink($group) . '">' . __('Membership Requested', 'buddypress') . '</a>'; } } } } else { check_ajax_referer('groups_leave_group'); if (!groups_leave_group($group->id)) { _e('Error leaving group', 'buddypress'); } else { if ('public' == $group->status) { echo '<a id="group-' . esc_attr($group->id) . '" class="join-group" rel="join" title="' . __('Join Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group') . '">' . __('Join Group', 'buddypress') . '</a>'; } else { if ('private' == $group->status) { echo '<a id="group-' . esc_attr($group->id) . '" class="request-membership" rel="join" title="' . __('Request Membership', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_send_membership_request') . '">' . __('Request Membership', 'buddypress') . '</a>'; } } } } }
/** * Can a user send invitations in the specified group? * * @since 1.5.0 * @since 2.2.0 Added the $user_id parameter. * * @param int $group_id The group ID to check. * @param int $user_id The user ID to check. * @return bool */ function bp_groups_user_can_send_invites($group_id = 0, $user_id = 0) { $can_send_invites = false; $invite_status = false; // If $user_id isn't specified, we check against the logged-in user. if (!$user_id) { $user_id = bp_loggedin_user_id(); } // If $group_id isn't specified, use existing one if available. if (!$group_id) { $group_id = bp_get_current_group_id(); } if ($user_id) { // Users with the 'bp_moderate' cap can always send invitations. if (user_can($user_id, 'bp_moderate')) { $can_send_invites = true; } else { $invite_status = bp_group_get_invite_status($group_id); switch ($invite_status) { case 'admins': if (groups_is_user_admin($user_id, $group_id)) { $can_send_invites = true; } break; case 'mods': if (groups_is_user_mod($user_id, $group_id) || groups_is_user_admin($user_id, $group_id)) { $can_send_invites = true; } break; case 'members': if (groups_is_user_member($user_id, $group_id)) { $can_send_invites = true; } break; } } } /** * Filters whether a user can send invites in a group. * * @since 1.5.0 * @since 2.2.0 Added the $user_id parameter. * * @param bool $can_send_invites Whether the user can send invites * @param int $group_id The group ID being checked * @param bool $invite_status The group's current invite status * @param int $user_id The user ID being checked */ return apply_filters('bp_groups_user_can_send_invites', $can_send_invites, $group_id, $invite_status, $user_id); }
/** * Join or leave a group when clicking the "join/leave" button via a POST request. * * @return string HTML * @since BuddyPress (1.2) */ function bp_legacy_theme_ajax_joinleave_group() { // Bail if not a POST action if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) { return; } // Cast gid as integer $group_id = (int) $_POST['gid']; if (groups_is_user_banned(bp_loggedin_user_id(), $group_id)) { return; } if (!($group = groups_get_group(array('group_id' => $group_id)))) { return; } if (!groups_is_user_member(bp_loggedin_user_id(), $group->id)) { if ('public' == $group->status) { check_ajax_referer('groups_join_group'); if (!groups_join_group($group->id)) { _e('Error joining group', 'buddypress'); } else { echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'buddypress') . '</a>'; } } elseif ('private' == $group->status) { // If the user has already been invited, then this is // an Accept Invitation button if (groups_check_user_has_invite(bp_loggedin_user_id(), $group->id)) { check_ajax_referer('groups_accept_invite'); if (!groups_accept_invite(bp_loggedin_user_id(), $group->id)) { _e('Error requesting membership', 'buddypress'); } else { echo '<a id="group-' . esc_attr($group->id) . '" class="leave-group" rel="leave" title="' . __('Leave Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'buddypress') . '</a>'; } // Otherwise, it's a Request Membership button } else { check_ajax_referer('groups_request_membership'); if (!groups_send_membership_request(bp_loggedin_user_id(), $group->id)) { _e('Error requesting membership', 'buddypress'); } else { echo '<a id="group-' . esc_attr($group->id) . '" class="membership-requested" rel="membership-requested" title="' . __('Membership Requested', 'buddypress') . '" href="' . bp_get_group_permalink($group) . '">' . __('Membership Requested', 'buddypress') . '</a>'; } } } } else { check_ajax_referer('groups_leave_group'); if (!groups_leave_group($group->id)) { _e('Error leaving group', 'buddypress'); } elseif ('public' == $group->status) { echo '<a id="group-' . esc_attr($group->id) . '" class="join-group" rel="join" title="' . __('Join Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group') . '">' . __('Join Group', 'buddypress') . '</a>'; } elseif ('private' == $group->status) { echo '<a id="group-' . esc_attr($group->id) . '" class="request-membership" rel="join" title="' . __('Request Membership', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_send_membership_request') . '">' . __('Request Membership', 'buddypress') . '</a>'; } } exit; }
/** * Determine whether the group nav item should show up for the current user * * @since 1.0-beta */ function enable_nav_item() { global $bp; $enable_nav_item = false; // The nav item should only be enabled when BP Docs is enabled for the group if ($this->group_enable) { if (!empty($bp->groups->current_group->status) && ($status = $bp->groups->current_group->status)) { // Docs in public groups are publicly viewable. if ('public' == $status) { $enable_nav_item = true; } else { if (groups_is_user_member(bp_loggedin_user_id(), $bp->groups->current_group->id)) { // Docs in private or hidden groups visible only to members $enable_nav_item = true; } } } // Super admin override if (is_super_admin()) { $enable_nav_item = true; } } return apply_filters('bp_docs_groups_enable_nav_item', $enable_nav_item); }
/** * Determine access setting for a group/user pair. * * @param int $group_id Group ID. Default: current group ID. * @param int $user_id User ID. Default: current user ID. */ function invite_anyone_group_invite_access_test($group_id = 0, $user_id = 0) { global $current_user, $bp; if (empty($group_id)) { $group_id = bp_is_group() ? bp_get_current_group_id() : 0; } if (empty($group_id) && !bp_is_group_create()) { return 'noone'; } if (empty($user_id)) { $user_id = bp_loggedin_user_id(); } if (empty($user_id)) { return 'noone'; } $iaoptions = invite_anyone_options(); if (bp_is_group_create()) { if (empty($iaoptions['group_invites_can_group_admin']) || $iaoptions['group_invites_can_group_admin'] == 'anyone' || !$iaoptions['group_invites_can_group_admin']) { return 'anyone'; } if ($iaoptions['group_invites_can_group_admin'] == 'friends') { return 'friends'; } if ($iaoptions['group_invites_can_group_admin'] == 'noone') { return 'noone'; } } if (!groups_is_user_member($user_id, $group_id)) { return 'noone'; } if (user_can($user_id, 'bp_moderate')) { if (empty($iaoptions['group_invites_can_admin']) || $iaoptions['group_invites_can_admin'] == 'anyone' || !$iaoptions['group_invites_can_admin']) { return 'anyone'; } if ($iaoptions['group_invites_can_admin'] == 'friends') { return 'friends'; } if ($iaoptions['group_invites_can_admin'] == 'noone') { return 'noone'; } } else { if (groups_is_user_admin($user_id, $group_id)) { if (empty($iaoptions['group_invites_can_group_admin']) || $iaoptions['group_invites_can_group_admin'] == 'anyone' || !$iaoptions['group_invites_can_group_admin']) { return 'anyone'; } if ($iaoptions['group_invites_can_group_admin'] == 'friends') { return 'friends'; } if ($iaoptions['group_invites_can_group_admin'] == 'noone') { return 'noone'; } } else { if (groups_is_user_mod($user_id, $group_id)) { if (empty($iaoptions['group_invites_can_group_mod']) || $iaoptions['group_invites_can_group_mod'] == 'anyone' || !$iaoptions['group_invites_can_group_mod']) { return 'anyone'; } if ($iaoptions['group_invites_can_group_mod'] == 'friends') { return 'friends'; } if ($iaoptions['group_invites_can_group_mod'] == 'noone') { return 'noone'; } } else { if (empty($iaoptions['group_invites_can_group_member']) || $iaoptions['group_invites_can_group_member'] == 'anyone' || !$iaoptions['group_invites_can_group_member']) { return 'anyone'; } if ($iaoptions['group_invites_can_group_member'] == 'friends') { return 'friends'; } if ($iaoptions['group_invites_can_group_member'] == 'noone') { return 'noone'; } } } } return 'noone'; }
function bp_legacy_theme_ajax_get_user_joinleave_group_status_a($group, $my_current_user_id) { // Not a member if (!groups_is_user_member(bp_loggedin_user_id(), $group->id)) { if ('public' == $group->status) { //check_ajax_referer( 'groups_join_group' ); //if ( ! groups_join_group( $group->id ) ) { // _e( 'Error joining group', 'buddypress' ); //} else { return '<div class="generic-button group-button public" id="groupbutton-' . esc_attr($group->id) . '"><a id="group-' . esc_attr($group->id) . '" class="group-button join-group" rel="join" title="' . __('Join Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'join', 'groups_join_group') . '">' . __('Join Group', 'buddypress') . '</a>' . '</div>'; //echo '<a id="group-' . esc_attr( $group->id ) . '" class="leave-group" rel="leave" title="' . __( 'Leave Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; //} } elseif ('private' == $group->status) { // If the user has already been invited, then this is // an Accept Invitation button if (groups_check_user_has_invite($my_current_user_id, $group->id)) { //check_ajax_referer( 'groups_accept_invite' ); //if ( ! groups_accept_invite( bp_loggedin_user_id(), $group->id ) ) { // _e( 'Error requesting membership', 'buddypress' ); //} else { return '<div class="generic-button group-button private" id="groupbutton-' . esc_attr($group->id) . '"><a id="group-' . esc_attr($group->id) . '" class="group-button accept-invite" rel="accept-invite" title="' . __('Accept Invitation', 'buddypress') . '" href="' . add_query_arg('redirect_to', bp_get_group_permalink($group), bp_get_group_accept_invite_link($group)) . '">' . __('Accept Invitation', 'buddypress') . '</a>' . '</div>'; //} // The user requested membership and the request is pending } else { if ($group->is_pending) { return '<div class="generic-button group-button pending private" id="groupbutton-' . esc_attr($group->id) . '"><a id="group-' . esc_attr($group->id) . '" class="group-button membership-requested" rel="membership-requested" title="' . __('Membership Requested', 'buddypress') . '" href="' . bp_get_group_permalink($group) . '">' . __('Membership Requested', 'buddypress') . '</a>' . '</div>'; // Otherwise, the user hasn't requested membership yet } else { //check_ajax_referer( 'groups_request_membership' ); //if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) { // _e( 'Error requesting membership', 'buddypress' ); //} else { return '<div class="generic-button group-button private" id="groupbutton-' . esc_attr($group->id) . '"><a id="group-' . esc_attr($group->id) . '" class="group-button request-membership" rel="request-membership" title="' . __('Request Membership', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'request-membership', 'groups_request_membership') . '">' . __('Request Membership', 'buddypress') . '</a>' . '</div>'; //} } } } } else { // The user is a member //check_ajax_referer( 'groups_leave_group' ); $myclasstoadd = ""; //if ( ! groups_leave_group( $group->id ) ) { // _e( 'Error leaving group', 'buddypress' ); //} elseif ( 'public' == $group->status ) { //echo '<a id="group-' . esc_attr( $group->id ) . '" class="join-group" rel="join" title="' . __( 'Join Group', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>'; return '<div class="generic-button group-button ' . $group->status . '" id="groupbutton-' . esc_attr($group->id) . '"><a id="group-' . esc_attr($group->id) . '" class="group-button leave-group" rel="leave" title="' . __('Leave Group', 'buddypress') . '" href="' . wp_nonce_url(bp_get_group_permalink($group) . 'leave-group', 'groups_leave_group') . '">' . __('Leave Group', 'buddypress') . '</a>'; //} elseif ( 'private' == $group->status ) { // echo '<a id="group-' . esc_attr( $group->id ) . '" class="request-membership" rel="join" title="' . __( 'Request Membership', 'buddypress' ) . '" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_send_membership_request' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>'; //} } //exit; }
/** * Can the logged-in user send invitations in the specified group? * * @package BuddyPress * @subpackage Groups Template * @since BuddyPress (1.5) * * @param int $group_id (optional) The id of the group whose status you want to check * @return bool $can_send_invites */ function bp_groups_user_can_send_invites($group_id = false) { global $bp; $can_send_invites = false; $invite_status = false; if (is_user_logged_in()) { if (bp_current_user_can('bp_moderate')) { // Super admins can always send invitations $can_send_invites = true; } else { // If no $group_id is provided, default to the current group id if (!$group_id) { $group_id = isset($bp->groups->current_group->id) ? $bp->groups->current_group->id : 0; } // If no group has been found, bail if (!$group_id) { return false; } $invite_status = bp_group_get_invite_status($group_id); if (!$invite_status) { return false; } switch ($invite_status) { case 'admins': if (groups_is_user_admin(bp_loggedin_user_id(), $group_id)) { $can_send_invites = true; } break; case 'mods': if (groups_is_user_mod(bp_loggedin_user_id(), $group_id) || groups_is_user_admin(bp_loggedin_user_id(), $group_id)) { $can_send_invites = true; } break; case 'members': if (groups_is_user_member(bp_loggedin_user_id(), $group_id)) { $can_send_invites = true; } break; } } } return apply_filters('bp_groups_user_can_send_invites', $can_send_invites, $group_id, $invite_status); }
/** * Send an email and a BP notification on receipt of an @-mention in a group * * @deprecated 1.5 * @deprecated Deprecated in favor of the more general bp_activity_at_message_notification() */ function groups_at_message_notification($content, $poster_user_id, $group_id, $activity_id) { global $bp; _deprecated_function(__FUNCTION__, '1.5', 'bp_activity_at_message_notification()'); /* Scan for @username strings in an activity update. Notify each user. */ $pattern = '/[@]+([A-Za-z0-9-_\\.@]+)/'; preg_match_all($pattern, $content, $usernames); /* Make sure there's only one instance of each username */ if (!($usernames = array_unique($usernames[1]))) { return false; } $group = new BP_Groups_Group($group_id); foreach ((array) $usernames as $username) { if (!($receiver_user_id = bp_core_get_userid($username))) { continue; } /* Check the user is a member of the group before sending the update. */ if (!groups_is_user_member($receiver_user_id, $group_id)) { continue; } // Now email the user with the contents of the message (if they have enabled email notifications) if ('no' != bp_get_user_meta($receiver_user_id, 'notification_activity_new_mention', true)) { $poster_name = bp_core_get_user_displayname($poster_user_id); $message_link = bp_activity_get_permalink($activity_id); $settings_slug = function_exists('bp_get_settings_slug') ? bp_get_settings_slug() : 'settings'; $settings_link = bp_core_get_user_domain($receiver_user_id) . $settings_slug . '/notifications/'; $poster_name = stripslashes($poster_name); $content = bp_groups_filter_kses(stripslashes($content)); // Set up and send the message $ud = bp_core_get_core_userdata($receiver_user_id); $to = $ud->user_email; $sitename = nxt_specialchars_decode(get_blog_option(bp_get_root_blog_id(), 'blogname'), ENT_QUOTES); $subject = '[' . $sitename . '] ' . sprintf(__('%1$s mentioned you in the group "%2$s"', 'buddypress'), $poster_name, $group->name); $message = sprintf(__('%1$s mentioned you in the group "%2$s": "%3$s" To view and respond to the message, log in and visit: %4$s --------------------- ', 'buddypress'), $poster_name, $group->name, $content, $message_link); $message .= sprintf(__('To disable these notifications please log in and go to: %s', 'buddypress'), $settings_link); /* Send the message */ $to = apply_filters('groups_at_message_notification_to', $to); $subject = apply_filters('groups_at_message_notification_subject', $subject, $group, $poster_name); $message = apply_filters('groups_at_message_notification_message', $message, $group, $poster_name, $content, $message_link, $settings_link); nxt_mail($to, $subject, $message); } } do_action('bp_groups_sent_mention_email', $usernames, $subject, $message, $content, $poster_user_id, $group_id, $activity_id); }
/** * Create a group membership request. * * @param int $requesting_user_id ID of the user requesting membership. * @param int $group_id ID of the group. * * @return bool True on success, false on failure. */ function groups_send_membership_request($requesting_user_id, $group_id) { // Prevent duplicate requests if (groups_check_for_membership_request($requesting_user_id, $group_id)) { return false; } // Check if the user is already a member or is banned if (groups_is_user_member($requesting_user_id, $group_id) || groups_is_user_banned($requesting_user_id, $group_id)) { return false; } // Check if the user is already invited - if so, simply accept invite if (groups_check_user_has_invite($requesting_user_id, $group_id)) { groups_accept_invite($requesting_user_id, $group_id); return true; } $requesting_user = new BP_Groups_Member(); $requesting_user->group_id = $group_id; $requesting_user->user_id = $requesting_user_id; $requesting_user->inviter_id = 0; $requesting_user->is_admin = 0; $requesting_user->user_title = ''; $requesting_user->date_modified = bp_core_current_time(); $requesting_user->is_confirmed = 0; $requesting_user->comments = isset($_POST['group-request-membership-comments']) ? $_POST['group-request-membership-comments'] : ''; if ($requesting_user->save()) { $admins = groups_get_group_admins($group_id); // Saved okay, now send the email notification for ($i = 0, $count = count($admins); $i < $count; ++$i) { groups_notification_new_membership_request($requesting_user_id, $admins[$i]->user_id, $group_id, $requesting_user->id); } /** * Fires after the creation of a new membership request. * * @since 1.0.0 * * @param int $requesting_user_id ID of the user requesting membership. * @param array $admins Array of group admins. * @param int $group_id ID of the group being requested to. * @param int $requesting_user->id ID of the user requesting membership. */ do_action('groups_membership_requested', $requesting_user_id, $admins, $group_id, $requesting_user->id); return true; } return false; }
/** * Builds the rendez-vous link in the group's context * * @package Rendez Vous * @subpackage Groups * * @since Rendez Vous (1.1.0) * * @param int $id the rendez-vous id * @param int $organizer the organizer id * @uses get_post_meta() to get the group, the rendez-vous is attached to * @uses Rendez_Vous_Group::group_get_option() to get the needed group metas. * @uses groups_is_user_member() to check the organizer is still a member of the group * @uses delete_post_meta() to remove a rendez-vous from a group * @uses do_action() call 'rendez_vous_groups_component_deactivated' or * 'rendez_vous_groups_member_removed' to perform custom actions * @uses groups_get_current_group() to get the current group object * @uses groups_get_group() to get a group using a group ID * @uses bp_get_group_permalink() to get the group's permalink * @return string the permalink to the rendez-vous in a group */ public function group_rendez_vous_link($id = 0, $organizer = 0) { $link = $action = false; if (empty($id) || empty($organizer)) { return $link; } $group_id = get_post_meta($id, '_rendez_vous_group_id', true); if (empty($group_id)) { return $link; } if (!self::group_get_option($group_id, '_rendez_vous_group_activate', false)) { $action = 'rendez_vous_groups_component_deactivated'; } else { if (!groups_is_user_member($organizer, $group_id)) { $action = 'rendez_vous_groups_member_removed'; } } /** * If the group does not support rendez-vous or * the organizer is not a member of the group anymore * Remove post meta & activities to be sure the organize * can always access to his rendez-vous. */ if (!empty($action)) { delete_post_meta($id, '_rendez_vous_group_id'); do_action($action, $id, get_post($id)); return $link; } // Everything is ok, build the group rendez-vous link $group = groups_get_current_group(); if (empty($group->id) || $group_id == $group->id) { $group = groups_get_group(array('group_id' => $group_id, 'populate_extras' => false)); $link = trailingslashit(bp_get_group_permalink($group) . $this->slug); } return $link; }