/** * 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; }
/** * @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); }
/** * 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)))); }
/** * 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)); }