/**
  * Retrieve attribute codes using for flat
  *
  * @return array
  */
 public function getAttributeCodes()
 {
     if ($this->_attributeCodes === null) {
         $this->_attributeCodes = array();
         $systemAttributes = array();
         $attributeNodes = Mage::getConfig()->getNode(self::XML_NODE_ATTRIBUTE_NODES)->children();
         foreach ($attributeNodes as $node) {
             $attributes = Mage::getConfig()->getNode((string) $node)->asArray();
             $attributes = array_keys($attributes);
             $systemAttributes = array_unique(array_merge($attributes, $systemAttributes));
         }
         $bind = array('backend_type' => Mage_Eav_Model_Entity_Attribute_Abstract::TYPE_STATIC, 'entity_type_id' => $this->getEntityTypeId());
         $select = $this->_connection->select()->from(array('main_table' => $this->getTable('eav/attribute')))->join(array('additional_table' => $this->getTable('catalog/eav_attribute')), 'additional_table.attribute_id = main_table.attribute_id')->where('main_table.entity_type_id = :entity_type_id');
         $whereCondition = array('main_table.backend_type = :backend_type', $this->_connection->quoteInto('additional_table.is_used_for_promo_rules = ?', 1), $this->_connection->quoteInto('additional_table.used_in_product_listing = ?', 1), $this->_connection->quoteInto('additional_table.used_for_sort_by = ?', 1), $this->_connection->quoteInto('main_table.attribute_code IN(?)', $systemAttributes));
         if ($this->getFlatHelper()->isAddFilterableAttributes()) {
             $whereCondition[] = $this->_connection->quoteInto('additional_table.is_filterable > ?', 0);
         }
         $select->where(implode(' OR ', $whereCondition));
         $attributesData = $this->_connection->fetchAll($select, $bind);
         Mage::getSingleton('eav/config')->importAttributesData($this->getEntityType(), $attributesData);
         foreach ($attributesData as $data) {
             $this->_attributeCodes[$data['attribute_id']] = $data['attribute_code'];
         }
         unset($attributesData);
     }
     return $this->_attributeCodes;
 }
Example #2
0
 /**
  * @param array $columns
  * @param array $data
  * @param array $expected
  * @dataProvider insertArrayDataProvider
  */
 public function testInsertArray(array $columns, array $data, array $expected)
 {
     $this->_connection->insertArray($this->_tableName, $columns, $data);
     $select = $this->_connection->select()->from($this->_tableName, array_keys($expected[0]))->order('column1');
     $result = $this->_connection->fetchAll($select);
     $this->assertEquals($expected, $result);
 }
Example #3
0
 /**
  * Get a list of host names for the supplied database adapter.
  *
  * @param \Varien_Db_Adapter_Interface $db
  * @return array
  */
 public function getByConnection(\Varien_Db_Adapter_Interface $db)
 {
     return $this->filterHostNames(array_map(function (array $row) {
         return $row['url'];
     }, $db->fetchAll($this->createSelect($db))));
 }
Example #4
0
 /**
  * Check is entity processed
  *
  * @param $type string category|product
  * @param $id   string
  * @return bool
  */
 function isEntityProcessed($type, $id)
 {
     $select = $this->_connection->select()->from($this->getEntityMigrationTable($type))->where('id = ?', $id);
     return (bool) count($this->_connection->fetchAll($select));
 }