Source of file ProductVariant.php
Size: 4,110 Bytes - Last Modified: 2021-12-23T10:59:54+00:00
/var/www/docs.ssmods.com/process/src/src/Model/ProductVariant.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | <?php namespace XD\Shopify\Model; use SilverStripe\Forms\ReadonlyField; use SilverStripe\ORM\DataObject; use SilverStripe\Versioned\Versioned; use XD\Shopify\Task\Import; /** * Class ProductVariant * * @author Bram de Leeuw * @package XD\Shopify\Model * * @property string Title * @property string ShopifyID * @property float Price * @property float CompareAtPrice * @property string SKU * @property int Sort * @property string Option1 * @property string Option2 * @property string Option3 * @property boolean Taxable * @property string Barcode * @property int Inventory * @property int Grams * @property float Weight * @property string WeightUnit * @property int InventoryItemID * @property boolean RequiresShipping * * @property int ProductID * @method Product Product() * @property int ImageID * @method Image Image() */ class ProductVariant extends DataObject { private static $table_name = 'ShopifyProductVariant'; private static $db = [ 'Title' => 'Varchar', 'ShopifyID' => 'Varchar', 'Price' => 'Currency', 'CompareAtPrice' => 'Currency', 'SKU' => 'Varchar', 'Sort' => 'Int', 'Option1' => 'Varchar', 'Option2' => 'Varchar', 'Option3' => 'Varchar', 'Taxable' => 'Boolean', 'Barcode' => 'Varchar', 'Inventory' => 'Int', 'Grams' => 'Int', 'Weight' => 'Decimal', 'WeightUnit' => 'Varchar', 'InventoryItemID' => 'Varchar', 'RequiresShipping' => 'Boolean' ]; private static $data_map = [ 'id'=> 'ShopifyID', 'title'=> 'Title', 'price'=> 'Price', 'compare_at_price'=> 'CompareAtPrice', 'sku'=> 'SKU', 'position' => 'Sort', 'option1' => 'Option1', 'option2' => 'Option2', 'option3' => 'Option3', 'created_at' => 'Created', 'updated_at' => 'LastEdited', 'taxable' => 'Taxable', 'barcode' => 'Barcode', 'grams' => 'Grams', 'inventory_quantity' => 'Inventory', 'weight' => 'Weight', 'weight_unit' => 'WeightUnit', 'inventory_item_id' => 'InventoryItemID', 'requires_shipping' => 'RequiresShipping' ]; private static $has_one = [ 'Product' => Product::class, 'Image' => Image::class ]; private static $extensions = [ Versioned::class ]; private static $indexes = [ 'ShopifyID' => true ]; private static $summary_fields = [ 'Image.CMSThumbnail' => 'Image', 'Title', 'Price', 'SKU', 'ShopifyID' ]; public function getCMSFields() { $fields = parent::getCMSFields(); return $fields; } /** * Creates a new Shopify Variant from the given data * * @param $shopifyVariant * @return ProductVariant * @throws \SilverStripe\ORM\ValidationException */ public static function findOrMakeFromShopifyData($shopifyVariant) { if (!$variant = self::getByShopifyID($shopifyVariant->id)) { $variant = self::create(); } $map = self::config()->get('data_map'); Import::loop_map($map, $variant, $shopifyVariant); if ($image = Image::getByShopifyID($shopifyVariant->image_id)) { $variant->ImageID = $image->ID; } if ($variant->isChanged()) { $variant->write(); } return $variant; } public static function getByShopifyID($shopifyId) { return DataObject::get_one(self::class, ['ShopifyID' => $shopifyId]); } public function canView($member = null) { return $this->Product()->canView($member); } public function canEdit($member = null) { return $this->Product()->canEdit($member); } public function canDelete($member = null) { return $this->Product()->canDelete($member); } public function canCreate($member = null, $context = []) { return $this->Product()->canCreate($member, $context); } } |