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 / Licenses / LicensesListTable.php
surecart / app / src / Controllers / Admin / Licenses Last commit date
LicensesController.php 2 years ago LicensesListTable.php 2 months ago LicensesScriptsController.php 3 years ago
LicensesListTable.php
203 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 ?>
44 <form class="search-form"
45 method="get">
46 <?php $this->search_box( __( 'Search Licenses', 'surecart' ), 'user' ); ?>
47 <input type="hidden"
48 name="id"
49 value="1" />
50 </form>
51 <?php
52 }
53
54 /**
55 * Override the parent columns method. Defines the columns to use in your listing table
56 *
57 * @return Array
58 */
59 public function get_columns() {
60 return array_merge(
61 [
62 'key' => __( 'Key', 'surecart' ),
63 'customer' => __( 'Customer', 'surecart' ),
64 'purchase' => __( 'Purchase', 'surecart' ),
65 'status' => __( 'Status', 'surecart' ),
66 'created' => __( 'Created', 'surecart' ),
67 ],
68 parent::get_columns()
69 );
70 }
71
72 /**
73 * Get the table data
74 *
75 * @return Array
76 */
77 private function table_data() {
78 return License::where( [ 'query' => $this->get_search_query() ] )
79 ->with( [ 'purchase', 'purchase.customer', 'purchase.product' ] )
80 ->paginate(
81 [
82 'per_page' => $this->get_items_per_page( 'surecart_licenses' ),
83 'page' => $this->get_pagenum(),
84 ]
85 );
86 }
87
88 /**
89 * Nothing found.
90 *
91 * @return void
92 */
93 public function no_items() {
94 echo esc_html_e( 'No licenses found.', 'surecart' );
95 }
96
97 /**
98 * Name column
99 *
100 * @param \SureCart\Models\License $license License model.
101 *
102 * @return string
103 */
104 public function column_key( $license ) {
105 ob_start();
106 ?>
107 <a class="row-title" aria-label="<?php esc_attr_e( 'Edit License', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'licenses', $license->id ) ); ?>">
108 <?php echo esc_html( $license->key ); ?>
109 </a>
110
111 <?php
112 echo $this->row_actions(
113 [
114 'edit' => '<a href="' . esc_url( \SureCart::getUrl()->edit( 'licenses', $license->id ) ) . '" aria-label="' . esc_attr__( 'Edit License', 'surecart' ) . '">' . __( 'Edit', 'surecart' ) . '</a>',
115 ],
116 );
117 ?>
118
119 <?php
120 return ob_get_clean();
121 }
122
123 public function column_status( $license ) {
124 $status = $license->status ?? 'inactive';
125 switch ( $status ) {
126 case 'active':
127 return '<sc-tag type="success">' . __( 'Active', 'surecart' ) . '</sc-tag>';
128 case 'revoked':
129 return '<sc-tag type="danger">' . __( 'Revoked', 'surecart' ) . '</sc-tag>';
130 default:
131 return '<sc-tag type="info">' . __( 'Inactive', 'surecart' ) . '</sc-tag>';
132 }
133 }
134
135 public function column_customer( $license ) {
136 ob_start();
137 ?>
138 <a aria-label="<?php esc_attr_e( 'Edit Customer', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'customers', $license->purchase->customer->id ) ); ?>">
139 <?php echo esc_html( $license->purchase->customer->name ?? $license->purchase->customer->email ); ?>
140 <?php if ( ! empty( $license->purchase->customer->name ) ) : ?>
141 &mdash;
142 <?php echo esc_html( $license->purchase->customer->email ); ?>
143 <?php endif; ?>
144 </a>
145 <?php
146 return ob_get_clean();
147 }
148
149 public function column_purchase( $license ) {
150 if ( empty( $license->purchase->product->name ) ) {
151 return '-';
152 }
153 ob_start();
154 ?>
155 <a aria-label="<?php esc_attr_e( 'Edit Product', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'product', $license->purchase->product->id ) ); ?>">
156 <?php echo esc_html( $license->purchase->product->name ); ?>
157 </a>
158 <?php
159 return ob_get_clean();
160 }
161
162 /**
163 * Toggle archive action link and text.
164 *
165 * @param \SureCart\Models\Product $product Product model.
166 * @return string
167 */
168 public function action_toggle_archive( $product ) {
169 $text = $product->archived ? __( 'Un-Archive', 'surecart' ) : __( 'Archive', 'surecart' );
170 $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' );
171 $link = \SureCart::getUrl()->toggleArchive( 'product', $product->id );
172
173 return sprintf(
174 '<a class="submitdelete" onclick="return confirm(\'%1s\')" href="%2s" aria-label="%3s">%4s</a>',
175 esc_attr( $confirm_message ),
176 esc_url( $link ),
177 esc_attr__( 'Toggle Product Archive', 'surecart' ),
178 esc_html( $text )
179 );
180 }
181
182 /**
183 * Define what data to show on each column of the table
184 *
185 * @param \SureCart\Models\Product $product Product model.
186 * @param String $column_name - Current column name.
187 *
188 * @return Mixed
189 */
190 public function column_default( $product, $column_name ) {
191 // Call the parent method to handle custom columns
192 parent::column_default( $product, $column_name );
193
194 switch ( $column_name ) {
195 case 'name':
196 return '<a href="' . esc_url( \SureCart::getUrl()->edit( 'product', $product->id ) ) . '">' . esc_html( $product->name ) . '</a>';
197 case 'name':
198 case 'description':
199 return $product->$column_name ?? '';
200 }
201 }
202 }
203