has_caps = true; /* Group API Extension Properties */ $this->name = __( 'Send Invites', 'buddypress' ); $this->slug = BP_INVITE_ANYONE_SLUG; /* Set as early in the order as possible */ $this->create_step_position = 42; $this->nav_item_position = 71; /* Generic check access */ if ( $this->has_caps == false ) { $this->enable_create_step = false; $this->enable_edit_step = false; } } function display() { invite_anyone_create_screen_content( 'invite' ); } function create_screen() { global $bp; /* If we're not at this step, go bye bye */ if ( !bp_is_group_creation_step( $this->slug ) ) return false; invite_anyone_create_screen_content( 'create' ); wp_nonce_field( 'groups_create_save_' . $this->slug ); } function create_screen_save( ) { global $bp; /* Always check the referer */ check_admin_referer( 'groups_create_save_' . $this->slug ); /* Set method and save */ $this->method = 'create'; $this->save(); } function save() { global $bp; /* Set error redirect based on save method */ if ( $this->method == 'create' ) $redirect_url = $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . $this->slug; else $redirect_url = bp_get_group_permalink( $bp->groups->current_group ) . '/admin/' . $this->slug; groups_send_invites( $bp->loggedin_user->id, $bp->groups->current_group->id ); bp_core_add_message( __('Group invites sent.', 'buddypress') ); } function widget_display() {} } bp_register_group_extension( 'BP_Invite_Anyone' ); function invite_anyone_create_screen_content( $event ) { ?>
false, 'separator' => 'li' ); $r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP ); if ( !$group_id ) $group_id = ( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : $bp->groups->current_group->id; $friends = get_members_invite_list( $bp->loggedin_user->id, $group_id ); if ( $friends ) { $invites = groups_get_invites_for_group( $bp->loggedin_user->id, $group_id ); for ( $i = 0; $i < count( $friends ); $i++ ) { if ( $invites ) { if ( in_array( $friends[$i]['id'], $invites ) ) { $checked = ' checked="checked"'; } else { $checked = ''; } } $items[] = '<' . $separator . '> ' . $friends[$i]['full_name'] . '' . $separator . '>'; } } return implode( "\n", (array)$items ); } function get_members_invite_list( $user_id = false, $group_id ) { global $bp; if ( !$user_id ) $user_id = $bp->loggedin_user->id; if ( method_exists ( 'BP_Core_User', 'get_alphabetical_users' ) ) // For BP < 1.2 $friend_ids = BP_Core_User::get_alphabetical_users(); else $friend_ids = BP_Core_User::get_users('alphabetical'); if ( (int) $friend_ids['total'] < 1 ) return false; for ( $i = 0; $i < count($friend_ids['users']); $i++ ) { if ( $friend_ids['users'][$i]->user_id ) // For BP < 1.2 $user_id = $friend_ids['users'][$i]->user_id; else $user_id = $friend_ids['users'][$i]->id; if ( groups_check_user_has_invite( $user_id, $group_id ) || groups_is_user_member( $user_id, $group_id ) ) continue; $display_name = bp_core_get_user_displayname( $user_id ); if ( $display_name != '' ) { $friends[] = array( 'id' => $user_id, 'full_name' => $display_name ); } } if ( !$friends ) return false; return $friends; } function invite_anyone_ajax_invite_user() { global $bp; check_ajax_referer( 'groups_invite_uninvite_user' ); if ( !$_POST['friend_id'] || !$_POST['friend_action'] || !$_POST['group_id'] ) return false; if ( !groups_is_user_admin( $bp->loggedin_user->id, $_POST['group_id'] ) ) return false; //if ( !friends_check_friendship( $bp->loggedin_user->id, $_POST['friend_id'] ) ) //return false; if ( 'invite' == $_POST['friend_action'] ) { if ( !groups_invite_user( array( 'user_id' => $_POST['friend_id'], 'group_id' => $_POST['group_id'] ) ) ) return false; $user = new BP_Core_User( $_POST['friend_id'] ); echo '