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