PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.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 / Licenses / LicensesListTable.php
surecart / app / src / Controllers / Admin / Licenses Last commit date
LicensesController.php 2 years ago LicensesListTable.php 3 years ago LicensesScriptsController.php 3 years ago
LicensesListTable.php
196 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Licenses;
4
5 use SureCart\Models\Product;
6 use SureCart\Models\License;
7 use SureCart\Support\Currency;
8 use SureCart\Support\TimeDate;
9 use SureCart\Controllers\Admin\Tables\ListTable;
10 /**
11 * Create a new table class that will extend the WP_List_Table
12 */
13 class LicensesListTable extends ListTable {
14 /**
15 * Prepare the items for the table to process
16 *
17 * @return Void
18 */
19 public function prepare_items() {
20 $columns = $this->get_columns();
21 $hidden = $this->get_hidden_columns();
22 $sortable = $this->get_sortable_columns();
23
24 $this->_column_headers = array( $columns, $hidden, $sortable );
25
26 $query = $this->table_data();
27 if ( is_wp_error( $query ) ) {
28 $this->items = [];
29 return;
30 }
31
32 $this->set_pagination_args(
33 [
34 'total_items' => $query->pagination->count,
35 'per_page' => $this->get_items_per_page( 'surecart_licenses' ),
36 ]
37 );
38
39 $this->items = $query->data;
40 }
41
42 public function search() { ?>
43 <form class="search-form"
44 method="get">
45 <?php $this->search_box( __( 'Search Licenses' ), 'user' ); ?>
46 <input type="hidden"
47 name="id"
48 value="1" />
49 </form>
50 <?php
51 }
52
53 /**
54 * Override the parent columns method. Defines the columns to use in your listing table
55 *
56 * @return Array
57 */
58 public function get_columns() {
59 return [
60 'key' => __( 'Key', 'surecart' ),
61 'customer' => __( 'Customer', 'surecart' ),
62 'purchase' => __( 'Purchase', 'surecart' ),
63 'status' => __( 'Status', 'surecart' ),
64 'created' => __( 'Created', 'surecart' ),
65 ];
66 }
67
68 /**
69 * Get the table data
70 *
71 * @return Array
72 */
73 private function table_data() {
74 return License::where( [ 'query' => $this->get_search_query() ] )
75 ->with( [ 'purchase', 'purchase.customer', 'purchase.product' ] )
76 ->paginate(
77 [
78 'per_page' => $this->get_items_per_page( 'surecart_licenses' ),
79 'page' => $this->get_pagenum(),
80 ]
81 );
82 }
83
84 /**
85 * Nothing found.
86 *
87 * @return void
88 */
89 public function no_items() {
90 echo esc_html_e( 'No licenses found.', 'surecart' );
91 }
92
93 /**
94 * Name column
95 *
96 * @param \SureCart\Models\License $license License model.
97 *
98 * @return string
99 */
100 public function column_key( $license ) {
101 ob_start();
102 ?>
103 <a class="row-title" aria-label="<?php echo esc_attr( 'Edit License', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'licenses', $license->id ) ); ?>">
104 <?php echo wp_kses_post( $license->key ); ?>
105 </a>
106
107 <?php
108 echo $this->row_actions(
109 [
110 'edit' => '<a href="' . esc_url( \SureCart::getUrl()->edit( 'licenses', $license->id ) ) . '" aria-label="' . esc_attr( 'Edit License', 'surecart' ) . '">' . __( 'Edit', 'surecart' ) . '</a>',
111 ],
112 );
113 ?>
114
115 <?php
116 return ob_get_clean();
117 }
118
119 public function column_status( $license ) {
120 $status = $license->status ?? 'inactive';
121 switch ( $status ) {
122 case 'active':
123 return '<sc-tag type="success">' . __( 'Active', 'surecart' ) . '</sc-tag>';
124 case 'revoked':
125 return '<sc-tag type="danger">' . __( 'Revoked', 'surecart' ) . '</sc-tag>';
126 default:
127 return '<sc-tag type="info">' . __( 'Inactive', 'surecart' ) . '</sc-tag>';
128 }
129 }
130
131 public function column_customer( $license ) {
132 ob_start();
133 ?>
134 <a aria-label="<?php echo esc_attr( 'Edit Customer', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'customers', $license->purchase->customer->id ) ); ?>">
135 <?php echo wp_kses_post( $license->purchase->customer->name ?? $license->purchase->customer->email ); ?>
136 <?php if ( ! empty( $license->purchase->customer->name ) ) : ?>
137 &mdash;
138 <?php echo esc_html( $license->purchase->customer->email ); ?>
139 <?php endif; ?>
140 </a>
141 <?php
142 return ob_get_clean();
143 }
144
145 public function column_purchase( $license ) {
146 if ( empty( $license->purchase->product->name ) ) {
147 return '-';
148 }
149 ob_start();
150 ?>
151 <a aria-label="<?php echo esc_attr( 'Edit Product', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'product', $license->purchase->product->id ) ); ?>">
152 <?php echo wp_kses_post( $license->purchase->product->name ); ?>
153 </a>
154 <?php
155 return ob_get_clean();
156 }
157
158 /**
159 * Toggle archive action link and text.
160 *
161 * @param \SureCart\Models\Product $product Product model.
162 * @return string
163 */
164 public function action_toggle_archive( $product ) {
165 $text = $product->archived ? __( 'Un-Archive', 'surecart' ) : __( 'Archive', 'surecart' );
166 $confirm_message = $product->archived ? __( 'Are you sure you want to restore this product? This will be be available to purchase.', 'surecart' ) : __( 'Are you sure you want to archive this product? This will be unavailable for purchase.', 'surecart' );
167 $link = \SureCart::getUrl()->toggleArchive( 'product', $product->id );
168
169 return sprintf(
170 '<a class="submitdelete" onclick="return confirm(\'%1s\')" href="%2s" aria-label="%3s">%4s</a>',
171 esc_attr( $confirm_message ),
172 esc_url( $link ),
173 esc_attr__( 'Toggle Product Archive', 'surecart' ),
174 esc_html( $text )
175 );
176 }
177
178 /**
179 * Define what data to show on each column of the table
180 *
181 * @param \SureCart\Models\Product $product Product model.
182 * @param String $column_name - Current column name.
183 *
184 * @return Mixed
185 */
186 public function column_default( $product, $column_name ) {
187 switch ( $column_name ) {
188 case 'name':
189 return '<a href="' . \SureCart::getUrl()->edit( 'product', $product->id ) . '">' . $product->name . '</a>';
190 case 'name':
191 case 'description':
192 return $product->$column_name ?? '';
193 }
194 }
195 }
196