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, $mode;
$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'];
}
$mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode'];
$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-network';
// 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;
// Use thickbox to display the extended profile information.
if ( bp_is_active( 'xprofile' ) || bp_members_site_requests_enabled() ) {
add_thickbox();
}
}
/**
* 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 multisite Members signup columns.
*
* @since 2.0.0
*
* @param array $value Array of columns to display.
*/
return apply_filters( 'bp_members_ms_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;
if ( current_user_can( 'manage_network_users' ) ) {
$link = sprintf( '%2$s', esc_url( network_admin_url( 'settings.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.
*/
public function single_row( $signup_object = null, $style = '' ) {
echo '
';
echo $this->single_row_columns( $signup_object );
echo '
';
}
/**
* Prevents regular users row actions to be output.
*
* @since 2.4.0
*
* @param object|null $signup_object Signup being acted upon.
* @param string $column_name Current column name.
* @param string $primary Primary column name.
* @return string
*/
protected function handle_row_actions( $signup_object = null, $column_name = '', $primary = '' ) {
return '';
}
/**
* 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',
),
network_admin_url( 'users.php' )
);
// Activate link.
$activate_link = add_query_arg(
array(
'page' => 'bp-signups',
'signup_id' => $signup_object->id,
'action' => 'activate',
),
network_admin_url( 'users.php' )
);
// Delete link.
$delete_link = add_query_arg(
array(
'page' => 'bp-signups',
'signup_id' => $signup_object->id,
'action' => 'delete',
),
network_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' ) );
}
/** This filter is documented in bp-members/admin/bp-members-classes.php */
$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' ) && ! bp_members_site_requests_enabled() ) {
return;
}
if ( bp_is_active( 'xprofile' ) ) {
$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 ) {
global $mode;
if ( 'list' === $mode ) {
$date = 'Y/m/d';
} else {
$date = 'Y/m/d \<\b\r \/\> g:i:s a';
}
echo mysql2date( $date, $signup_object->registered ) . "";
}
/**
* Display the last time an activation email has been sent.
*
* @since 2.0.0
*
* @param object|null $signup_object Signup object instance.
*/
public function column_date_sent( $signup_object = null ) {
global $mode;
if ( 'list' === $mode ) {
$date = 'Y/m/d';
} else {
$date = 'Y/m/d \<\b\r \/\> g:i:s a';
}
if ( $signup_object->count_sent > 0 ) {
echo mysql2date( $date, $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_ms_signup_date_sent_unsent_message', $message, $signup_object );
echo esc_html( $message );
}
}
/**
* Display number of time 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 multisite 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_ms_signup_custom_column', '', $column_name, $signup_object );
}
}