/** * Add data about search criteria to object state * * @param Mage_Eav_Model_Entity_Attribute $attribute * @param mixed $value * @return Mage_CatalogSearch_Model_Advanced */ 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'])) { $currencyModel = Mage::getModel('directory/currency')->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 = Mage::helper('catalogsearch')->__('%s and greater', $currencyModel ? $from : $value['from']); } elseif (strlen($value['to']) > 0) { // to $value = Mage::helper('catalogsearch')->__('up to %s', $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); } else { if ($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') { $value = $attribute->getSource()->getOptionText($value); if (is_array($value)) { $value = $value['label']; } } else { if ($attribute->getFrontendInput() == 'boolean') { $value = $value == 1 ? Mage::helper('catalogsearch')->__('Yes') : Mage::helper('catalogsearch')->__('No'); } } } $this->_searchCriterias[] = array('name' => $name, 'value' => $value); return $this; }
/** * Select field filter HTML with selected value. * * @param Mage_Eav_Model_Entity_Attribute $attribute * @param mixed $value * @return string */ protected function _getSelectHtmlWithValue(Mage_Eav_Model_Entity_Attribute $attribute, $value) { if ($attribute->getFilterOptions()) { $options = array(); foreach ($attribute->getFilterOptions() as $value => $label) { $options[] = array('value' => $value, 'label' => $label); } } else { $options = $attribute->getSource()->getAllOptions(false); } if ($size = count($options)) { // add empty vaue option $firstOption = reset($options); if ('' === $firstOption['value']) { $options[key($options)]['label'] = ''; } else { array_unshift($options, array('value' => '', 'label' => '')); } $selectBlock = new Mage_Core_Block_Html_Select(array('name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'select', 'extra_params' => 'style="width:280px"')); return $selectBlock->setOptions($options)->setValue($value)->getHtml(); } else { return $this->_helper->__('Attribute does not has options, so filtering is impossible'); } }
/** * Apply configuration specific for different element type * * @param string $inputType * @param Varien_Data_Form_Element_Abstract $element * @param Mage_Eav_Model_Entity_Attribute $attribute */ protected function _applyTypeSpecificConfig($inputType, $element, Mage_Eav_Model_Entity_Attribute $attribute) { switch ($inputType) { case 'select': $element->setValues($attribute->getSource()->getAllOptions(true, true)); break; case 'multiselect': $element->setValues($attribute->getSource()->getAllOptions(false, true)); $element->setCanBeEmpty(true); break; case 'date': $element->setImage($this->getViewFileUrl('images/grid-cal.gif')); $element->setDateFormat(Mage::app()->getLocale()->getDateFormatWithLongYear()); break; case 'multiline': $element->setLineCount($attribute->getMultilineCount()); break; default: break; } }
/** * Get Human Readable label for attribute value option * * @param Mage_Eav_Model_Entity_Attribute $attribute * @param int|string $attributeValueId * * @return string|boolean */ public function getAttributeAdminLabel($attribute, $attributeValueId) { if ($attribute->getFrontendInput() == 'select') { return $attribute->getSource()->getOptionText($attributeValueId); } return false; }
/** * Select field filter HTML with selected value. * * @param Mage_Eav_Model_Entity_Attribute $attribute * @param mixed $value * @return string */ protected function _getSelectHtmlWithValue(Mage_Eav_Model_Entity_Attribute $attribute, $value) { if ($attribute->getFilterOptions()) { $options = array(); foreach ($attribute->getFilterOptions() as $value => $label) { $options[] = array('value' => $value, 'label' => $label); } } else { $options = $attribute->getSource()->getAllOptions(false); } if ($size = count($options)) { // add empty vaue option $firstOption = reset($options); if ('' === $firstOption['value']) { $options[key($options)]['label'] = ''; } else { array_unshift($options, array('value' => '', 'label' => '')); } $arguments = array('name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'select select-export-filter'); /** @var $selectBlock Mage_Core_Block_Html_Select */ $selectBlock = $this->_layout->getBlockFactory()->createBlock('Mage_Core_Block_Html_Select', $arguments); return $selectBlock->setOptions($options)->setValue($value)->getHtml(); } else { return Mage::helper('Mage_ImportExport_Helper_Data')->__('Attribute does not has options, so filtering is impossible'); } }
/** * Retrieves attribute value * * @param array $row * @param Mage_Eav_Model_Entity_Attribute $attribute * @return mixed|null */ protected function _getAttributeValue($row, $attribute) { if (isset($row[$attribute->getAttributeCode()]) && !is_array($row[$attribute->getAttributeCode()])) { $value = $row[$attribute->getAttributeCode()]; } elseif ($attribute->getIsRequired() && $attribute->getDefaultValue() !== null && $attribute->getDefaultValue() !== '' && !is_array($attribute->getDefaultValue())) { $value = $attribute->getDefaultValue(); } else { $value = null; } if ($attribute->usesSource() && $value !== null) { if ($attribute->getSource() instanceof Mage_Eav_Model_Entity_Attribute_Source_Abstract) { $value = $attribute->getSource()->getOptionId($value); } else { $value = $this->_getOptionIdNonAttributeSource($attribute->getSource()->getAllOptions(), $value); } } return $value; }