false, 'plural' => 'signups', 'singular' => 'signup', 'screen' => get_current_screen()->id, ) ); } /** * Set up items for display in the list table. * * Handles filtering of data, sorting, pagination, and any other data * manipulation required prior to rendering. * * @since 2.0.0 */ public function prepare_items() { global $usersearch; $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : ''; $signups_per_page = $this->get_items_per_page( str_replace( '-', '_', "{$this->screen->id}_per_page" ) ); $paged = $this->get_pagenum(); $args = array( 'offset' => ( $paged - 1 ) * $signups_per_page, 'number' => $signups_per_page, 'usersearch' => $usersearch, 'orderby' => 'signup_id', 'order' => 'DESC' ); if ( isset( $_REQUEST['orderby'] ) ) { $args['orderby'] = $_REQUEST['orderby']; } if ( isset( $_REQUEST['order'] ) ) { $args['order'] = $_REQUEST['order']; } $signups = BP_Signup::get( $args ); $this->items = $signups['signups']; $this->signup_counts = $signups['total']; $this->set_pagination_args( array( 'total_items' => $this->signup_counts, 'per_page' => $signups_per_page, ) ); } /** * Display the users screen views * * @since 2.5.0 * * @global string $role The name of role the users screens is filtered by */ public function views() { global $role; // Used to reset the role. $reset_role = $role; // Temporarly set the role to registered. $role = 'registered'; // Used to reset the screen id once views are displayed. $reset_screen_id = $this->screen->id; // Temporarly set the screen id to the users one. $this->screen->id = 'users'; // Use the parent function so that other plugins can safely add views. parent::views(); // Reset the role. $role = $reset_role; // Reset the screen id. $this->screen->id = $reset_screen_id; } /** * Get rid of the extra nav. * * WP_Users_List_Table will add an extra nav to change user's role. * As we're dealing with signups, we don't need this. * * @since 2.0.0 * * @param array $which Current table nav item. */ public function extra_tablenav( $which ) { return; } /** * Specific signups columns. * * @since 2.0.0 * * @return array */ public function get_columns() { $columns = array( 'cb' => '', 'username' => __( 'Username', 'buddypress' ), 'name' => __( 'Name', 'buddypress' ), 'email' => __( 'Email', 'buddypress' ), 'registered' => __( 'Registered', 'buddypress' ), 'date_sent' => __( 'Last Sent', 'buddypress' ), 'count_sent' => __( 'Emails Sent', 'buddypress' ) ); /** * Filters the single site Members signup columns. * * @since 2.0.0 * * @param array $value Array of columns to display. */ return apply_filters( 'bp_members_signup_columns', $columns ); } /** * Specific bulk actions for signups. * * @since 2.0.0 */ public function get_bulk_actions() { $actions = array( 'activate' => _x( 'Activate', 'Pending signup action', 'buddypress' ), 'resend' => _x( 'Email', 'Pending signup action', 'buddypress' ), ); if ( current_user_can( 'delete_users' ) ) { $actions['delete'] = __( 'Delete', 'buddypress' ); } /** * Filters the bulk actions for signups. * * @since 10.0.0 * * @param array $actions Array of actions and corresponding labels. */ return apply_filters( 'bp_members_ms_signup_bulk_actions', $actions ); } /** * The text shown when no items are found. * * Nice job, clean sheet! * * @since 2.0.0 */ public function no_items() { if ( bp_get_signup_allowed() || bp_get_membership_requests_required() ) { esc_html_e( 'No pending accounts found.', 'buddypress' ); } else { $link = false; // Specific case when BuddyPress is not network activated. if ( is_multisite() && current_user_can( 'manage_network_users') ) { $link = sprintf( '%2$s', esc_url( network_admin_url( 'settings.php' ) ), esc_html__( 'Edit settings', 'buddypress' ) ); } elseif ( current_user_can( 'manage_options' ) ) { $link = sprintf( '%2$s', esc_url( bp_get_admin_url( 'options-general.php' ) ), esc_html__( 'Edit settings', 'buddypress' ) ); } /* translators: %s: url to site settings */ printf( __( 'Registration is disabled. %s', 'buddypress' ), $link ); } } /** * The columns signups can be reordered with. * * @since 2.0.0 */ public function get_sortable_columns() { return array( 'username' => 'login', 'email' => 'email', 'registered' => 'signup_id', ); } /** * Display signups rows. * * @since 2.0.0 */ public function display_rows() { $style = ''; foreach ( $this->items as $userid => $signup_object ) { // Avoid a notice error appearing since 4.3.0. if ( isset( $signup_object->id ) ) { $signup_object->ID = $signup_object->id; } $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"'; echo "\n\t" . $this->single_row( $signup_object, $style ); } } /** * Display a signup row. * * @since 2.0.0 * * @see WP_List_Table::single_row() for explanation of params. * * @param object|null $signup_object Signup user object. * @param string $style Styles for the row. * @param string $role Role to be assigned to user. * @param int $numposts Numper of posts. * @return void */ public function single_row( $signup_object = null, $style = '', $role = '', $numposts = 0 ) { echo ''; echo $this->single_row_columns( $signup_object ); echo ''; } /** * Markup for the checkbox used to select items for bulk actions. * * @since 2.0.0 * * @param object|null $signup_object The signup data object. */ public function column_cb( $signup_object = null ) { ?> user_email, 32 ); // Activation email link. $email_link = add_query_arg( array( 'page' => 'bp-signups', 'signup_id' => $signup_object->id, 'action' => 'resend', ), bp_get_admin_url( 'users.php' ) ); // Activate link. $activate_link = add_query_arg( array( 'page' => 'bp-signups', 'signup_id' => $signup_object->id, 'action' => 'activate', ), bp_get_admin_url( 'users.php' ) ); // Delete link. $delete_link = add_query_arg( array( 'page' => 'bp-signups', 'signup_id' => $signup_object->id, 'action' => 'delete', ), bp_get_admin_url( 'users.php' ) ); echo $avatar . sprintf( '%2$s
', esc_url( $activate_link ), $signup_object->user_login ); $actions = array(); $actions['activate'] = sprintf( '%2$s', esc_url( $activate_link ), __( 'Activate', 'buddypress' ) ); $actions['resend'] = sprintf( '%2$s', esc_url( $email_link ), __( 'Email', 'buddypress' ) ); if ( current_user_can( 'delete_users' ) ) { $actions['delete'] = sprintf( '%2$s', esc_url( $delete_link ), __( 'Delete', 'buddypress' ) ); } /** * Filters the multisite row actions for each user in list. * * @since 2.0.0 * * @param array $actions Array of actions and corresponding links. * @param object $signup_object The signup data object. */ $actions = apply_filters( 'bp_members_ms_signup_row_actions', $actions, $signup_object ); echo $this->row_actions( $actions ); } /** * Display user name, if any. * * @since 2.0.0 * * @param object|null $signup_object The signup data object. */ public function column_name( $signup_object = null ) { echo esc_html( $signup_object->user_name ); // Insert the extended profile modal content required by thickbox. if ( ! bp_is_active( 'xprofile' ) ) { return; } $profile_field_ids = array(); // Fetch registration field data once only. if ( ! $this->signup_field_labels ) { $field_groups = bp_xprofile_get_groups( array( 'fetch_fields' => true, 'signup_fields_only' => true, ) ); foreach ( $field_groups as $field_group ) { foreach ( $field_group->fields as $field ) { $this->signup_field_labels[ $field->id ] = $field->name; } } } bp_members_admin_preview_signup_profile_info( $this->signup_field_labels, $signup_object ); } /** * Display user email. * * @since 2.0.0 * * @param object|null $signup_object The signup data object. */ public function column_email( $signup_object = null ) { printf( '%2$s', esc_attr( $signup_object->user_email ), esc_html( $signup_object->user_email ) ); } /** * Display registration date. * * @since 2.0.0 * * @param object|null $signup_object The signup data object. */ public function column_registered( $signup_object = null ) { echo mysql2date( 'Y/m/d g:i:s a', $signup_object->registered ); } /** * Display the last time an activation email has been sent. * * @since 2.0.0 * * @param object|null $signup_object The signup data object. */ public function column_date_sent( $signup_object = null ) { if ( $signup_object->count_sent > 0 ) { echo mysql2date( 'Y/m/d g:i:s a', $signup_object->date_sent ); } else { $message = __( 'Not yet notified', 'buddypress' ); /** * Filters the "not yet sent" message for "Last Sent" * column in Manage Signups list table. * * @since 10.0.0 * * @param string $message "Not yet sent" message. * @param object|null $signup_object Signup object instance. */ $message = apply_filters( 'bp_members_signup_date_sent_unsent_message', $message, $signup_object ); echo esc_html( $message ); } } /** * Display number of times an activation email has been sent. * * @since 2.0.0 * * @param object|null $signup_object Signup object instance. */ public function column_count_sent( $signup_object = null ) { echo absint( $signup_object->count_sent ); } /** * Allow plugins to add their custom column. * * @since 2.1.0 * * @param object|null $signup_object The signup data object. * @param string $column_name The column name. * @return string */ function column_default( $signup_object = null, $column_name = '' ) { /** * Filters the single site custom columns for plugins. * * @since 2.1.0 * * @param string $column_name The column name. * @param object $signup_object The signup data object. */ return apply_filters( 'bp_members_signup_custom_column', '', $column_name, $signup_object ); } }