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 / app / src / Models / Media.php
surecart / app / src / Models Last commit date
Blocks 2 months ago Concerns 6 months ago Traits 2 weeks ago Wordpress 1 year ago AbandonedCheckout.php 1 year ago AbandonedCheckoutProtocol.php 3 years ago Account.php 10 months ago AccountPortalSession.php 3 years ago Activation.php 1 year ago Affiliation.php 1 year ago AffiliationProduct.php 1 year ago AffiliationProtocol.php 2 years ago AffiliationRequest.php 1 year ago ApiToken.php 6 months ago AutoFee.php 5 months ago AutoFeeProtocol.php 5 months ago BalanceTransaction.php 1 year ago Batch.php 2 days ago Brand.php 4 months ago BulkAction.php 2 years ago Bump.php 1 year ago BuyLink.php 2 years ago CancellationAct.php 1 year ago CancellationReason.php 3 years ago Charge.php 9 months ago Checkout.php 2 months ago Click.php 1 year ago Collection.php 3 months ago CommissionStructure.php 2 years ago Component.php 4 months ago Coupon.php 2 months ago Customer.php 2 weeks ago CustomerLink.php 3 years ago CustomerNotificationProtocol.php 3 years ago CustomerPortalProtocol.php 1 year ago DatabaseModel.php 2 months ago Discount.php 1 year ago DisplayCurrency.php 1 year ago Dispute.php 9 months ago Download.php 3 years ago Event.php 3 years ago Export.php 2 years ago ExternalApiModel.php 3 months ago Fee.php 1 year ago Form.php 3 years ago Fulfillment.php 1 year ago FulfillmentItem.php 1 year ago GalleryItem.php 9 months ago GalleryItemAttachment.php 5 months ago GalleryItemImageAttachment.php 3 months ago GalleryItemMedia.php 1 year ago GalleryItemProductMedia.php 1 month ago GalleryItemVideoAttachment.php 3 months ago Import.php 6 months ago ImportRow.php 2 months ago IncomingWebhook.php 1 year ago Integration.php 2 years ago IntegrationCatalog.php 2 days ago Invoice.php 1 year ago License.php 1 year ago LineItem.php 9 months ago ManualPaymentMethod.php 1 year ago Media.php 1 month ago Model.php 2 days ago ModelInterface.php 3 years ago Order.php 2 weeks ago OrderProtocol.php 3 years ago ParcelTemplate.php 3 months ago PaymentFailure.php 1 year ago PaymentInstrument.php 2 months ago PaymentIntent.php 1 year ago PaymentMethod.php 1 year ago Payout.php 1 year ago PayoutGroup.php 2 years ago Period.php 1 year ago PlatformFee.php 1 year ago PortalSession.php 3 years ago Price.php 6 months ago Processor.php 1 year ago Product.php 2 days ago ProductCollection.php 1 year ago ProductCollectionImport.php 6 months ago ProductGroup.php 1 year ago ProductImport.php 6 months ago ProductMedia.php 4 months ago Promotion.php 1 year ago ProvisionalAccount.php 2 months ago Purchase.php 2 years ago Referral.php 1 year ago ReferralItem.php 2 years ago Refund.php 1 year ago RefundItem.php 1 year ago RegisteredWebhook.php 2 months ago ReturnItem.php 2 years ago ReturnReason.php 2 years ago ReturnRequest.php 1 year ago Review.php 4 months ago ReviewProtocol.php 4 months ago RuleSchema.php 5 months ago ServiceFee.php 1 year ago ShippingChoice.php 1 year 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 weeks ago SubscriptionProtocol.php 3 years ago Swap.php 1 year ago TaxOverride.php 2 years ago TaxProtocol.php 3 years ago TaxRegistration.php 1 year ago TaxZone.php 3 years ago Upload.php 3 years ago Upsell.php 1 year ago UpsellFunnel.php 1 year ago User.php 1 month ago Variant.php 2 days ago VariantOption.php 2 years ago VariantOptionValue.php 1 year ago VariantValue.php 2 years ago VerificationCode.php 3 years ago Webhook.php 1 year ago WebhookRegistration.php 2 years ago
Media.php
169 lines
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Models\Traits\HasDates;
6 use SureCart\Models\Traits\HasImageSizes;
7
8 /**
9 * Price model
10 */
11 class Media extends Model {
12 use HasImageSizes;
13 use HasDates;
14
15 /**
16 * Rest API endpoint
17 *
18 * @var string
19 */
20 protected $endpoint = 'medias';
21
22 /**
23 * Object name
24 *
25 * @var string
26 */
27 protected $object_name = 'media';
28
29 /**
30 * Image srcset.
31 *
32 * @return string
33 */
34 public function getSrcsetAttribute() {
35 if ( empty( $this->attributes['url'] ) ) {
36 return '';
37 }
38 return $this->imageSrcSet( $this->attributes['url'] );
39 }
40
41 /**
42 * Get the image url for a specific size.
43 *
44 * @param integer $size The size.
45 *
46 * @return string
47 */
48 public function getUrl( $size = 0 ) {
49 if ( empty( $this->attributes['url'] ) ) {
50 return '';
51 }
52 return $size ? $this->imageUrl( $this->attributes['url'], $size ) : $this->attributes['url'];
53 }
54
55 /**
56 * Get the image markup.
57 * We are assuming all media here is an image.
58 *
59 * @param string $size The size of the image.
60 * @param string|array $attr The attributes for the tag. WordPress allows either array or query-string form.
61 *
62 * @return string
63 */
64 protected function html( $size = 'full', $attr = [] ) {
65 // prepare attributes.
66 $attr = $this->attributes( $size, $attr );
67 $html = '<img ';
68
69 foreach ( $attr as $name => $value ) {
70 $html .= " $name=" . '"' . $value . '"';
71 }
72
73 // close tag.
74 $html .= ' />';
75
76 return $html;
77 }
78
79 /**
80 * Get the image attributes.
81 *
82 * @param string $size The size of the image.
83 * @param string|array $attr The attributes for the tag. WordPress allows either array or query-string form.
84 *
85 * @return array
86 */
87 protected function attributes( $size = 'full', $attr = [] ) {
88 // Normalise $attr — WordPress allows the attr arg of get_the_post_thumbnail() to be a query string (e.g. Enfold theme passes 'class=foo&id=bar').
89 $attr = wp_parse_args( $attr );
90
91 // get sizes.
92 $sizes = wp_get_registered_image_subsizes();
93 $image_size = $sizes[ $size ] ?? null;
94
95 // get width and constrain the dimensions based on the width/height.
96 $width = $image_size['width'] ?? $this->width ?? 1080;
97 if ( $this->width && $this->height ) {
98 [$width, $height] = wp_constrain_dimensions( $this->width, $this->height, $width );
99 } else {
100 $height = $image_size['height'] ?? $this->height ?? 1080;
101 }
102
103 $srcset_sizes = array_map(
104 function ( $size ) {
105 return $size['width'];
106 },
107 $sizes
108 );
109
110 $attachment_class = 'attachment-' . $size . ' size-' . $size;
111
112 // set attributes.
113 $attr['src'] = $this->getUrl( $width );
114 $attr['alt'] = $this->alt ?? '';
115 $attr['class'] = $attachment_class . ' ' . ( ! empty( $attr['class'] ) ? $attr['class'] : '' );
116 $attr['sizes'] = sprintf( '(max-width: %1$dpx) 100vw, %1$dpx', $width );
117 $attr['width'] = (int) $width;
118 $attr['height'] = (int) $height;
119
120 // loading attributes.
121 $loading_attr = $attr;
122 $loading_attr['width'] = $width;
123 $loading_attr['height'] = $height;
124 $loading_optimization_attr = wp_get_loading_optimization_attributes(
125 'img',
126 $loading_attr,
127 'surecart-product-page'
128 );
129
130 // Add loading optimization attributes if not available.
131 $attr = array_merge( $attr, $loading_optimization_attr );
132
133 // Omit the `decoding` attribute if the value is invalid according to the spec.
134 if ( empty( $attr['decoding'] ) || ! in_array( $attr['decoding'], array( 'async', 'sync', 'auto' ), true ) ) {
135 unset( $attr['decoding'] );
136 }
137
138 /*
139 * If the default value of `lazy` for the `loading` attribute is overridden
140 * to omit the attribute for this image, ensure it is not included.
141 */
142 if ( isset( $attr['loading'] ) && ! $attr['loading'] ) {
143 unset( $attr['loading'] );
144 }
145
146 // If the `fetchpriority` attribute is overridden and set to false or an empty string.
147 if ( isset( $attr['fetchpriority'] ) && ! $attr['fetchpriority'] ) {
148 unset( $attr['fetchpriority'] );
149 }
150
151 if ( empty( $attr['srcset'] ) ) {
152 $attr['srcset'] = $this->imageSrcSet( $this->url, $srcset_sizes );
153 }
154
155 /**
156 * Filters the list of attachment image attributes.
157 *
158 * @param string[] $attr Array of attribute values for the image markup, keyed by attribute name.
159 * See wp_get_attachment_image().
160 * @param \SureCart\Models\ProductMedia $this The current instance of the ProductMedia class.
161 * @param string|int[] $size Requested image size. Can be any registered image size name, or
162 * an array of width and height values in pixels (in that order).
163 */
164 $attr = apply_filters( 'wp_get_sc_product_attachment_image_attributes', $attr, $this, $size );
165
166 // prepare attributes.
167 return (object) $attr;
168 }
169 }