PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
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 / WordPress / Admin / Menus / AdminMenuPageService.php
surecart / app / src / WordPress / Admin / Menus Last commit date
AdminMenuPageService.php 2 years ago AdminMenuPageServiceProvider.php 3 years ago
AdminMenuPageService.php
181 lines
1 <?php
2
3 namespace SureCart\WordPress\Admin\Menus;
4
5 use SureCart\Models\ApiToken;
6
7 /**
8 * Handles creation and enqueueing of admin menu pages and assets.
9 */
10 class AdminMenuPageService {
11 /**
12 * Top level menu slug.
13 *
14 * @var string
15 */
16 protected $slug = 'sc-dashboard';
17
18 /**
19 * Pages
20 *
21 * @var array
22 */
23 protected $pages = [];
24
25 /**
26 * Add menu items.
27 */
28 public function bootstrap() {
29 add_action( 'admin_menu', [ $this, 'registerAdminPages' ] );
30 add_action( 'admin_head', [ $this, 'adminMenuCSS' ] );
31 add_filter( 'parent_file', [ $this, 'forceSelect' ] );
32
33 // Admin bar menus.
34 if ( apply_filters( 'surecart_show_admin_bar_visit_store', true ) ) {
35 add_action( 'admin_bar_menu', array( $this, 'adminBarMenu' ), 31 );
36 }
37 }
38
39 /**
40 * Add the "Visit Store" link in admin bar main menu.
41 *
42 * @since 2.4.0
43 * @param WP_Admin_Bar $wp_admin_bar Admin bar instance.
44 */
45 public function adminBarMenu( $wp_admin_bar ) {
46 if ( ! is_admin() || ! is_admin_bar_showing() ) {
47 return;
48 }
49
50 // Show only when the user is a member of this site, or they're a super admin.
51 if ( ! is_user_member_of_blog() && ! is_super_admin() ) {
52 return;
53 }
54
55 // Don't display when shop page is the same of the page on front.
56 if ( intval( get_option( 'page_on_front' ) ) === \SureCart::pages()->getId( 'shop' ) ) {
57 return;
58 }
59
60 // Add an option to visit the store.
61 $wp_admin_bar->add_node(
62 array(
63 'parent' => 'site-name',
64 'id' => 'view-sc-store',
65 'title' => class_exists( 'WooCommerce' ) ? __( 'Visit SureCart Store', 'surecart' ) : __( 'Visit Store', 'surecart' ),
66 'href' => \SureCart::pages()->url( 'shop' ),
67 )
68 );
69 }
70
71 /**
72 * Make sure these menu items get selected.
73 *
74 * @param string $file The file string.
75 *
76 * @return string
77 */
78 public function forceSelect( $file ) {
79 global $submenu_file;
80 $cart_page_id = \SureCart::pages()->getId( 'cart', 'sc_cart' );
81
82 if ( 'edit.php?post_type=sc_cart' === $submenu_file ) {
83 $file = 'sc-dashboard';
84 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
85 $submenu_file = 'post.php?post=' . (int) $cart_page_id . '&action=edit';
86 }
87 if ( 'edit.php?post_type=sc_form' === $submenu_file ) {
88 $file = 'sc-dashboard';
89 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
90 $submenu_file = 'edit.php?post_type=sc_form';
91 }
92
93 return $file;
94 }
95
96 /**
97 * Add some divider css.
98 *
99 * @return string
100 */
101 public function adminMenuCSS() {
102 echo '<style>
103 #toplevel_page_sc-dashboard li {
104 clear: both;
105 }
106 #toplevel_page_sc-dashboard li:not(:last-child) a[href^="admin.php?page=sc-customers"]:after {
107 border-bottom: 1px solid hsla(0,0%,100%,.2);
108 display: block;
109 float: left;
110 margin: 13px -15px 8px;
111 content: "";
112 width: calc(100% + 26px);
113 }
114 #toplevel_page_sc-dashboard li:not(:last-child) a[href^="admin.php?page=sc-dashboard"]:after {
115 border-bottom: 1px solid hsla(0,0%,100%,.2);
116 display: block;
117 float: left;
118 margin: 13px -15px 8px;
119 content: "";
120 width: calc(100% + 26px);
121 }
122 #toplevel_page_sc-dashboard li:not(:last-child) a[href^="edit.php?post_type=sc_form"]:after {
123 border-bottom: 1px solid hsla(0,0%,100%,.2);
124 display: block;
125 float: left;
126 margin: 13px -15px 8px;
127 content: "";
128 width: calc(100% + 26px);
129 }
130 </style>';
131 }
132
133 /**
134 * Register admin pages.
135 *
136 * @return void
137 */
138 public function registerAdminPages() {
139 $entitlements = \SureCart::account()->entitlements;
140 if ( ! ApiToken::get() ) {
141 $this->slug = 'sc-getting-started';
142 }
143
144 $logo = file_get_contents( plugin_dir_path( SURECART_PLUGIN_FILE ) . 'images/icon.svg' );
145 \add_menu_page( __( 'Dashboard', 'surecart' ), __( 'SureCart', 'surecart' ), 'manage_sc_shop_settings', $this->slug, '__return_false', 'data:image/svg+xml;base64,' . base64_encode( $logo ), 30.6001 );
146
147 // not yet installed.
148 if ( ! ApiToken::get() ) {
149 $this->pages = [
150 'get-started' => \add_submenu_page( $this->slug, __( 'Get Started', 'surecart' ), __( 'Get Started', 'surecart' ), 'manage_options', $this->slug, '__return_false' ),
151 'complete-signup' => \add_submenu_page( null, __( 'Complete Signup', 'surecart' ), __( 'Complete Signup', 'surecart' ), 'manage_options', 'sc-complete-signup', '__return_false' ),
152 'settings' => \add_submenu_page( $this->slug, __( 'Settings', 'surecart' ), __( 'Settings', 'surecart' ), 'manage_options', 'sc-settings', '__return_false' ),
153 ];
154 return;
155 }
156
157 $cart_page_id = \SureCart::pages()->getId( 'cart', 'sc_cart' );
158
159 $this->pages = [
160 'get-started' => \add_submenu_page( $this->slug, __( 'Dashboard', 'surecart' ), __( 'Dashboard', 'surecart' ), 'manage_sc_shop_settings', $this->slug, '__return_false' ),
161 'complete-signup' => \add_submenu_page( null, __( 'Complete Signup', 'surecart' ), __( 'Complete Signup', 'surecart' ), 'manage_options', 'sc-complete-signup', '__return_false' ),
162 'claim-account' => \add_submenu_page( null, __( 'Claim Account', 'surecart' ), __( 'Claim Account', 'surecart' ), 'manage_options', 'sc-claim-account', '__return_false' ),
163 'orders' => \add_submenu_page( $this->slug, __( 'Orders', 'surecart' ), __( 'Orders', 'surecart' ), 'edit_sc_orders', 'sc-orders', '__return_false' ),
164 'checkouts' => in_array( $_GET['page'] ?? '', [ 'sc-checkouts' ] ) ? \add_submenu_page( $this->slug, __( 'Checkouts', 'surecart' ), '' . __( 'Add New', 'surecart' ), 'edit_sc_orders', 'sc-checkouts', '__return_false' ): null,
165 'abandoned' => in_array( $_GET['page'] ?? '', [ 'sc-orders', 'sc-abandoned-checkouts', 'sc-checkouts' ] ) ? \add_submenu_page( $this->slug, __( 'Abandoned', 'surecart' ), '' . __( 'Abandoned', 'surecart' ), 'edit_sc_orders', 'sc-abandoned-checkouts', '__return_false' ) : null,
166 'products' => \add_submenu_page( $this->slug, __( 'Products', 'surecart' ), __( 'Products', 'surecart' ), 'edit_sc_products', 'sc-products', '__return_false' ),
167 'product-groups' => ! empty( $entitlements->product_groups ) && in_array( $_GET['page'] ?? '', [ 'sc-products', 'sc-product-groups', 'sc-bumps' ] ) ? \add_submenu_page( $this->slug, __( 'Upgrade Groups', 'surecart' ), '' . __( 'Upgrade Groups', 'surecart' ), 'edit_sc_products', 'sc-product-groups', '__return_false' ) : null,
168 'bumps' => ! empty( $entitlements->bumps ) && in_array( $_GET['page'] ?? '', [ 'sc-products', 'sc-product-groups', 'sc-bumps' ] ) ? \add_submenu_page( $this->slug, __( 'Order Bumps', 'surecart' ), '' . __( 'Order Bumps', 'surecart' ), 'edit_sc_products', 'sc-bumps', '__return_false' ) : null,
169 'coupons' => \add_submenu_page( $this->slug, __( 'Coupons', 'surecart' ), __( 'Coupons', 'surecart' ), 'edit_sc_coupons', 'sc-coupons', '__return_false' ),
170 'licenses' => ! empty( $entitlements->licensing ) ? \add_submenu_page( $this->slug, __( 'Licenses', 'surecart' ), __( 'Licenses', 'surecart' ), 'edit_sc_products', 'sc-licenses', '__return_false' ) : null,
171 'subscriptions' => \add_submenu_page( $this->slug, __( 'Subscriptions', 'surecart' ), __( 'Subscriptions', 'surecart' ), 'edit_sc_subscriptions', 'sc-subscriptions', '__return_false' ),
172 'cancellations' => in_array( $_GET['page'] ?? '', [ 'sc-subscriptions', 'sc-cancellation-insights' ] ) ? \add_submenu_page( $this->slug, __( 'Cancellation Insights', 'surecart' ), '' . __( 'Cancellations', 'surecart' ), 'edit_sc_subscriptions', 'sc-cancellation-insights', '__return_false' ) : null,
173 'customers' => \add_submenu_page( $this->slug, __( 'Customers', 'surecart' ), __( 'Customers', 'surecart' ), 'edit_sc_customers', 'sc-customers', '__return_false' ),
174 'cart' => get_edit_post_link( $cart_page_id ) ? \add_submenu_page( $this->slug, __( 'Cart', 'surecart' ), __( 'Cart', 'surecart' ), 'manage_options', 'post.php?post=' . (int) $cart_page_id . '&action=edit', '' ) : null,
175 // 'upgrade-paths' => \add_submenu_page( $this->slug, __( 'Upgrade Groups', 'surecart' ), __( 'Upgrade Groups', 'surecart' ), 'edit_sc_products', 'sc-product-groups', '__return_false' ),
176 'forms' => \add_submenu_page( $this->slug, __( 'Forms', 'surecart' ), __( 'Forms', 'surecart' ), 'edit_posts', 'edit.php?post_type=sc_form', '' ),
177 'settings' => \add_submenu_page( $this->slug, __( 'Settings', 'surecart' ), __( 'Settings', 'surecart' ), 'manage_options', 'sc-settings', '__return_false' ),
178 ];
179 }
180 }
181