function prepare_items()
 {
     global $wpdb;
     $this->process_bulk_action();
     $query = "SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE  id !=1 ";
     if (isset($_POST['s'])) {
         $query .= " AND alias LIKE '%" . strip_tags($_POST['s']) . "%' ";
     }
     $orderby = !empty($_GET["orderby"]) ? esc_sql($_GET["orderby"]) : 'id';
     $order = !empty($_GET["order"]) ? esc_sql($_GET["order"]) : 'DESC';
     $sortable_columns = $this->get_sortable_columns();
     $orderby = SwpmUtils::sanitize_value_by_array($orderby, $sortable_columns);
     $order = SwpmUtils::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1'));
     if (!empty($orderby) && !empty($order)) {
         $query .= ' ORDER BY ' . $orderby . ' ' . $order;
     }
     $totalitems = $wpdb->query($query);
     //return the total number of affected rows
     $perpage = 20;
     $paged = !empty($_GET["paged"]) ? esc_sql($_GET["paged"]) : '';
     if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
         $paged = 1;
     }
     $totalpages = ceil($totalitems / $perpage);
     if (!empty($paged) && !empty($perpage)) {
         $offset = ($paged - 1) * $perpage;
         $query .= ' LIMIT ' . (int) $offset . ',' . (int) $perpage;
     }
     $this->set_pagination_args(array("total_items" => $totalitems, "total_pages" => $totalpages, "per_page" => $perpage));
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $this->items = $wpdb->get_results($query, ARRAY_A);
 }
 function prepare_items()
 {
     global $wpdb;
     $this->process_bulk_action();
     $query = "SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl";
     $query .= " LEFT JOIN " . $wpdb->prefix . "swpm_membership_tbl";
     $query .= " ON ( membership_level = id ) ";
     $s = filter_input(INPUT_POST, 's');
     if (!empty($s)) {
         $query .= " WHERE  user_name LIKE '%" . strip_tags($s) . "%' " . " OR first_name LIKE '%" . strip_tags($s) . "%' " . " OR last_name LIKE '%" . strip_tags($s) . "%' " . " OR email LIKE '%" . strip_tags($s) . "%' " . " OR address_city LIKE '%" . strip_tags($s) . "%' " . " OR address_state LIKE '%" . strip_tags($s) . "%' " . " OR country LIKE '%" . strip_tags($s) . "%' " . " OR company_name LIKE '%" . strip_tags($s) . "%' ";
     }
     $orderby = filter_input(INPUT_GET, 'orderby');
     $orderby = empty($orderby) ? 'member_id' : $orderby;
     $order = filter_input(INPUT_GET, 'order');
     $order = empty($order) ? 'DESC' : $order;
     $sortable_columns = $this->get_sortable_columns();
     $orderby = SwpmUtils::sanitize_value_by_array($orderby, $sortable_columns);
     $order = SwpmUtils::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1'));
     $query .= ' ORDER BY ' . $orderby . ' ' . $order;
     $totalitems = $wpdb->query($query);
     //return the total number of affected rows
     $perpage = 20;
     $paged = filter_input(INPUT_GET, 'paged');
     if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
         $paged = 1;
     }
     $totalpages = ceil($totalitems / $perpage);
     if (!empty($paged) && !empty($perpage)) {
         $offset = ($paged - 1) * $perpage;
         $query .= ' LIMIT ' . (int) $offset . ',' . (int) $perpage;
     }
     $this->set_pagination_args(array("total_items" => $totalitems, "total_pages" => $totalpages, "per_page" => $perpage));
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $this->items = $wpdb->get_results($query, ARRAY_A);
 }
 function prepare_items()
 {
     global $wpdb;
     $this->process_bulk_action();
     $query = "SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl";
     $query .= " LEFT JOIN " . $wpdb->prefix . "swpm_membership_tbl";
     $query .= " ON ( membership_level = id ) ";
     $s = filter_input(INPUT_POST, 's');
     $status = filter_input(INPUT_GET, 'status');
     $filter1 = '';
     //Add the search parameter to the query
     if (!empty($s)) {
         $s = trim($s);
         //Trim the input
         $filter1 .= "( user_name LIKE '%" . strip_tags($s) . "%' " . " OR first_name LIKE '%" . strip_tags($s) . "%' " . " OR last_name LIKE '%" . strip_tags($s) . "%' " . " OR email LIKE '%" . strip_tags($s) . "%' " . " OR address_city LIKE '%" . strip_tags($s) . "%' " . " OR address_state LIKE '%" . strip_tags($s) . "%' " . " OR country LIKE '%" . strip_tags($s) . "%' " . " OR company_name LIKE '%" . strip_tags($s) . "%' )";
     }
     //Add account status filtering to the query
     $filter2 = '';
     if (!empty($status)) {
         if ($status == 'incomplete') {
             $filter2 .= "user_name = ''";
         } else {
             $filter2 .= "account_state = '" . $status . "'";
         }
     }
     //Build the WHERE clause of the query string
     if (!empty($filter1) && !empty($filter2)) {
         $query .= "WHERE " . $filter1 . " AND " . $filter2;
     } else {
         if (!empty($filter1)) {
             $query .= "WHERE " . $filter1;
         } else {
             if (!empty($filter2)) {
                 $query .= "WHERE " . $filter2;
             }
         }
     }
     //Build the orderby and order query parameters
     $orderby = filter_input(INPUT_GET, 'orderby');
     $orderby = empty($orderby) ? 'member_id' : $orderby;
     $order = filter_input(INPUT_GET, 'order');
     $order = empty($order) ? 'DESC' : $order;
     $sortable_columns = $this->get_sortable_columns();
     $orderby = SwpmUtils::sanitize_value_by_array($orderby, $sortable_columns);
     $order = SwpmUtils::sanitize_value_by_array($order, array('DESC' => '1', 'ASC' => '1'));
     $query .= ' ORDER BY ' . $orderby . ' ' . $order;
     //Execute the query
     $totalitems = $wpdb->query($query);
     //return the total number of affected rows
     //Pagination setup
     $perpage = 20;
     $paged = filter_input(INPUT_GET, 'paged');
     if (empty($paged) || !is_numeric($paged) || $paged <= 0) {
         $paged = 1;
     }
     $totalpages = ceil($totalitems / $perpage);
     if (!empty($paged) && !empty($perpage)) {
         $offset = ($paged - 1) * $perpage;
         $query .= ' LIMIT ' . (int) $offset . ',' . (int) $perpage;
     }
     $this->set_pagination_args(array("total_items" => $totalitems, "total_pages" => $totalpages, "per_page" => $perpage));
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $this->items = $wpdb->get_results($query, ARRAY_A);
 }
 function prepare_items()
 {
     global $wpdb;
     $payments_table_name = $wpdb->prefix . "swpm_payments_tbl";
     // Lets decide how many records per page to show
     $per_page = apply_filters('swpm_transactions_menu_items_per_page', 50);
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $this->process_bulk_action();
     //This checks for sorting input. Read and sanitize the inputs
     $orderby_column = isset($_GET['orderby']) ? sanitize_text_field($_GET['orderby']) : '';
     $sort_order = isset($_GET['order']) ? sanitize_text_field($_GET['order']) : '';
     if (empty($orderby_column)) {
         $orderby_column = "id";
         $sort_order = "DESC";
     }
     $orderby_column = SwpmUtils::sanitize_value_by_array($orderby_column, $sortable);
     $sort_order = SwpmUtils::sanitize_value_by_array($sort_order, array('DESC' => '1', 'ASC' => '1'));
     //pagination requirement
     $current_page = $this->get_pagenum();
     if (isset($_POST['swpm_txn_search'])) {
         //Only load the searched records
         $search_term = trim(sanitize_text_field($_POST['swpm_txn_search']));
         $prepare_query = $wpdb->prepare("SELECT * FROM " . $payments_table_name . " WHERE `email` LIKE '%%%s%%' OR `txn_id` LIKE '%%%s%%' OR `first_name` LIKE '%%%s%%' OR `last_name` LIKE '%%%s%%'", $search_term, $search_term, $search_term, $search_term);
         $data = $wpdb->get_results($prepare_query, ARRAY_A);
         $total_items = count($data);
     } else {
         //Load all data in an optimized way (so it is only loading data for the current page)
         $query = "SELECT COUNT(*) FROM {$payments_table_name}";
         $total_items = $wpdb->get_var($query);
         //pagination requirement
         $query = "SELECT * FROM {$payments_table_name} ORDER BY {$orderby_column} {$sort_order}";
         $offset = ($current_page - 1) * $per_page;
         $query .= ' LIMIT ' . (int) $offset . ',' . (int) $per_page;
         $data = $wpdb->get_results($query, ARRAY_A);
     }
     // Now we add our *sorted* data to the items property, where it can be used by the rest of the class.
     $this->items = $data;
     //pagination requirement
     $this->set_pagination_args(array('total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items / $per_page)));
 }