PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.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 / Models / ProductCollection.php
surecart / app / src / Models Last commit date
Traits 2 years ago AbandonedCheckout.php 3 years ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 3 years ago Activation.php 3 years ago ApiToken.php 3 years ago BalanceTransaction.php 3 years ago Brand.php 3 years ago Bump.php 3 years ago BuyLink.php 3 years ago CancellationAct.php 3 years ago CancellationReason.php 3 years ago Charge.php 3 years ago Checkout.php 2 years ago Collection.php 3 years ago Component.php 3 years ago Coupon.php 3 years ago Customer.php 2 years ago CustomerLink.php 3 years ago CustomerNotificationProtocol.php 3 years ago DatabaseModel.php 2 years ago Download.php 3 years ago Event.php 3 years ago Form.php 3 years ago Fulfillment.php 3 years ago FulfillmentItem.php 3 years ago IncomingWebhook.php 2 years ago Integration.php 3 years ago Invoice.php 3 years ago License.php 3 years ago LineItem.php 2 years ago ManualPaymentMethod.php 3 years ago Media.php 3 years ago Model.php 2 years ago ModelInterface.php 3 years ago Order.php 3 years ago OrderProtocol.php 3 years ago PaymentIntent.php 3 years ago PaymentMethod.php 3 years ago Period.php 3 years ago PortalProtocol.php 3 years ago PortalSession.php 3 years ago Price.php 3 years ago Processor.php 3 years ago Product.php 2 years ago ProductCollection.php 2 years ago ProductGroup.php 2 years ago ProductMedia.php 3 years ago Promotion.php 3 years ago ProvisionalAccount.php 3 years ago Purchase.php 3 years ago Refund.php 3 years ago RegisteredWebhook.php 2 years ago ReturnItem.php 2 years ago ReturnReason.php 2 years ago ReturnRequest.php 2 years ago ShippingMethod.php 3 years ago ShippingProfile.php 3 years ago ShippingProtocol.php 3 years ago ShippingRate.php 3 years ago ShippingZone.php 3 years ago Statistic.php 3 years ago Subscription.php 2 years ago SubscriptionProtocol.php 3 years ago TaxProtocol.php 3 years ago TaxRegistration.php 3 years ago TaxZone.php 3 years ago Upload.php 3 years ago User.php 2 years ago Variant.php 2 years ago VariantOption.php 2 years ago VariantValue.php 2 years ago VerificationCode.php 3 years ago Webhook.php 2 years ago WebhookRegistration.php 2 years ago
ProductCollection.php
191 lines
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Support\Contracts\PageModel;
6
7 /**
8 * Holds Product Collection data.
9 */
10 class ProductCollection extends Model implements PageModel {
11 use Traits\HasImageSizes;
12
13 /**
14 * Rest API endpoint
15 *
16 * @var string
17 */
18 protected $endpoint = 'product_collections';
19
20 /**
21 * Object name
22 *
23 * @var string
24 */
25 protected $object_name = 'product_collection';
26
27 /**
28 * Is this cachable.
29 *
30 * @var boolean
31 */
32 protected $cachable = true;
33
34 /**
35 * Clear cache when products are updated.
36 *
37 * @var string
38 */
39 protected $cache_key = 'product_collections_updated_at';
40
41 /**
42 * Create a new model
43 *
44 * @param array $attributes Attributes to create.
45 *
46 * @return $this|false
47 */
48 protected function create( $attributes = [] ) {
49 if ( ! wp_is_block_theme() ) {
50 $attributes['metadata'] = [
51 ...$attributes['metadata'] ?? [],
52 'wp_template_id' => apply_filters( 'surecart/templates/collections/default', 'pages/template-surecart-collection.php' ),
53 ];
54 }
55
56 return parent::create( $attributes );
57 }
58
59 /**
60 * Get the product template
61 *
62 * @return \WP_Template
63 */
64 public function getTemplateAttribute() {
65 return get_block_template( $this->getTemplateIdAttribute() );
66 }
67
68 /**
69 * Get the product template part template.
70 *
71 * @return \WP_Template
72 */
73 public function getTemplatePartAttribute() {
74 return get_block_template( $this->getTemplatePartIdAttribute(), 'wp_template_part' );
75 }
76
77 /**
78 * Get the product template id.
79 *
80 * @return string|false
81 */
82 public function getTemplatePartIdAttribute(): string {
83 if ( ! empty( $this->attributes['metadata']->wp_template_part_id ) ) {
84 return $this->attributes['metadata']->wp_template_part_id;
85 }
86 return 'surecart/surecart//product-collection-part';
87 }
88
89 /**
90 * Get the product template id.
91 *
92 * @return string
93 */
94 public function getTemplateIdAttribute(): string {
95 if ( ! empty( $this->attributes['metadata']->wp_template_id ) ) {
96 // we have a php file, switch to default.
97 if ( wp_is_block_theme() && false !== strpos( $this->attributes['metadata']->wp_template_id, '.php' ) ) {
98 return 'surecart/surecart//product-collection';
99 }
100
101 // this is acceptable.
102 return $this->attributes['metadata']->wp_template_id;
103 }
104 return 'surecart/surecart//product-collection';
105 }
106
107 /**
108 * Get the product permalink.
109 *
110 * @return string
111 */
112 public function getPermalinkAttribute(): string {
113 if ( empty( $this->attributes['id'] ) ) {
114 return false;
115 }
116 // permalinks off.
117 if ( ! get_option( 'permalink_structure' ) ) {
118 return add_query_arg( 'sc_collection_page_id', $this->slug, get_home_url() );
119 }
120 // permalinks on.
121 return trailingslashit( get_home_url() ) . trailingslashit( \SureCart::settings()->permalinks()->getBase( 'collection_page' ) ) . $this->slug;
122 }
123
124 /**
125 * Get the JSON Schema Array
126 *
127 * @return array
128 */
129 public function getJsonSchemaArray(): array {
130 return [];
131 }
132
133 /**
134 * Get the page title for SEO.
135 *
136 * @return string
137 */
138 public function getPageTitleAttribute(): string {
139 return $this->attributes['name'] ?? '';
140 }
141
142 /**
143 * Get the page description for SEO.
144 *
145 * @return string
146 */
147 public function getMetaDescriptionAttribute(): string {
148 return $this->attributes['description'] ?? '';
149 }
150
151 /**
152 * Get the image url for a specific size.
153 *
154 * @param integer $size The size.
155 *
156 * @return string
157 */
158 public function getImageUrl( $size = 0, $additional_options = '' ) {
159 if ( empty( $this->attributes['image']->url ) ) {
160 return '';
161 }
162
163 return $size ? $this->imageUrl( $this->attributes['image']->url, $size, false, $additional_options ) : $this->attributes['image']->url;
164 }
165
166 /**
167 * Get the srcset for the product media.
168 *
169 * @param array $sizes The sizes.
170 *
171 * @return string
172 */
173 public function getSrcSet( $sizes = [] ) {
174 if ( empty( $this->attributes['image']->url ) ) {
175 return '';
176 }
177 return $this->imageSrcSet( $this->attributes['image']->url, $sizes );
178 }
179
180 /**
181 * Get Template Content.
182 *
183 * @return string
184 */
185 public function getTemplateContent() : string {
186 return wp_is_block_theme() ?
187 $this->template->content ?? '' :
188 $this->template_part->content ?? '';
189 }
190 }
191