PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.2.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.2.1
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 1 year ago Concerns 1 year ago Traits 1 year ago AbandonedCheckout.php 1 year ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 4 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 3 years ago BalanceTransaction.php 1 year ago Brand.php 4 years 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 1 year ago Checkout.php 1 year ago Click.php 1 year ago Collection.php 2 years ago CommissionStructure.php 2 years ago Component.php 4 years ago Coupon.php 1 year ago Customer.php 1 year ago CustomerLink.php 4 years ago CustomerNotificationProtocol.php 4 years ago CustomerPortalProtocol.php 1 year ago DatabaseModel.php 1 year ago Discount.php 1 year ago Download.php 4 years ago Event.php 4 years ago Export.php 2 years ago ExternalApiModel.php 1 year ago Form.php 3 years ago Fulfillment.php 1 year ago FulfillmentItem.php 1 year ago GalleryItem.php 1 year ago GalleryItemAttachment.php 1 year ago GalleryItemMedia.php 1 year ago GalleryItemProductMedia.php 1 year ago IncomingWebhook.php 1 year ago Integration.php 2 years ago IntegrationCatalog.php 1 year ago Invoice.php 1 year ago License.php 1 year ago LineItem.php 1 year ago ManualPaymentMethod.php 1 year ago Media.php 1 year ago Model.php 1 year ago ModelInterface.php 4 years ago Order.php 1 year ago OrderProtocol.php 4 years ago PaymentFailure.php 1 year ago PaymentInstrument.php 1 year ago PaymentIntent.php 4 years ago PaymentMethod.php 1 year ago Payout.php 1 year ago PayoutGroup.php 2 years ago Period.php 1 year ago PortalSession.php 4 years ago Price.php 1 year ago Processor.php 1 year ago Product.php 1 year ago ProductCollection.php 1 year ago ProductGroup.php 1 year ago ProductMedia.php 1 year ago Promotion.php 1 year ago ProvisionalAccount.php 2 years ago Purchase.php 2 years ago Referral.php 1 year ago ReferralItem.php 2 years ago Refund.php 1 year ago RegisteredWebhook.php 2 years ago ReturnItem.php 2 years ago ReturnReason.php 2 years ago ReturnRequest.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 4 years ago Subscription.php 1 year ago SubscriptionProtocol.php 4 years ago TaxOverride.php 2 years ago TaxProtocol.php 4 years ago TaxRegistration.php 1 year ago TaxZone.php 4 years ago Upload.php 4 years ago Upsell.php 1 year ago UpsellFunnel.php 1 year ago User.php 2 years ago Variant.php 1 year 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
167 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 array $attr The attributes for the tag.
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 array $attr The attributes for the tag.
84 *
85 * @return array
86 */
87 protected function attributes( $size = 'full', $attr = [] ) {
88 // get sizes.
89 $sizes = wp_get_registered_image_subsizes();
90 $image_size = $sizes[ $size ] ?? null;
91
92 // get width and constrain the dimensions based on the width/height.
93 $width = $image_size['width'] ?? $this->width ?? 1080;
94 if ( $this->width && $this->height ) {
95 [$width, $height] = wp_constrain_dimensions( $this->width, $this->height, $width );
96 } else {
97 $height = $image_size['height'] ?? $this->height ?? 1080;
98 }
99
100 $srcset_sizes = array_map(
101 function ( $size ) {
102 return $size['width'];
103 },
104 $sizes
105 );
106
107 $attachment_class = 'attachment-' . $size . ' size-' . $size;
108
109 // set attributes.
110 $attr['src'] = $this->getUrl( $width );
111 $attr['alt'] = $this->alt ?? '';
112 $attr['class'] = $attachment_class . ' ' . ( ! empty( $attr['class'] ) ? $attr['class'] : '' );
113 $attr['sizes'] = sprintf( '(max-width: %1$dpx) 100vw, %1$dpx', $width );
114 $attr['width'] = (int) $width;
115 $attr['height'] = (int) $height;
116
117 // loading attributes.
118 $loading_attr = $attr;
119 $loading_attr['width'] = $width;
120 $loading_attr['height'] = $height;
121 $loading_optimization_attr = wp_get_loading_optimization_attributes(
122 'img',
123 $loading_attr,
124 'surecart-product-page'
125 );
126
127 // Add loading optimization attributes if not available.
128 $attr = array_merge( $attr, $loading_optimization_attr );
129
130 // Omit the `decoding` attribute if the value is invalid according to the spec.
131 if ( empty( $attr['decoding'] ) || ! in_array( $attr['decoding'], array( 'async', 'sync', 'auto' ), true ) ) {
132 unset( $attr['decoding'] );
133 }
134
135 /*
136 * If the default value of `lazy` for the `loading` attribute is overridden
137 * to omit the attribute for this image, ensure it is not included.
138 */
139 if ( isset( $attr['loading'] ) && ! $attr['loading'] ) {
140 unset( $attr['loading'] );
141 }
142
143 // If the `fetchpriority` attribute is overridden and set to false or an empty string.
144 if ( isset( $attr['fetchpriority'] ) && ! $attr['fetchpriority'] ) {
145 unset( $attr['fetchpriority'] );
146 }
147
148 if ( empty( $attr['srcset'] ) ) {
149 $attr['srcset'] = $this->imageSrcSet( $this->url, $srcset_sizes );
150 }
151
152 /**
153 * Filters the list of attachment image attributes.
154 *
155 * @param string[] $attr Array of attribute values for the image markup, keyed by attribute name.
156 * See wp_get_attachment_image().
157 * @param \SureCart\Models\ProductMedia $this The current instance of the ProductMedia class.
158 * @param string|int[] $size Requested image size. Can be any registered image size name, or
159 * an array of width and height values in pixels (in that order).
160 */
161 $attr = apply_filters( 'wp_get_sc_product_attachment_image_attributes', $attr, $this, $size );
162
163 // prepare attributes.
164 return (object) $attr;
165 }
166 }
167