classes/XLite/Model/OrderItem/AttributeValue.php line 18

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright (c) 2001-present X-Cart Holdings LLC. All rights reserved.
  4.  * See https://www.x-cart.com/license-agreement.html for license details.
  5.  */
  6. namespace XLite\Model\OrderItem;
  7. use Doctrine\ORM\Mapping as ORM;
  8. /**
  9.  * Attribute value
  10.  *
  11.  * @ORM\Entity
  12.  * @ORM\Table  (name="order_item_attribute_values")
  13.  */
  14. class AttributeValue extends \XLite\Model\AEntity
  15. {
  16.     /**
  17.      * ID
  18.      *
  19.      * @var integer
  20.      *
  21.      * @ORM\Id
  22.      * @ORM\GeneratedValue (strategy="AUTO")
  23.      * @ORM\Column         (type="integer", options={ "unsigned": true })
  24.      */
  25.     protected $id;
  26.     /**
  27.      * Order item (relation)
  28.      *
  29.      * @var \XLite\Model\OrderItem
  30.      *
  31.      * @ORM\ManyToOne  (targetEntity="XLite\Model\OrderItem", inversedBy="attributeValues")
  32.      * @ORM\JoinColumn (name="item_id", referencedColumnName="item_id", onDelete="CASCADE")
  33.      */
  34.     protected $orderItem;
  35.     /**
  36.      * Name
  37.      *
  38.      * @var string
  39.      *
  40.      * @ORM\Column (type="string", length=255)
  41.      */
  42.     protected $name;
  43.     /**
  44.      * Value
  45.      *
  46.      * @var string
  47.      *
  48.      * @ORM\Column (type="string", length=255)
  49.      */
  50.     protected $value;
  51.     /**
  52.      * Attribute id
  53.      *
  54.      * @var integer
  55.      *
  56.      * @ORM\Column (type="integer", options={ "unsigned": true })
  57.      */
  58.     protected $attributeId 0;
  59.     /**
  60.      * Attribute value (checkbox)
  61.      *
  62.      * @var \XLite\Model\AttributeValue\AttributeValueCheckbox
  63.      *
  64.      * @ORM\ManyToOne  (targetEntity="XLite\Model\AttributeValue\AttributeValueCheckbox")
  65.      * @ORM\JoinColumn (name="attribute_value_checkbox_id", referencedColumnName="id", onDelete="SET NULL")
  66.      */
  67.     protected $attributeValueC;
  68.     /**
  69.      * Attribute value (select)
  70.      *
  71.      * @var \XLite\Model\AttributeValue\AttributeValueSelect
  72.      *
  73.      * @ORM\ManyToOne  (targetEntity="XLite\Model\AttributeValue\AttributeValueSelect")
  74.      * @ORM\JoinColumn (name="attribute_value_select_id", referencedColumnName="id", onDelete="SET NULL")
  75.      */
  76.     protected $attributeValueS;
  77.     /**
  78.      * Attribute value (text)
  79.      *
  80.      * @var \XLite\Model\AttributeValue\AttributeValueText
  81.      *
  82.      * @ORM\ManyToOne  (targetEntity="XLite\Model\AttributeValue\AttributeValueText")
  83.      * @ORM\JoinColumn (name="attribute_value_text_id", referencedColumnName="id", onDelete="SET NULL")
  84.      */
  85.     protected $attributeValueT;
  86.     /**
  87.      * Set attribute value
  88.      *
  89.      * @var mixed $value Value
  90.      *
  91.      * @return void
  92.      */
  93.     public function setAttributeValue($value)
  94.     {
  95.         $method 'setAttributeValue' $value->getAttribute()->getType();
  96.         if (method_exists($this$method)) {
  97.             $this->{$method}($value);
  98.         }
  99.     }
  100.     /**
  101.      * Get attribute value
  102.      *
  103.      * @return \XLite\Model\AttributeValue\AAttributeValue
  104.      */
  105.     public function getAttributeValue()
  106.     {
  107.         $value null;
  108.         if ($this->getAttributeValueS()) {
  109.             $value $this->getAttributeValueS();
  110.         } elseif ($this->getAttributeValueC()) {
  111.             $value $this->getAttributeValueC();
  112.         } elseif ($this->getAttributeValueT()) {
  113.             $value $this->getAttributeValueT();
  114.         }
  115.         return $value;
  116.     }
  117.     /**
  118.      * Clone attribute value of order item
  119.      *
  120.      * @return static
  121.      */
  122.     public function cloneEntity()
  123.     {
  124.         /** @var static $new */
  125.         $new parent::cloneEntity();
  126.         if ($this->getAttributeValue()) {
  127.             $new->setAttributeValue($this->getAttributeValue());
  128.         }
  129.         return $new;
  130.     }
  131.     /**
  132.      * Get order
  133.      *
  134.      * @return \XLite\Model\Order
  135.      */
  136.     public function getOrder()
  137.     {
  138.         return $this->getOrderItem()->getOrder();
  139.     }
  140.     /**
  141.      * Get actual selected attribute name
  142.      *
  143.      * @return string
  144.      */
  145.     public function getActualName()
  146.     {
  147.         $attribute null;
  148.         if ($this->getAttributeValue()) {
  149.             $attribute $this->getAttributeValue()->getAttribute();
  150.         }
  151.         if (
  152.             !$attribute
  153.             && $this->getAttributeId()
  154.         ) {
  155.             /** @var \XLite\Model\Attribute $attribute */
  156.             $attribute \XLite\Core\Database::getRepo('\XLite\Model\Attribute')->find($this->getAttributeId());
  157.         }
  158.         /** @see \XLite\Model\AttributeTranslation */
  159.         return $attribute
  160.             $attribute->getName()
  161.             : $this->getName();
  162.     }
  163.     /**
  164.      * Get actual selected attribute value
  165.      *
  166.      * @return string
  167.      */
  168.     public function getActualValue()
  169.     {
  170.         $value $this->getAttributeValue();
  171.         return $value && !$value instanceof \XLite\Model\AttributeValue\AttributeValueText
  172.             $value->asString()
  173.             : $this->getValue();
  174.     }
  175.     /**
  176.      * Get attribute value ID (selected option ID)
  177.      *
  178.      * @return integer
  179.      */
  180.     public function getAttributeValueId()
  181.     {
  182.         $value $this->getAttributeValue();
  183.         return $value && !$value instanceof \XLite\Model\AttributeValue\AttributeValueText
  184.             $value->getId()
  185.             : null;
  186.     }
  187.     /**
  188.      * Get id
  189.      *
  190.      * @return integer
  191.      */
  192.     public function getId()
  193.     {
  194.         return $this->id;
  195.     }
  196.     /**
  197.      * Set name
  198.      *
  199.      * @param string $name
  200.      * @return AttributeValue
  201.      */
  202.     public function setName($name)
  203.     {
  204.         $this->name $name;
  205.         return $this;
  206.     }
  207.     /**
  208.      * Get name
  209.      *
  210.      * @return string
  211.      */
  212.     public function getName()
  213.     {
  214.         return $this->name;
  215.     }
  216.     /**
  217.      * Set value
  218.      *
  219.      * @param string $value
  220.      * @return AttributeValue
  221.      */
  222.     public function setValue($value)
  223.     {
  224.         $this->value substr($value0255);
  225.         return $this;
  226.     }
  227.     /**
  228.      * Get value
  229.      *
  230.      * @return string
  231.      */
  232.     public function getValue()
  233.     {
  234.         return $this->value;
  235.     }
  236.     /**
  237.      * Set attributeId
  238.      *
  239.      * @param integer $attributeId
  240.      * @return AttributeValue
  241.      */
  242.     public function setAttributeId($attributeId)
  243.     {
  244.         $this->attributeId $attributeId;
  245.         return $this;
  246.     }
  247.     /**
  248.      * Get attributeId
  249.      *
  250.      * @return integer
  251.      */
  252.     public function getAttributeId()
  253.     {
  254.         return $this->attributeId;
  255.     }
  256.     /**
  257.      * Set orderItem
  258.      *
  259.      * @param \XLite\Model\OrderItem $orderItem
  260.      * @return AttributeValue
  261.      */
  262.     public function setOrderItem(\XLite\Model\OrderItem $orderItem null)
  263.     {
  264.         $this->orderItem $orderItem;
  265.         return $this;
  266.     }
  267.     /**
  268.      * Get orderItem
  269.      *
  270.      * @return \XLite\Model\OrderItem
  271.      */
  272.     public function getOrderItem()
  273.     {
  274.         return $this->orderItem;
  275.     }
  276.     /**
  277.      * Set attributeValueC
  278.      *
  279.      * @param \XLite\Model\AttributeValue\AttributeValueCheckbox $attributeValueC
  280.      * @return AttributeValue
  281.      */
  282.     public function setAttributeValueC(\XLite\Model\AttributeValue\AttributeValueCheckbox $attributeValueC null)
  283.     {
  284.         $this->attributeValueC $attributeValueC;
  285.         return $this;
  286.     }
  287.     /**
  288.      * Get attributeValueC
  289.      *
  290.      * @return \XLite\Model\AttributeValue\AttributeValueCheckbox
  291.      */
  292.     public function getAttributeValueC()
  293.     {
  294.         return $this->attributeValueC;
  295.     }
  296.     /**
  297.      * Set attributeValueS
  298.      *
  299.      * @param \XLite\Model\AttributeValue\AttributeValueSelect $attributeValueS
  300.      * @return AttributeValue
  301.      */
  302.     public function setAttributeValueS(\XLite\Model\AttributeValue\AttributeValueSelect $attributeValueS null)
  303.     {
  304.         $this->attributeValueS $attributeValueS;
  305.         return $this;
  306.     }
  307.     /**
  308.      * Get attributeValueS
  309.      *
  310.      * @return \XLite\Model\AttributeValue\AttributeValueSelect
  311.      */
  312.     public function getAttributeValueS()
  313.     {
  314.         return $this->attributeValueS;
  315.     }
  316.     /**
  317.      * Set attributeValueT
  318.      *
  319.      * @param \XLite\Model\AttributeValue\AttributeValueText $attributeValueT
  320.      * @return AttributeValue
  321.      */
  322.     public function setAttributeValueT(\XLite\Model\AttributeValue\AttributeValueText $attributeValueT null)
  323.     {
  324.         $this->attributeValueT $attributeValueT;
  325.         return $this;
  326.     }
  327.     /**
  328.      * Get attributeValueT
  329.      *
  330.      * @return \XLite\Model\AttributeValue\AttributeValueText
  331.      */
  332.     public function getAttributeValueT()
  333.     {
  334.         return $this->attributeValueT;
  335.     }
  336. }