PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 1 year ago AffiliationRequestsScriptsController.php 2 years ago
AffiliationRequestsListTable.php
228 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\AffiliationRequests;
4
5 use SureCart\Controllers\Admin\Tables\ListTable;
6 use SureCart\Models\AffiliationRequest;
7
8 /**
9 * Create a new table class that will extend the WP_List_Table
10 */
11 class AffiliationRequestsListTable extends ListTable {
12 public $checkbox = true;
13 public $error = '';
14 public $pages = array();
15
16 /**
17 * Prepare the items for the table to process
18 *
19 * @return void
20 */
21 public function prepare_items() {
22 $columns = $this->get_columns();
23 $hidden = $this->get_hidden_columns();
24 $sortable = $this->get_sortable_columns();
25
26 $this->_column_headers = array( $columns, $hidden, $sortable );
27
28 $query = $this->table_data();
29
30 if ( is_wp_error( $query ) ) {
31 $this->error = $query->get_error_message();
32 $this->items = array();
33 return;
34 }
35
36 $this->set_pagination_args(
37 array(
38 'total_items' => $query->pagination->count,
39 'per_page' => $this->get_items_per_page( 'affiliate-requests' ),
40 )
41 );
42
43 $this->items = $query->data;
44 }
45
46 /**
47 * Get views for the list table status links.
48 *
49 * @global int $post_id
50 * @global string $comment_status
51 * @global string $comment_type
52 */
53 protected function get_views() {
54 foreach ( $this->getStatuses() as $status => $label ) {
55 $link = admin_url( 'admin.php?page=sc-affiliate-requests' );
56 $current_link_attributes = '';
57
58 if ( ! empty( $_GET['status'] ) ) {
59 if ( $status === $_GET['status'] ) {
60 $current_link_attributes = ' class="current" aria-current="page"';
61 }
62 } elseif ( 'all' === $status ) {
63 $current_link_attributes = ' class="current" aria-current="page"';
64 }
65
66 $link = add_query_arg( 'status', $status, $link );
67
68 $link = esc_url( $link );
69
70 $status_links[ $status ] = "<a href='$link'$current_link_attributes>" . $label . '</a>';
71 }
72
73 /**
74 * Filters the comment status links.
75 *
76 * @since 2.5.0
77 * @since 5.1.0 The 'Mine' link was added.
78 *
79 * @param string[] $status_links An associative array of fully-formed comment status links. Includes 'All', 'Mine',
80 * 'Pending', 'Approved', 'Spam', and 'Trash'.
81 */
82 return apply_filters( 'comment_status_links', $status_links );
83 }
84
85 /**
86 * Override the parent columns method. Defines the columns to use in your listing table
87 *
88 * @return array
89 */
90 public function get_columns() {
91 return array(
92 'name' => __( 'Name', 'surecart' ),
93 'email' => __( 'Email', 'surecart' ),
94 'payout_email' => __( 'Payout Email', 'surecart' ),
95 'status' => __( 'Status', 'surecart' ),
96 'date' => __( 'Date', 'surecart' ),
97 );
98 }
99
100 /**
101 * Define which columns are hidden
102 *
103 * @return array
104 */
105 public function get_hidden_columns() {
106 return array();
107 }
108
109 /**
110 * Get the table data
111 *
112 * @return array
113 */
114 private function table_data() {
115 $affiliate_request_query = AffiliationRequest::where(
116 array(
117 'status[]' => $this->getFilteredStatus(),
118 'query' => $this->get_search_query(),
119 'used' => false,
120 )
121 );
122
123 return $affiliate_request_query->paginate(
124 array(
125 'per_page' => $this->get_items_per_page( 'affiliate_requests' ),
126 'page' => $this->get_pagenum(),
127 )
128 );
129 }
130
131 /**
132 * Nothing found.
133 *
134 * @return void
135 */
136 public function no_items() {
137 if ( $this->error ) {
138 echo esc_html( $this->error );
139 return;
140 }
141 echo esc_html_e( 'No affiliate requests found.', 'surecart' );
142 }
143
144 /**
145 * Published column
146 *
147 * @param \SureCart\Models\AffiliationRequest $affiliate_request AffiliationRequest model.
148 *
149 * @return string
150 */
151 public function column_status( $affiliate_request ) {
152 ob_start();
153 ?>
154 <sc-tag type="<?php echo esc_attr( $affiliate_request->status_type ); ?>">
155 <?php echo esc_html( $affiliate_request->status_display_text ); ?>
156 </sc-tag>
157 <?php
158 return ob_get_clean();
159 }
160
161 /**
162 * Define what data to show on each column of the table
163 *
164 * @param \SureCart\Models\AffiliationRequest $affiliate_request AffiliationRequest model.
165 * @param string $column_name - Current column name.
166 *
167 * @return mixed
168 */
169 public function column_default( $affiliate_request, $column_name ) {
170 if ( 'name' === $column_name ) {
171 return '<a href="' . \SureCart::getUrl()->edit( 'affiliate-request', $affiliate_request->id ) . '">'
172 . $affiliate_request->first_name . ' ' . $affiliate_request->last_name
173 . '</a>';
174 }
175
176 return $affiliate_request->$column_name ?? '';
177 }
178
179 /**
180 * Displays extra table navigation.
181 *
182 * @param string $which Top or bottom placement.
183 */
184 protected function extra_tablenav( $which ) {
185 ?>
186 <input type="hidden" name="page" value="sc-affiliate-requests" />
187
188 <?php if ( ! empty( $_GET['status'] ) ) : // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>
189 <input type="hidden" name="status" value="<?php echo esc_attr( $_GET['status'] ); ?>" />
190 <?php endif; ?>
191
192 <?php
193 /**
194 * Fires immediately following the closing "actions" div in the tablenav
195 * for the affiliate_requests list table.
196 *
197 * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
198 */
199 do_action( 'manage_affiliate_requests_extra_tablenav', $which );
200 }
201
202
203 /**
204 * Get filtered status / default status.
205 *
206 * @return string|null
207 */
208 private function getFilteredStatus() {
209 return ! empty( $_GET['status'] ) && 'all' !== $_GET['status']
210 ? sanitize_text_field( wp_unslash( $_GET['status'] ) )
211 : null;
212 }
213
214 /**
215 * Get all statuses.
216 *
217 * @return array
218 */
219 private function getStatuses(): array {
220 return array(
221 'all' => __( 'All', 'surecart' ),
222 'approved' => __( 'Approved', 'surecart' ),
223 'denied' => __( 'Denied', 'surecart' ),
224 'pending' => __( 'Pending', 'surecart' ),
225 );
226 }
227 }
228