PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 / Web / DashboardController.php
surecart / app / src / Controllers / Web Last commit date
.gitkeep 3 years ago BasePageController.php 1 year ago BuyPageController.php 1 year ago CheckoutFormsController.php 2 years ago DashboardController.php 1 year ago PurchaseController.php 3 years ago SubscriptionsController.php 3 years ago UpsellPageController.php 1 year ago WebhookController.php 2 years ago
DashboardController.php
225 lines
1 <?php
2
3 namespace SureCart\Controllers\Web;
4
5 use SureCart\Models\CustomerLink;
6 use SureCart\Models\User;
7
8 /**
9 * Thank you routes
10 */
11 class DashboardController {
12 /**
13 * Get the enabled navigation.
14 *
15 * @return array
16 */
17 public function getEnabledNavigation( $id ) {
18 return array_values(
19 array_filter(
20 [ 'orders', 'invoices', 'subscriptions', 'downloads', 'account', 'billing' ],
21 function( $name ) use ( $id ) {
22 if ( 'billing' === $name ) {
23 if ( ! get_post_meta( $id, '_surecart_dashboard_navigation_billing', true ) ) {
24 return false;
25 }
26 if ( empty( User::current()->customerId( 'live' ) ) && empty( User::current()->customerId( 'test' ) ) ) {
27 return false;
28 }
29 return true;
30 }
31 return get_post_meta( $id, '_surecart_dashboard_navigation_' . $name, true );
32 }
33 )
34 );
35 }
36
37 /**
38 * Get data for the page.
39 *
40 * @return array
41 */
42 public function getData() {
43 return [
44 'show_logo' => get_post_meta( get_the_ID(), '_surecart_dashboard_show_logo', true ),
45 'logo_url' => \SureCart::account()->brand->logo_url ?? null,
46 'logo_width' => get_post_meta( get_the_ID(), '_surecart_dashboard_logo_width', true ),
47 'current_url' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
48 'user' => wp_get_current_user(),
49 'dashboard_url' => get_permalink( get_the_ID() ),
50 'logout_link' => wp_logout_url( get_permalink( get_the_ID() ) ),
51 'active_tab' => esc_html( $_GET['model'] ?? 'dashboard' ),
52 'navigation' => $this->getNavigation(),
53 'account_navigation' => $this->getAccountNavigation(),
54 ];
55 }
56
57 /**
58 * Is this tab active.
59 */
60 public function isActive( $tab ) {
61 return esc_html( $_GET['model'] ?? 'dashboard' ) === $tab;
62 }
63
64 /**
65 * Get the account navigation.
66 *
67 * @return array
68 */
69 public function getAccountNavigation() {
70 $dashboard_url = get_permalink( get_the_ID() );
71 $enabled_navigation = $this->getEnabledNavigation( get_the_ID() );
72 $customer_id = ! empty( User::current()->customerId( 'live' ) ) ? User::current()->customerId( 'live' ) : User::current()->customerId( 'test' );
73 return array_filter(
74 [
75 'account' => [
76 'icon_name' => 'user',
77 'name' => __( 'Account', 'surecart' ),
78 'active' => $this->isActive( 'account' ),
79 'href' => add_query_arg(
80 [
81 'action' => 'edit',
82 'model' => 'user',
83 ],
84 $dashboard_url
85 ),
86 ],
87 'billing' => ! empty( $customer_id ) ? [
88 'icon_name' => 'credit-card',
89 'name' => __( 'Billing', 'surecart' ),
90 'active' => $this->isActive( 'billing' ),
91 'href' => add_query_arg(
92 [
93 'action' => 'show',
94 'model' => 'customer',
95 'id' => $customer_id,
96 ],
97 $dashboard_url
98 ),
99 ] : false,
100 ],
101 function( $item, $key ) use ( $enabled_navigation ) {
102 return $item && in_array( $key, $enabled_navigation, true );
103 },
104 ARRAY_FILTER_USE_BOTH
105 );
106 }
107
108 /**
109 * Get the navigation.
110 *
111 * @return array
112 */
113 public function getNavigation() {
114 $dashboard_url = get_permalink( get_the_ID() );
115 $enabled_navigation = $this->getEnabledNavigation( get_the_ID() );
116
117 return array_filter(
118 [
119 'dashboard' => [
120 'icon_name' => 'server',
121 'name' => __( 'Dashboard', 'surecart' ),
122 'active' => $this->isActive( 'dashboard' ),
123 'href' => $dashboard_url,
124 ],
125 'orders' => [
126 'icon_name' => 'shopping-bag',
127 'name' => __( 'Orders', 'surecart' ),
128 'active' => $this->isActive( 'order' ),
129 'href' => add_query_arg(
130 [
131 'action' => 'index',
132 'model' => 'order',
133 ],
134 $dashboard_url
135 ),
136 ],
137 'invoices' => [
138 'icon_name' => 'inbox',
139 'name' => __( 'Invoices', 'surecart' ),
140 'active' => $this->isActive( 'invoice' ),
141 'href' => add_query_arg(
142 [
143 'action' => 'index',
144 'model' => 'invoice',
145 ],
146 $dashboard_url
147 ),
148 ],
149 'subscriptions' => [
150 'icon_name' => 'repeat',
151 'name' => __( 'Plans', 'surecart' ),
152 'active' => $this->isActive( 'subscription' ),
153 'href' => add_query_arg(
154 [
155 'action' => 'index',
156 'model' => 'subscription',
157 ],
158 $dashboard_url
159 ),
160 ],
161 'downloads' => [
162 'icon_name' => 'download-cloud',
163 'name' => __( 'Downloads', 'surecart' ),
164 'active' => $this->isActive( 'download' ),
165 'href' => add_query_arg(
166 [
167 'action' => 'index',
168 'model' => 'download',
169 ],
170 $dashboard_url
171 ),
172 ],
173 ],
174 function( $item, $key ) use ( $enabled_navigation ) {
175 return $item && ( 'dashboard' === $key || in_array( $key, $enabled_navigation, true ) );
176 },
177 ARRAY_FILTER_USE_BOTH
178 );
179 }
180
181 /**
182 * Show the dashboard.
183 */
184 public function show( $request, $view ) {
185 // do not cache.
186 $request->noCache();
187 return \SureCart::view( $view );
188 }
189
190 /**
191 * Get the link from the request.
192 *
193 * @param string $link_id The link id.
194 * @return string|\WP_Error
195 */
196 public function getLink( $link_id ) {
197 $link = CustomerLink::find( $link_id );
198 if ( is_wp_error( $link ) ) {
199 return $link;
200 }
201 return $link;
202 }
203
204 /**
205 * Login the user
206 *
207 * @param int|\WP_User $wp_user WordPress user.
208 * @return void
209 */
210 public function loginUser( $wp_user ) {
211 if ( ! $wp_user ) {
212 return wp_die( esc_html__( 'This user could not be found.', 'surecart' ) );
213 }
214
215 $id = ! empty( $wp_user->ID ) ? $wp_user->ID : $wp_user;
216 if ( ! is_int( $id ) ) {
217 return;
218 }
219
220 wp_clear_auth_cookie();
221 wp_set_current_user( $id );
222 wp_set_auth_cookie( $id );
223 }
224 }
225