modes = array( 'grid' => __('Grid View'), 'list' => __('List View'), ); $args = wp_parse_args( $args, array( 'singular' => __('Customer', 'wp-ultimo'), // singular name of the listed records 'plural' => __('Customers', 'wp-ultimo'), // plural name of the listed records 'ajax' => true, // does this table support ajax? 'add_new' => array( 'url' => wu_get_form_url('add_new_customer'), 'classes' => 'wubox', ), ) ); parent::__construct($args); } /** * Adds the extra search field when the search element is present. * * @since 2.0.0 * @return array */ public function get_extra_query_fields() { $_filter_fields = parent::get_extra_query_fields(); $search = isset($_GET['s']) ? sanitize_text_field($_GET['s']) : false; if ( ! empty($search)) { // Search relevant users $user_ids = get_users( array( 'number' => -1, 'search' => '*' . $search . '*', 'fields' => 'ids', ) ); // No results, go back if (empty($user_ids)) { return $_filter_fields; } // Finally, include these user IDs in the customers query. $_filter_fields['user_id__in'] = $user_ids; unset($_filter_fields['search']); } $_filter_fields['type'] = 'customer'; if (wu_request('filter', 'all') === 'vip') { $_filter_fields['vip'] = 1; } elseif (wu_request('filter', 'all') === 'online') { $_filter_fields['last_login_query'] = array( 'after' => '-3 minutes', ); } return $_filter_fields; } /** * Displays the content of the name column. * * @since 2.0.0 * * @param WP_Ultimo\Models\Customer $item Customer object. */ public function column_name($item): string { // Get user info $user = get_user_by('id', $item->get_user_id()); $url_atts = array( 'id' => $item->get_id(), ); // Check if user exists if ( ! $user) { $actions = array( 'delete' => sprintf('%s', __('Delete', 'wp-ultimo'), wu_get_form_url('delete_modal', $url_atts), __('Delete', 'wp-ultimo')), ); return sprintf('#%s - %s', $item->get_user_id(), __('User not found', 'wp-ultimo')) . $this->row_actions($actions); } $customer_id = sprintf('#%s', $item->get_id(), $item->get_id()); $customer_user = sprintf( '%s', wu_network_admin_url( 'wp-ultimo-edit-customer', array( 'id' => $item->get_id(), ) ), $user->display_name ); // Concatenate the two blocks $title = "$customer_user"; $desc = sprintf('(%s)', wu_tooltip_text(__('Send an email to this customer', 'wp-ultimo')), $user->user_email, $user->user_email); // Concatenate switch to url $is_modal_switch_to = \WP_Ultimo\User_Switching::get_instance()->check_user_switching_is_activated() ? '' : 'wubox'; $url_switch_to = sprintf('%s', __('Switch To', 'wp-ultimo'), $is_modal_switch_to, \WP_Ultimo\User_Switching::get_instance()->render($item->get_user_id()), __('Switch To', 'wp-ultimo')); $actions = array( 'edit' => sprintf('%s', wu_network_admin_url('wp-ultimo-edit-customer', $url_atts), __('Edit', 'wp-ultimo')), 'switch-to' => $item->get_user_id() !== get_current_user_id() ? $url_switch_to : false, 'delete' => sprintf( '%s', __('Delete', 'wp-ultimo'), wu_get_form_url( 'delete_modal', array( 'model' => 'customer', 'id' => $item->get_id(), ) ), __('Delete', 'wp-ultimo') ), ); $actions = array_filter($actions); return $title . $desc . $this->row_actions($actions); } /** * Displays the customer photo and special status. * * @since 2.0.0 * * @param WP_Ultimo\Models\Customer $item Customer object. * @return string */ public function column_customer_status($item) { $html = '