PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.3
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.3
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 / GalleryItemAttachment.php
surecart / app / src / Models Last commit date
Blocks 1 year ago Concerns 1 year ago Traits 1 year ago AbandonedCheckout.php 2 years ago AbandonedCheckoutProtocol.php 3 years ago Account.php 3 years ago AccountPortalSession.php 3 years ago Activation.php 2 years ago Affiliation.php 2 years ago AffiliationProduct.php 1 year ago AffiliationProtocol.php 2 years ago AffiliationRequest.php 2 years ago ApiToken.php 3 years ago BalanceTransaction.php 3 years ago Brand.php 3 years ago BulkAction.php 2 years ago Bump.php 1 year ago BuyLink.php 2 years ago CancellationAct.php 3 years ago CancellationReason.php 3 years ago Charge.php 1 year ago Checkout.php 1 year ago Click.php 2 years ago Collection.php 2 years ago CommissionStructure.php 2 years ago Component.php 3 years ago Coupon.php 1 year ago Customer.php 2 years ago CustomerLink.php 3 years ago CustomerNotificationProtocol.php 3 years ago DatabaseModel.php 1 year ago Discount.php 1 year ago Download.php 3 years ago Event.php 3 years ago Export.php 2 years ago Form.php 3 years ago Fulfillment.php 3 years 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 Invoice.php 1 year ago License.php 2 years ago LineItem.php 1 year ago ManualPaymentMethod.php 1 year ago Media.php 1 year ago Model.php 1 year ago ModelInterface.php 3 years ago Order.php 2 years ago OrderProtocol.php 3 years ago PaymentInstrument.php 1 year ago PaymentIntent.php 3 years ago PaymentMethod.php 1 year ago Payout.php 2 years ago PayoutGroup.php 2 years ago Period.php 3 years ago PortalProtocol.php 3 years ago PortalSession.php 3 years ago Price.php 1 year ago Processor.php 1 year ago Product.php 1 year ago ProductCollection.php 1 year ago ProductGroup.php 2 years ago ProductMedia.php 1 year ago Promotion.php 1 year ago ProvisionalAccount.php 2 years ago Purchase.php 2 years ago Referral.php 2 years ago ReferralItem.php 2 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 1 year ago SubscriptionProtocol.php 3 years ago TaxOverride.php 2 years ago TaxProtocol.php 3 years ago TaxRegistration.php 3 years ago TaxZone.php 3 years ago Upload.php 3 years ago Upsell.php 1 year ago UpsellFunnel.php 2 years 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
GalleryItemAttachment.php
162 lines
1 <?php
2 namespace SureCart\Models;
3
4 use SureCart\Models\GalleryItem as ModelsGalleryItem;
5 use SureCart\Support\Contracts\GalleryItem;
6
7 /**
8 * Gallery item model
9 */
10 class GalleryItemAttachment extends ModelsGalleryItem implements GalleryItem {
11 /**
12 * Create a new gallery item.
13 * This can accept a product media or a post.
14 *
15 * @param int|\WP_Post $item The item.
16 *
17 * @return void
18 */
19 public function __construct( $item ) {
20 $this->item = get_post( $item );
21 }
22
23 /**
24 * Get the media attribute markup.
25 *
26 * @param string $size The size of the image.
27 * @param array $attr The attributes for the tag.
28 *
29 * @return string
30 */
31 public function html( $size = 'full', $attr = [] ): string {
32 // If the item is not set, return null.
33 if ( ! isset( $this->item->ID ) ) {
34 return '';
35 }
36
37 // Handle attachments.
38 $image = wp_get_attachment_image( $this->item->ID, $size, false, $attr );
39
40 // add any styles.
41 $tags = new \WP_HTML_Tag_Processor( $image );
42
43 // add inline styles.
44 if ( ! empty( $attr['style'] ) ) {
45 if ( $tags->next_tag( 'img' ) && ! empty( $attr['style'] ) ) {
46 $tags->set_attribute( 'style', $attr['style'] );
47 }
48 }
49
50 // return updated html.
51 return $tags->get_updated_html();
52 }
53
54 /**
55 * Get the image data.
56 *
57 * @param string $size The size of the image.
58 * @param array $attr The attributes for the tag.
59 *
60 * @return object|null
61 */
62 public function attributes( $size = 'full', $attr = [] ) {
63 $attachment_id = ! empty( $this->item->ID ) ? $this->item->ID : 0;
64 $image = wp_get_attachment_image_src( $attachment_id, $size, $attr['icon'] ?? false, $attr );
65
66 if ( $image ) {
67 list( $src, $width, $height ) = $image;
68
69 $attachment = get_post( $attachment_id );
70 $size_class = $size;
71
72 if ( is_array( $size_class ) ) {
73 $size_class = implode( 'x', $size_class );
74 }
75
76 $default_attr = array(
77 'src' => $src,
78 'class' => "attachment-$size_class size-$size_class",
79 'alt' => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ),
80 'width' => $width,
81 'height' => $height,
82 );
83
84 /**
85 * Filters the context in which wp_get_attachment_image() is used.
86 *
87 * @since 6.3.0
88 *
89 * @param string $context The context. Default 'wp_get_attachment_image'.
90 */
91 $context = apply_filters( 'wp_get_attachment_image_context', 'wp_get_attachment_image' );
92 $attr = wp_parse_args( $attr, $default_attr );
93
94 $loading_attr = $attr;
95 $loading_attr['width'] = $width;
96 $loading_attr['height'] = $height;
97 $loading_optimization_attr = wp_get_loading_optimization_attributes(
98 'img',
99 $loading_attr,
100 $context
101 );
102
103 // Add loading optimization attributes if not available.
104 $attr = array_merge( $attr, $loading_optimization_attr );
105
106 // Omit the `decoding` attribute if the value is invalid according to the spec.
107 if ( empty( $attr['decoding'] ) || ! in_array( $attr['decoding'], array( 'async', 'sync', 'auto' ), true ) ) {
108 unset( $attr['decoding'] );
109 }
110
111 /*
112 * If the default value of `lazy` for the `loading` attribute is overridden
113 * to omit the attribute for this image, ensure it is not included.
114 */
115 if ( isset( $attr['loading'] ) && ! $attr['loading'] ) {
116 unset( $attr['loading'] );
117 }
118
119 // If the `fetchpriority` attribute is overridden and set to false or an empty string.
120 if ( isset( $attr['fetchpriority'] ) && ! $attr['fetchpriority'] ) {
121 unset( $attr['fetchpriority'] );
122 }
123
124 // Generate 'srcset' and 'sizes' if not already present.
125 if ( empty( $attr['srcset'] ) ) {
126 $image_meta = wp_get_attachment_metadata( $attachment_id );
127
128 if ( is_array( $image_meta ) ) {
129 $size_array = array( absint( $width ), absint( $height ) );
130 $srcset = wp_calculate_image_srcset( $size_array, $src, $image_meta, $attachment_id );
131 $sizes = wp_calculate_image_sizes( $size_array, $src, $image_meta, $attachment_id );
132
133 if ( $srcset && ( $sizes || ! empty( $attr['sizes'] ) ) ) {
134 $attr['srcset'] = $srcset;
135
136 if ( empty( $attr['sizes'] ) ) {
137 $attr['sizes'] = $sizes;
138 }
139 }
140 }
141 }
142
143 /**
144 * Filters the list of attachment image attributes.
145 *
146 * @since 2.8.0
147 *
148 * @param string[] $attr Array of attribute values for the image markup, keyed by attribute name.
149 * See wp_get_attachment_image().
150 * @param WP_Post $attachment Image attachment post.
151 * @param string|int[] $size Requested image size. Can be any registered image size name, or
152 * an array of width and height values in pixels (in that order).
153 */
154 $attr = apply_filters( 'wp_get_attachment_image_attributes', $attr, $attachment, $size );
155
156 return (object) $attr;
157 }
158
159 return (object) [];
160 }
161 }
162