/** * Add data about search criteria to object state * * @param EntityAttribute $attribute * @param mixed $value * @return $this */ protected function _addSearchCriteria($attribute, $value) { $name = $attribute->getStoreLabel(); if (is_array($value)) { if (isset($value['from']) && isset($value['to'])) { if (!empty($value['from']) || !empty($value['to'])) { if (isset($value['currency'])) { /** @var $currencyModel Currency */ $currencyModel = $this->_currencyFactory->create()->load($value['currency']); $from = $currencyModel->format($value['from'], array(), false); $to = $currencyModel->format($value['to'], array(), false); } else { $currencyModel = null; } if (strlen($value['from']) > 0 && strlen($value['to']) > 0) { // - $value = sprintf('%s - %s', $currencyModel ? $from : $value['from'], $currencyModel ? $to : $value['to']); } elseif (strlen($value['from']) > 0) { // and more $value = __('%1 and greater', $currencyModel ? $from : $value['from']); } elseif (strlen($value['to']) > 0) { // to $value = __('up to %1', $currencyModel ? $to : $value['to']); } } else { return $this; } } } if (($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') && is_array($value)) { foreach ($value as $key => $val) { $value[$key] = $attribute->getSource()->getOptionText($val); if (is_array($value[$key])) { $value[$key] = $value[$key]['label']; } } $value = implode(', ', $value); } elseif ($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') { $value = $attribute->getSource()->getOptionText($value); if (is_array($value)) { $value = $value['label']; } } elseif ($attribute->getFrontendInput() == 'boolean') { $value = $value == 1 ? __('Yes') : __('No'); } $this->_searchCriterias[] = array('name' => $name, 'value' => $value); return $this; }
/** * Update attribute default value * * @param EntityAttribute|AbstractModel $object * @param int|string $optionId * @param int $intOptionId * @param array $defaultValue * @return void */ protected function _updateDefaultValue($object, $optionId, $intOptionId, &$defaultValue) { if (in_array($optionId, $object->getDefault())) { $frontendInput = $object->getFrontendInput(); if ($frontendInput === 'multiselect') { $defaultValue[] = $intOptionId; } elseif ($frontendInput === 'select') { $defaultValue = [$intOptionId]; } } }