![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-eav/Model/Attribute/Data/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Eav\Model\Attribute\Data; use Magento\Framework\App\RequestInterface; /** * EAV Entity Attribute Multiply line Data Model * * @author Magento Core Team <[email protected]> */ class Multiline extends \Magento\Eav\Model\Attribute\Data\Text { /** * Extract data from request and return value * * @param RequestInterface $request * @return array|string */ public function extractValue(RequestInterface $request) { $value = $this->_getRequestValue($request); if (!is_array($value)) { $value = false; } else { $value = array_map([$this, '_applyInputFilter'], $value); } return $value; } /** * Validate data * * Return true or array of errors * * @param array|string $value * @return bool|array */ public function validateValue($value) { $errors = []; $lines = $this->processValue($value); $attribute = $this->getAttribute(); if ($attribute->getIsRequired() && empty($lines)) { $attributeLabel = __($attribute->getStoreLabel()); $errors[] = __('"%1" is a required value.', $attributeLabel); } $maxAllowedLineCount = $attribute->getMultilineCount(); if (count($lines) > $maxAllowedLineCount) { $attributeLabel = __($attribute->getStoreLabel()); $errors[] = __('"%1" cannot contain more than %2 lines.', $attributeLabel, $maxAllowedLineCount); } foreach ($lines as $lineIndex => $line) { // First line must be always validated if ($lineIndex == 0 || !empty($line)) { $result = parent::validateValue($line); if ($result !== true) { // phpcs:ignore Magento2.Performance.ForeachArrayMerge $errors = array_merge($errors, $result); } } } return (count($errors) == 0) ? true : $errors; } /** * Process value before validation * * @param bool|string|array $value * @return array list of lines represented by given value */ protected function processValue($value) { if ($value === false) { // try to load original value and validate it $attribute = $this->getAttribute(); $entity = $this->getEntity(); $value = $entity->getDataUsingMethod($attribute->getAttributeCode()); } if (!is_array($value)) { $value = $value !== null ? explode("\n", $value) : []; } return $value; } /** * Export attribute value to entity model * * @param array|string $value * @return $this */ public function compactValue($value) { if (is_array($value)) { $value = trim(implode("\n", $value)); } return parent::compactValue($value); } /** * Restore attribute value from SESSION to entity model * * @param array|string $value * @return $this * @codeCoverageIgnore */ public function restoreValue($value) { return $this->compactValue($value); } /** * Return formatted attribute value from entity model * * @param string $format * @return array|string */ public function outputValue($format = \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT) { $values = $this->getEntity()->getData($this->getAttribute()->getAttributeCode()); if ($values && !is_array($values)) { $values = explode("\n", $values); } $values = array_map([$this, '_applyOutputFilter'], $values); switch ($format) { case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_ARRAY: $output = $values; break; case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_HTML: $output = implode("<br />", $values); break; case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_ONELINE: $output = implode(" ", $values); break; default: $output = implode("\n", $values); break; } return $output; } }