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 / BundlesController.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
BundlesController.php
126 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Bundles;
4
5 use SureCart\Controllers\Admin\Products\ProductsController;
6 use SureCart\Sync\ImportState;
7
8 /**
9 * Bundle admin controller. Bundles are Products with `bundle: true`, so most
10 * of the flow is inherited from ProductsController — this subclass only
11 * overrides what differs (slugs, view paths, list-table refs, copy).
12 */
13 class BundlesController extends ProductsController {
14 /**
15 * Re-declared so the DI factory resolves `ImportState` for the subclass —
16 * auto-resolution skips inherited constructors.
17 *
18 * @param ImportState $woo_import_state Import state for WooCommerce runs.
19 */
20 public function __construct( ImportState $woo_import_state ) {
21 parent::__construct( $woo_import_state );
22 }
23
24 /** @var string */
25 protected $page_slug = 'sc-bundles';
26
27 /**
28 * Key passed to \SureCart::getUrl()->index().
29 * Plural — mirrors ProductsController's `$url_key = 'products'`.
30 *
31 * @var string
32 */
33 protected $url_key = 'bundles';
34
35 /**
36 * View path prefix (no trailing slash).
37 *
38 * @var string
39 */
40 protected $view_prefix = 'admin/bundles';
41
42 /** @var string */
43 protected $scripts_controller_class = BundleScriptsController::class;
44
45 /** @var string */
46 protected $list_table_class = BundlesListTable::class;
47
48 /** @var string */
49 protected $bulk_delete_view_key = 'bundles';
50
51 /**
52 * Index breadcrumb shape used by withHeader().
53 *
54 * @return array
55 */
56 protected function indexBreadcrumb() {
57 return array(
58 'bundles' => array(
59 'title' => __( 'Bundles', 'surecart' ),
60 ),
61 );
62 }
63
64 /**
65 * Status-query → notice message map for the index page.
66 *
67 * @return array
68 */
69 protected function indexNotices() {
70 return array(
71 'sync_success' => __( 'Bundle synced successfully.', 'surecart' ),
72 'archived' => __( 'Bundle archived.', 'surecart' ),
73 'unarchived' => __( 'Bundle unarchived.', 'surecart' ),
74 'duplicated' => __( 'Bundle duplicated successfully.', 'surecart' ),
75 );
76 }
77
78 /**
79 * Admin-bar "View Bundle" link on the edit screen.
80 *
81 * @return array
82 */
83 protected function adminBarViewEntry() {
84 return array(
85 'id' => 'view-bundle-page',
86 'title' => __( 'View Bundle', 'surecart' ),
87 );
88 }
89
90 /**
91 * Message when bulk-delete is opened with no IDs selected.
92 *
93 * @return string
94 */
95 protected function bulkDeleteEmptyMessage() {
96 return __( 'No bundles selected. Please choose at least one bundle to delete.', 'surecart' );
97 }
98
99 /**
100 * Message when bulk-delete targets ids that no longer exist.
101 *
102 * @param int $count Number of ids requested for deletion.
103 *
104 * @return string
105 */
106 protected function bulkDeleteAlreadyDeletedMessage( $count ) {
107 return _n(
108 'This bundle has already been deleted.',
109 'These bundles have already been deleted.',
110 $count,
111 'surecart'
112 );
113 }
114
115 /**
116 * Header title on the confirm-bulk-delete screen.
117 *
118 * @param int $count Number of items being deleted.
119 *
120 * @return string
121 */
122 protected function bulkDeleteHeaderTitle( $count ) {
123 return _n( 'Delete Bundle', 'Delete Bundles', $count, 'surecart' );
124 }
125 }
126