PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.0
4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Controllers / Admin / AffiliationRequests / AffiliationRequestsListTable.php
surecart / app / src / Controllers / Admin / AffiliationRequests Last commit date
AffiliationRequestsController.php 2 years ago AffiliationRequestsListTable.php 2 months ago AffiliationRequestsScriptsController.php 2 years ago
AffiliationRequestsListTable.php
235 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\AffiliationRequests;
4
5 use SureCart\Controllers\Admin\Tables\ListTable;
6 use SureCart\Models\AffiliationRequest;
7 use WP_Error;
8
9 /**
10 * Create a new table class that will extend the WP_List_Table
11 */
12 class AffiliationRequestsListTable extends ListTable {
13 public $checkbox = true;
14 public $error = '';
15 public $pages = array();
16
17 /**
18 * Prepare the items for the table to process
19 *
20 * @return void
21 */
22 public function prepare_items() {
23 $columns = $this->get_columns();
24 $hidden = $this->get_hidden_columns();
25 $sortable = $this->get_sortable_columns();
26
27 $this->_column_headers = array( $columns, $hidden, $sortable );
28
29 $query = $this->table_data();
30
31 if ( is_wp_error( $query ) ) {
32 $this->error = $query->get_error_message();
33 $this->items = array();
34 return;
35 }
36
37 $this->set_pagination_args(
38 array(
39 'total_items' => $query->pagination->count,
40 'per_page' => $this->get_items_per_page( 'affiliate-requests' ),
41 )
42 );
43
44 $this->items = $query->data;
45 }
46
47 /**
48 * Get views for the list table status links.
49 *
50 * @global int $post_id
51 * @global string $comment_status
52 * @global string $comment_type
53 */
54 protected function get_views() {
55 foreach ( $this->getStatuses() as $status => $label ) {
56 $link = admin_url( 'admin.php?page=sc-affiliate-requests' );
57 $current_link_attributes = '';
58
59 if ( ! empty( $_GET['status'] ) ) {
60 if ( $status === $_GET['status'] ) {
61 $current_link_attributes = ' class="current" aria-current="page"';
62 }
63 } elseif ( 'all' === $status ) {
64 $current_link_attributes = ' class="current" aria-current="page"';
65 }
66
67 $link = add_query_arg( 'status', $status, $link );
68
69 $link = esc_url( $link );
70
71 $status_links[ $status ] = "<a href='$link'$current_link_attributes>" . $label . '</a>';
72 }
73
74 /**
75 * Filters the comment status links.
76 *
77 * @since 2.5.0
78 * @since 5.1.0 The 'Mine' link was added.
79 *
80 * @param string[] $status_links An associative array of fully-formed comment status links. Includes 'All', 'Mine',
81 * 'Pending', 'Approved', 'Spam', and 'Trash'.
82 */
83 return apply_filters( 'comment_status_links', $status_links );
84 }
85
86 /**
87 * Override the parent columns method. Defines the columns to use in your listing table
88 *
89 * @return array
90 */
91 public function get_columns() {
92 return array_merge(
93 [
94 'name' => __( 'Name', 'surecart' ),
95 'email' => __( 'Email', 'surecart' ),
96 'payout_email' => __( 'Payout Email', 'surecart' ),
97 'status' => __( 'Status', 'surecart' ),
98 'date' => __( 'Date', 'surecart' ),
99 ],
100 parent::get_columns()
101 );
102 }
103
104 /**
105 * Define which columns are hidden
106 *
107 * @return array
108 */
109 public function get_hidden_columns() {
110 return array();
111 }
112
113 /**
114 * Get the table data
115 *
116 * @return object|WP_Error
117 */
118 private function table_data() {
119 $affiliate_request_query = AffiliationRequest::where(
120 array(
121 'status[]' => $this->getFilteredStatus(),
122 'query' => $this->get_search_query(),
123 'used' => false,
124 )
125 );
126
127 return $affiliate_request_query->paginate(
128 array(
129 'per_page' => $this->get_items_per_page( 'affiliate_requests' ),
130 'page' => $this->get_pagenum(),
131 )
132 );
133 }
134
135 /**
136 * Nothing found.
137 *
138 * @return void
139 */
140 public function no_items() {
141 if ( $this->error ) {
142 echo esc_html( $this->error );
143 return;
144 }
145 echo esc_html_e( 'No affiliate requests found.', 'surecart' );
146 }
147
148 /**
149 * Published column
150 *
151 * @param \SureCart\Models\AffiliationRequest $affiliate_request AffiliationRequest model.
152 *
153 * @return string
154 */
155 public function column_status( $affiliate_request ) {
156 ob_start();
157 ?>
158 <sc-tag type="<?php echo esc_attr( $affiliate_request->status_type ); ?>">
159 <?php echo esc_html( $affiliate_request->status_display_text ); ?>
160 </sc-tag>
161 <?php
162 return ob_get_clean();
163 }
164
165 /**
166 * Define what data to show on each column of the table
167 *
168 * @param \SureCart\Models\AffiliationRequest $affiliate_request AffiliationRequest model.
169 * @param string $column_name - Current column name.
170 *
171 * @return mixed
172 */
173 public function column_default( $affiliate_request, $column_name ) {
174 // Call the parent method to handle custom columns
175 parent::column_default( $affiliate_request, $column_name );
176
177 if ( 'name' === $column_name ) {
178 return '<a href="' . esc_url( \SureCart::getUrl()->edit( 'affiliate-request', $affiliate_request->id ) ) . '">'
179 . esc_html( $affiliate_request->first_name . ' ' . $affiliate_request->last_name )
180 . '</a>';
181 }
182
183 return esc_html( $affiliate_request->$column_name ?? '' );
184 }
185
186 /**
187 * Displays extra table navigation.
188 *
189 * @param string $which Top or bottom placement.
190 */
191 protected function extra_tablenav( $which ) {
192 ?>
193 <input type="hidden" name="page" value="sc-affiliate-requests" />
194
195 <?php if ( ! empty( $_GET['status'] ) ) : // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>
196 <input type="hidden" name="status" value="<?php echo esc_attr( $_GET['status'] ); ?>" />
197 <?php endif; ?>
198
199 <?php
200 /**
201 * Fires immediately following the closing "actions" div in the tablenav
202 * for the affiliate_requests list table.
203 *
204 * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
205 */
206 do_action( 'manage_affiliate_requests_extra_tablenav', $which );
207 }
208
209
210 /**
211 * Get filtered status / default status.
212 *
213 * @return string|null
214 */
215 private function getFilteredStatus() {
216 return ! empty( $_GET['status'] ) && 'all' !== $_GET['status']
217 ? sanitize_text_field( wp_unslash( $_GET['status'] ) )
218 : null;
219 }
220
221 /**
222 * Get all statuses.
223 *
224 * @return array
225 */
226 private function getStatuses(): array {
227 return array(
228 'all' => __( 'All', 'surecart' ),
229 'approved' => __( 'Approved', 'surecart' ),
230 'denied' => __( 'Denied', 'surecart' ),
231 'pending' => __( 'Pending', 'surecart' ),
232 );
233 }
234 }
235