Exemplo n.º 1
0
 /**
  * Retrieve Product Attribute Value
  *
  * @param Mage_Catalog_Model_Product $product
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @return string
  */
 public function getProductAttributeValue($product, $attribute)
 {
     if (!$product->hasData($attribute->getAttributeCode())) {
         return Mage::helper('Mage_Catalog_Helper_Data')->__('N/A');
     }
     if ($attribute->getSourceModel() || in_array($attribute->getFrontendInput(), array('select', 'boolean', 'multiselect'))) {
         //$value = $attribute->getSource()->getOptionText($product->getData($attribute->getAttributeCode()));
         $value = $attribute->getFrontend()->getValue($product);
     } else {
         $value = $product->getData($attribute->getAttributeCode());
     }
     return (string) $value == '' ? Mage::helper('Mage_Catalog_Helper_Data')->__('No') : $value;
 }
 /**
  * Returns true if given attribute has options
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @return bool
  */
 public function isAttributeWithOptions(Mage_Catalog_Model_Resource_Eav_Attribute $attribute)
 {
     $model = Mage::getModel($attribute->getSourceModel());
     return $attribute->usesSource() && $attribute->getBackendType() == 'int' && $model instanceof Mage_Eav_Model_Entity_Attribute_Source_Table;
 }
Exemplo n.º 3
0
 /**
  * Checks if attribute is using options.
  *
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @return bool
  */
 public function isUsingOptions($attribute)
 {
     $sourceModel = Mage::getModel($attribute->getSourceModel());
     $backendType = $attribute->getBackendType();
     return $attribute->usesSource() && ($backendType == 'int' && $sourceModel instanceof Mage_Eav_Model_Entity_Attribute_Source_Table) || $backendType == 'varchar' && $attribute->getFrontendInput() == 'multiselect';
 }
Exemplo n.º 4
0
 /**
  * Retrieve Product Attribute Value
  *
  * @param Mage_Catalog_Model_Product $product
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @return string
  */
 public function getProductAttributeValue($product, $attribute)
 {
     if (!$product->hasData($attribute->getAttributeCode())) {
         return ' ';
     }
     if ($attribute->getSourceModel() || in_array($attribute->getFrontendInput(), array('select', 'boolean', 'multiselect'))) {
         //$value = $attribute->getSource()->getOptionText($product->getData($attribute->getAttributeCode()));
         $value = $attribute->getFrontend()->getValue($product);
     } else {
         $value = $product->getData($attribute->getAttributeCode());
     }
     return $value ? $value : ' ';
 }
 /**
  * Returns attribute type for indexation.
  *
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute Attribute
  *
  * @return string
  */
 protected function _getAttributeType($attribute)
 {
     $type = 'string';
     if ($attribute->getBackendType() == 'int' || $attribute->getFrontendClass() == 'validate-digits') {
         $type = 'integer';
     } elseif ($attribute->getBackendType() == 'decimal') {
         $type = 'double';
     } elseif ($attribute->getSourceModel() == 'eav/entity_attribute_source_boolean') {
         $type = 'boolean';
     } elseif ($attribute->getBackendType() == 'datetime') {
         $type = 'date';
     } elseif ($attribute->usesSource() && $attribute->getSourceModel() === null) {
         $type = 'integer';
     } else {
         if ($attribute->usesSource()) {
             $type = 'string';
         }
     }
     return $type;
 }
Exemplo n.º 6
0
 /**
  * Returns attribute type for indexation.
  *
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @return string
  */
 protected function _getAttributeType($attribute)
 {
     $type = 'string';
     if ($attribute->getBackendType() == 'decimal') {
         $type = 'double';
     } elseif ($attribute->getSourceModel() == 'eav/entity_attribute_source_boolean') {
         $type = 'boolean';
     } elseif ($attribute->getBackendType() == 'datetime') {
         $type = 'date';
     } elseif ($this->_helper->isUsingOptions($attribute)) {
         $type = 'option';
         // custom type to build an object for option id (facets) and label (search)
     } elseif ($attribute->usesSource() || $attribute->getFrontendClass() == 'validate-digits') {
         $type = 'integer';
     }
     return $type;
 }
 /**
  * Retrieve data to be insterted after processing attribute
  *
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @param int $storeId
  * @return array
  */
 protected function getInsertValues($attribute, $storeId)
 {
     $options = array();
     if ($attribute->getSourceModel()) {
         $options = $attribute->getSource()->getAllOptions();
     } else {
         $collection = Mage::getResourceModel('eav/entity_attribute_option_collection')->setStoreFilter($storeId)->setPositionOrder('asc')->setAttributeFilter($attribute->getId())->load();
         $options = $collection->toOptionArray();
     }
     $data = array();
     foreach ($options as $option) {
         // Generate url value
         $urlValue = $this->getHelper()->transliterate($option['label']);
         // Check if this url key is taken and add -{count}
         $count = 0;
         $origUrlValue = $urlValue;
         do {
             $found = false;
             foreach ($data as $line) {
                 if ($line['url_value'] == $urlValue) {
                     $found = true;
                 }
             }
             if ($found) {
                 $urlValue = $origUrlValue . '-' . ++$count;
             }
         } while ($found);
         $data[] = array('attribute_code' => $attribute->getAttributeCode(), 'attribute_id' => $attribute->getId(), 'store_id' => $storeId, 'option_id' => $option['value'], 'url_key' => $this->getHelper()->transliterate($attribute->getStoreLabel($storeId)), 'url_value' => $urlValue);
     }
     return $data;
 }