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 / Bundles / BundlesListTable.php
surecart / app / src / Controllers / Admin / Bundles Last commit date
BundleScriptsController.php 6 days ago BundlesController.php 6 days ago BundlesListTable.php 6 days ago
BundlesListTable.php
170 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Bundles;
4
5 use SureCart\Controllers\Admin\Products\ProductsListTable;
6
7 /**
8 * Bundles list table.
9 */
10 class BundlesListTable extends ProductsListTable {
11 /**
12 * Admin page slug.
13 *
14 * @var string
15 */
16 protected $page_slug = 'sc-bundles';
17
18 /**
19 * URL key for \SureCart::getUrl()->edit() and related helpers.
20 *
21 * @var string
22 */
23 protected $url_key = 'bundle';
24
25 /**
26 * Per-page screen option key passed to get_items_per_page().
27 *
28 * @var string
29 */
30 protected $per_page_key = 'bundles';
31
32 /**
33 * User-meta key holding hidden columns for this screen.
34 *
35 * @var string
36 */
37 protected $hidden_columns_meta_key = 'managesurecart_page_sc-bundlescolumnshidden';
38
39 /**
40 * `bundle` value sent to Product::where() in table_data().
41 *
42 * @var bool
43 */
44 protected $is_bundle = true;
45
46 /**
47 * Extra `with` expansions specific to this screen.
48 *
49 * @var array
50 */
51 protected $table_extra_with = array( 'bundle_items' );
52
53 /**
54 * WP action fired before the Filter button in extra_tablenav top.
55 *
56 * @var string
57 */
58 protected $restrict_manage_hook = 'restrict_manage_bundles';
59
60 /**
61 * WP action fired after the closing actions div in extra_tablenav.
62 *
63 * @var string
64 */
65 protected $extra_tablenav_hook = 'manage_bundles_extra_tablenav';
66
67 /**
68 * Filter to disable the collection dropdown.
69 *
70 * @var string
71 */
72 protected $collection_dropdown_disable_filter = 'surecart/disable_bundle_collection_dropdown';
73
74 /**
75 * Screen-reader label for the row checkbox.
76 *
77 * @return string
78 */
79 protected function selectAriaLabel() {
80 return __( 'Select bundle', 'surecart' );
81 }
82
83 /**
84 * Display label for the "No items" empty state.
85 *
86 * @return string
87 */
88 protected function noItemsLabel() {
89 return __( 'No bundles found.', 'surecart' );
90 }
91
92 /**
93 * Aria-label used on the row "Edit" link.
94 *
95 * @return string
96 */
97 protected function entityLabelEdit() {
98 return __( 'Edit Bundle', 'surecart' );
99 }
100
101 /**
102 * Confirmation prompt shown when restoring (un-archiving) a bundle.
103 *
104 * @return string
105 */
106 protected function archiveConfirmRestore() {
107 return __( 'Are you sure you want to restore this bundle? It will be available to purchase.', 'surecart' );
108 }
109
110 /**
111 * Confirmation prompt shown when archiving a bundle.
112 *
113 * @return string
114 */
115 protected function archiveConfirmArchive() {
116 return __( 'Are you sure you want to archive this bundle? It will be unavailable for purchase.', 'surecart' );
117 }
118
119 /**
120 * Aria-label on the toggle-archive action.
121 *
122 * @return string
123 */
124 protected function archiveAriaLabel() {
125 return __( 'Toggle Bundle Archive', 'surecart' );
126 }
127
128 /**
129 * Entity columns.
130 *
131 * @return array
132 */
133 protected function entityColumns() {
134 return array(
135 'cb' => '<input type="checkbox" />',
136 'name' => __( 'Name', 'surecart' ),
137 'price' => __( 'Price', 'surecart' ),
138 'bundle_items' => __( 'Items', 'surecart' ),
139 'commission_amount' => __( 'Commission Amount', 'surecart' ),
140 'integrations' => __( 'Integrations', 'surecart' ),
141 'product_collections' => __( 'Collections', 'surecart' ),
142 'status' => __( 'Product Page', 'surecart' ),
143 'featured' => __( 'Featured', 'surecart' ),
144 'date' => __( 'Created', 'surecart' ),
145 );
146 }
147
148 /**
149 * Show the number of bundle items.
150 *
151 * @param object $bundle The bundle model.
152 *
153 * @return string
154 */
155 public function column_bundle_items( $bundle ) {
156 $raw = $bundle->bundle_items ?? array();
157 $items = is_array( $raw ) ? $raw : ( $raw->data ?? array() );
158 $count = is_array( $items ) ? count( $items ) : 0;
159
160 // translators: %d is the number of items in the bundle.
161 $label = sprintf( _n( '%d item', '%d items', $count, 'surecart' ), $count );
162
163 return sprintf(
164 '<a href="%1$s">%2$s</a>',
165 esc_url( \SureCart::getUrl()->edit( $this->url_key, $bundle->id ) ),
166 esc_html( $label )
167 );
168 }
169 }
170