/**
  * Determine filter type for specified attribute.
  *
  * @static
  * @param Mage_Eav_Model_Entity_Attribute $attribute
  * @throws Exception
  * @return string
  */
 public static function getAttributeFilterType(Mage_Eav_Model_Entity_Attribute $attribute)
 {
     if ($attribute->usesSource() || $attribute->getFilterOptions()) {
         return self::FILTER_TYPE_SELECT;
     } elseif ('datetime' == $attribute->getBackendType()) {
         return self::FILTER_TYPE_DATE;
     } elseif ('decimal' == $attribute->getBackendType() || 'int' == $attribute->getBackendType()) {
         return self::FILTER_TYPE_NUMBER;
     } elseif ($attribute->isStatic() || 'varchar' == $attribute->getBackendType() || 'text' == $attribute->getBackendType()) {
         return self::FILTER_TYPE_INPUT;
     } else {
         Mage::throwException(Mage::helper('importexport')->__('Can not determine attribute filter type'));
     }
 }
Esempio n. 2
0
 /**
  * Get attribute type for upcoming validation.
  *
  * @param Mage_Eav_Model_Entity_Attribute $attribute
  * @return string
  */
 public static function getAttributeType(Mage_Eav_Model_Entity_Attribute $attribute)
 {
     if ($attribute->usesSource()) {
         return $attribute->getFrontendInput() == 'multiselect' ? 'multiselect' : 'select';
     } elseif ($attribute->isStatic()) {
         return $attribute->getFrontendInput() == 'date' ? 'datetime' : 'varchar';
     } else {
         return $attribute->getBackendType();
     }
 }
 /**
  * Migrate Entries from source to target tables (if possible)
  *
  * TODO: Delete existing Select/Multiselect Values if the new Backend Type is not one of Select/Multiselect
  *
  * @param Mage_Eav_Model_Entity_Attribute $attribute  Attribute Model
  * @param string                          $targetType Target Backend Type
  * @return void
  */
 protected function _migrateData($attribute, $targetType)
 {
     /** @var Varien_Db_Adapter_Interface $_dbConnection */
     $_dbConnection = Mage::getSingleton('core/resource')->getConnection('core_write');
     // e.g. Entity is 'catalog_product'
     $entityTypeCode = $attribute->getEntity()->getData('entity_type_code');
     // Set Backend Types for later reference
     $sourceType = $attribute->getBackendType();
     // Create complete Entity Table names, e.g. 'catalog_product_entity_text'
     $sourceTable = implode([$entityTypeCode, 'entity', $sourceType], '_');
     $targetTable = implode([$entityTypeCode, 'entity', $targetType], '_');
     // Select all existing entries for given Attribute
     $srcSql = 'SELECT' . ' * FROM ' . $sourceTable . ' WHERE attribute_id = ? AND entity_type_id = ?';
     /** @var Zend_Db_Statement_Interface $sourceQuery */
     $sourceQuery = $_dbConnection->query($srcSql, [$attribute->getId(), $attribute->getEntity()->getData('entity_type_id')]);
     $this->_migrateNonSelect($targetType, $sourceQuery, $sourceType, $targetTable, $_dbConnection, $sourceTable);
 }