PluginProbe
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.3.2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.3.2
4.7.2 4.7.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 All 281 releases
surecart / app / src / Models / Variant.php

Variant.php in SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments 4.3.2, at app/src/Models/Variant.php

106 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SureCart\Models;
4
5 use SureCart\Support\Currency;
6
7 /**
8 * Variant model
9 */
10
11 class Variant extends Model {
12 /**
13 * Rest API endpoint
14 *
15 * @var string
16 */
17 protected $endpoint = 'variants';
18
19 /**
20 * Object name
21 *
22 * @var string
23 */
24 protected $object_name = 'variant';
25
26 /**
27 * Set the product attribute
28 *
29 * @param string $value Product properties.
30 * @return void
31 */
32 public function setProductAttribute( $value ) {
33 $this->setRelation( 'product', $value, Product::class );
34 }
35
36 /**
37 * Set the image attribute
38 *
39 * @param string $value Image properties.
40 * @return void
41 */
42 public function setImageAttribute( $value ) {
43 $this->setRelation( 'image', $value, Media::class );
44 }
45
46 /**
47 * Get whether stock tracking is effectively disabled for this variant.
48 * Returns null when not set on the variant, so callers can fall back to the product.
49 *
50 * @return bool|null
51 */
52 public function getHasUnlimitedStockAttribute() {
53 if ( null === $this->stock_enabled ) {
54 return null;
55 }
56
57 if ( empty( $this->stock_enabled ) ) {
58 return true;
59 }
60
61 return (bool) $this->allow_out_of_stock_purchases;
62 }
63
64 /**
65 * Set the current_release_download attribute
66 *
67 * @param mixed $value Download properties.
68 * @return void
69 */
70 public function setCurrentReleaseDownloadAttribute( $value ) {
71 $this->setRelation( 'current_release_download', $value, Download::class );
72 }
73
74 /**
75 * Get the display amount attribute
76 *
77 * @return string
78 */
79 public function getDisplayAmountAttribute() {
80 return empty( $this->amount ) ? '' : Currency::format( $this->amount, $this->currency );
81 }
82
83 /**
84 * Get the featured image attribute.
85 *
86 * @return object
87 */
88 public function getLineItemImageAttribute() {
89 // we have wp media.
90 if ( ! empty( $this->metadata->wp_media ) ) {
91 $item = GalleryItemAttachment::create( $this->metadata->wp_media );
92 if ( ! empty( $item ) && $item->exists() ) {
93 return sc_sanitize_image_attributes( $item->attributes( 'thumbnail' ) );
94 }
95 }
96
97 // we have a fallback model from the platform.
98 if ( is_a( $this->image, \SureCart\Models\Media::class ) ) {
99 return sc_sanitize_image_attributes( $this->image->attributes( 'thumbnail' ) );
100 }
101
102 // always return an empty object.
103 return (object) [];
104 }
105 }
106