PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.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 / packages / blocks / Controllers / DownloadController.php
surecart / packages / blocks / Controllers Last commit date
Middleware 8 months ago BaseController.php 2 years ago ChargeController.php 3 years ago CustomerController.php 7 months ago DownloadController.php 2 weeks ago InvoiceController.php 1 year ago LicenseController.php 2 years ago OrderController.php 2 years ago PaymentMethodController.php 5 months ago SubscriptionController.php 4 months ago UserController.php 3 years ago
DownloadController.php
173 lines
1 <?php
2 namespace SureCartBlocks\Controllers;
3
4 use SureCart\Models\Component;
5 use SureCart\Models\Purchase;
6 use SureCart\Models\User;
7
8 /**
9 * The subscription controller.
10 */
11 class DownloadController extends BaseController {
12 /**
13 * Preview.
14 *
15 * @param array $attributes Block attributes.
16 */
17 public function preview( $attributes = [] ) {
18 if ( ! is_user_logged_in() ) {
19 return;
20 }
21
22 return wp_kses_post(
23 Component::tag( 'sc-dashboard-downloads-list' )
24 ->id( 'customer-downloads-preview' )
25 ->with(
26 [
27 'allLink' => add_query_arg(
28 [
29 'tab' => $this->getTab(),
30 'model' => 'download',
31 'action' => 'index',
32 ],
33 remove_query_arg( array_keys( $_GET ) ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended
34 ),
35 'requestNonce' => wp_create_nonce( 'customer-download' ),
36 'isCustomer' => User::current()->isCustomer(),
37 'query' => [
38 'customer_ids' => array_values( User::current()->customerIds() ),
39 'page' => 1,
40 'per_page' => 10,
41 ],
42 ]
43 )->render( "<span slot='heading'>" . ( $attributes['title'] ?? __( 'Downloads', 'surecart' ) ) . '</span>' )
44 );
45 }
46
47 /**
48 * Index.
49 */
50 public function index( $attributes = [] ) {
51 if ( ! is_user_logged_in() ) {
52 return;
53 }
54
55 ob_start(); ?>
56 <sc-spacing style="--spacing: var(--sc-spacing-large)">
57 <sc-breadcrumbs>
58 <sc-breadcrumb href="<?php echo esc_url( add_query_arg( [ 'tab' => $this->getTab() ], remove_query_arg( array_keys( $_GET ) ) ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>">
59 <?php esc_html_e( 'Dashboard', 'surecart' ); ?>
60 </sc-breadcrumb>
61 <sc-breadcrumb>
62 <?php esc_html_e( 'Downloads', 'surecart' ); ?>
63 </sc-breadcrumb>
64 </sc-breadcrumbs>
65
66 <?php
67 echo wp_kses_post(
68 Component::tag( 'sc-dashboard-downloads-list' )
69 ->id( 'customer-downloads-preview' )
70 ->with(
71 [
72 'requestNonce' => wp_create_nonce( 'customer-download' ),
73 'isCustomer' => User::current()->isCustomer(),
74 'query' => [
75 'customer_ids' => array_values( User::current()->customerIds() ),
76 'page' => 1,
77 'per_page' => 10,
78 ],
79 ]
80 )->render( "<span slot='heading'>" . ( $attributes['title'] ?? __( 'Downloads', 'surecart' ) ) . '</span>' )
81 );
82 ?>
83 </sc-spacing>
84
85 <?php
86 return ob_get_clean();
87 }
88
89 public function show() {
90 if ( ! is_user_logged_in() ) {
91 return;
92 }
93
94 $purchase = Purchase::with( [ 'customer', 'checkout', 'license', 'product', 'product.downloads', 'download.media', 'license.activations', 'variant', 'variant.downloads' ] )->find( $this->getId() );
95
96 if ( empty( $purchase->customer->id ) || ! User::current()->hasCustomerId( $purchase->customer->id ) ) {
97 return null;
98 }
99
100 // Only scope to the variant when it has its own files; otherwise fall back to product-level downloads.
101 $variant = $purchase->variant ?? null;
102 $active_variant_downloads = array_filter(
103 (array) ( $variant->downloads->data ?? [] ),
104 fn( $download ) => empty( $download->archived )
105 );
106 $has_variant_downloads = ! empty( $variant->downloads_enabled ) && ! empty( $active_variant_downloads );
107
108 ob_start();
109 ?>
110
111 <sc-spacing style="--spacing: var(--sc-spacing-large)">
112 <sc-breadcrumbs>
113 <sc-breadcrumb href="<?php echo esc_url( add_query_arg( [ 'tab' => $this->getTab() ], remove_query_arg( array_keys( $_GET ) ) ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>">
114 <?php esc_html_e( 'Dashboard', 'surecart' ); ?>
115 </sc-breadcrumb>
116 <sc-breadcrumb href="
117 <?php
118 echo esc_url(
119 add_query_arg(
120 [
121 'tab' => $this->getTab(),
122 'model' => 'download',
123 'action' => 'index',
124 ],
125 remove_query_arg( array_keys( $_GET ) ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended
126 )
127 );
128 ?>
129 ">
130 <?php esc_html_e( 'Downloads', 'surecart' ); ?>
131 </sc-breadcrumb>
132 <sc-breadcrumb>
133 <?php esc_html_e( 'Download', 'surecart' ); ?>
134 </sc-breadcrumb>
135 </sc-breadcrumbs>
136
137 <?php
138 echo wp_kses_post(
139 Component::tag( 'sc-downloads-list' )
140 ->id( 'customer-purchase' )
141 ->with(
142 [
143 'heading' => __( 'Downloads', 'surecart' ),
144 'customerId' => $purchase->customer->id ?? '',
145 'productId' => $purchase->product->id ?? '',
146 'variantId' => $has_variant_downloads ? ( $variant->id ?? '' ) : '',
147 ]
148 )->render()
149 );
150 ?>
151
152 <?php
153 if ( $purchase->license ) :
154 echo wp_kses_post(
155 Component::tag( 'sc-licenses-list' )
156 ->id( 'customer-licenses' )
157 ->with(
158 [
159 'heading' => __( 'License Keys', 'surecart' ),
160 'licenses' => [ $purchase->license ],
161 ]
162 )->render()
163 );
164 endif;
165 ?>
166
167 </sc-spacing>
168
169 <?php
170 return ob_get_clean();
171 }
172 }
173