Exemplo n.º 1
0
 /**
  * Retrieve filter array
  *
  * @deprecated since 1.12.0.0
  *
  * @param Enterprise_Search_Model_Resource_Collection $collection
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @param string|array $value
  * @return array
  */
 public function getSearchParam($collection, $attribute, $value)
 {
     if (empty($value) || isset($value['from']) && empty($value['from']) && isset($value['to']) && empty($value['to'])) {
         return false;
     }
     $locale = Mage::app()->getStore()->getConfig(Mage_Core_Model_Locale::XML_PATH_DEFAULT_LOCALE);
     $languageSuffix = $this->getLanguageSuffix($locale);
     $field = $attribute->getAttributeCode();
     $backendType = $attribute->getBackendType();
     $frontendInput = $attribute->getFrontendInput();
     if ($frontendInput == 'multiselect') {
         $field = 'attr_multi_' . $field;
     } elseif ($backendType == 'decimal') {
         $field = 'attr_decimal_' . $field;
     } elseif ($frontendInput == 'select' || $frontendInput == 'boolean') {
         $field = 'attr_select_' . $field;
     } elseif ($backendType == 'datetime') {
         $field = 'attr_datetime_' . $field;
         $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT);
         if (is_array($value)) {
             foreach ($value as &$val) {
                 if (!is_empty_date($val)) {
                     $date = new Zend_Date($val, $format);
                     $val = $date->toString(Zend_Date::ISO_8601) . 'Z';
                 }
             }
         } else {
             if (!is_empty_date($value)) {
                 $date = new Zend_Date($value, $format);
                 $value = $date->toString(Zend_Date::ISO_8601) . 'Z';
             }
         }
     } elseif (in_array($backendType, $this->_textFieldTypes)) {
         $field .= $languageSuffix;
     }
     if ($attribute->usesSource()) {
         $attribute->setStoreId(Mage::app()->getStore()->getId());
     }
     return array($field => $value);
 }
 /**
  * Retrieve data to be inserted
  *
  * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
  * @return array
  */
 protected function getInsertValues($attribute)
 {
     $data = array();
     foreach ($this->getAllStoresIds() as $storeId) {
         $attribute->setStoreId($storeId);
         if ($attribute->getSourceModel()) {
             $options = $attribute->getSource()->getAllOptions(false);
         } else {
             $collection = Mage::getResourceModel('eav/entity_attribute_option_collection')->setStoreFilter($storeId)->setPositionOrder('asc')->setAttributeFilter($attribute->getId())->load();
             $options = $collection->toOptionArray();
         }
         foreach ($options as $option) {
             // Generate url value
             $urlValue = $this->getHelper()->transliterate($option['label']);
             $urlKey = $this->getHelper()->transliterate($attribute->getStoreLabel($storeId));
             // Check if this url value is taken and add -{count}
             $countValue = 0;
             $origUrlValue = $urlValue;
             do {
                 $found = false;
                 foreach ($data as $line) {
                     if ($line['store_id'] == $storeId && $line['url_value'] == $urlValue) {
                         $urlValue = $origUrlValue . '-' . ++$countValue;
                         $found = true;
                     }
                 }
             } while ($found);
             // Check if this url key is taken and add -{count}
             $countKey = 0;
             $origUrlKey = $urlKey;
             do {
                 $found = false;
                 if ($this->urlKeyExists($attribute->getId(), $urlKey)) {
                     $urlKey = $origUrlKey . '-' . ++$countKey;
                     $found = true;
                 }
             } while ($found);
             $data[] = array('attribute_code' => $attribute->getAttributeCode(), 'attribute_id' => $attribute->getId(), 'store_id' => $storeId, 'option_id' => $option['value'], 'url_key' => $urlKey, 'url_value' => $urlValue);
         }
     }
     return $data;
 }