CustomOption.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Catalog\Model\CustomOptions;
  7. use Magento\Framework\Model\AbstractExtensibleModel;
  8. use Magento\Catalog\Api\Data\CustomOptionInterface;
  9. use Magento\Framework\Api\AttributeValueFactory;
  10. use Magento\Framework\Model\Context;
  11. use Magento\Framework\Registry;
  12. use Magento\Framework\Api\ExtensionAttributesFactory;
  13. use Magento\Framework\Model\ResourceModel\AbstractResource;
  14. use Magento\Framework\Data\Collection\AbstractDb;
  15. use Magento\Catalog\Model\Webapi\Product\Option\Type\File\Processor as FileProcessor;
  16. class CustomOption extends AbstractExtensibleModel implements CustomOptionInterface
  17. {
  18. /**
  19. * @param Context $context
  20. * @param Registry $registry
  21. * @param ExtensionAttributesFactory $extensionFactory
  22. * @param AttributeValueFactory $customAttributeFactory
  23. * @param AbstractResource|null $resource
  24. * @param AbstractDb|null $resourceCollection
  25. * @param FileProcessor $fileProcessor
  26. * @param array $data
  27. */
  28. public function __construct(
  29. Context $context,
  30. Registry $registry,
  31. ExtensionAttributesFactory $extensionFactory,
  32. AttributeValueFactory $customAttributeFactory,
  33. FileProcessor $fileProcessor,
  34. AbstractResource $resource = null,
  35. AbstractDb $resourceCollection = null,
  36. array $data = []
  37. ) {
  38. $this->fileProcessor = $fileProcessor;
  39. parent::__construct(
  40. $context,
  41. $registry,
  42. $extensionFactory,
  43. $customAttributeFactory,
  44. $resource,
  45. $resourceCollection,
  46. $data
  47. );
  48. }
  49. /**
  50. * @inheritDoc
  51. */
  52. public function getOptionId()
  53. {
  54. return $this->getData(self::OPTION_ID);
  55. }
  56. /**
  57. * @inheritDoc
  58. */
  59. public function setOptionId($value)
  60. {
  61. return $this->setData(self::OPTION_ID, $value);
  62. }
  63. /**
  64. * @inheritDoc
  65. */
  66. public function getOptionValue()
  67. {
  68. $value = $this->getData(self::OPTION_VALUE);
  69. if ($value == 'file') {
  70. /** @var \Magento\Framework\Api\Data\ImageContentInterface $fileInfo */
  71. $imageContent = $this->getExtensionAttributes()
  72. ? $this->getExtensionAttributes()->getFileInfo()
  73. : null;
  74. if ($imageContent) {
  75. $value = $this->fileProcessor->processFileContent($imageContent);
  76. }
  77. }
  78. return $value;
  79. }
  80. /**
  81. * @inheritDoc
  82. */
  83. public function setOptionValue($value)
  84. {
  85. return $this->setData(self::OPTION_VALUE, $value);
  86. }
  87. /**
  88. * @inheritDoc
  89. */
  90. public function getExtensionAttributes()
  91. {
  92. return $this->_getExtensionAttributes();
  93. }
  94. /**
  95. * @inheritDoc
  96. */
  97. public function setExtensionAttributes(
  98. \Magento\Catalog\Api\Data\CustomOptionExtensionInterface $extensionAttributes
  99. ) {
  100. return $this->_setExtensionAttributes($extensionAttributes);
  101. }
  102. }