/** * Add price columns for catalog product flat table * * @param Varien_Object $object * @return Mage_CatalogIndex_Model_Mysql4_Indexer */ public function prepareCatalogProductFlatColumns(Varien_Object $object) { $columns = $object->getColumns(); foreach (Mage::getSingleton('catalogindex/retreiver')->getCustomerGroups() as $group) { $columnName = 'display_price_group_' . $group->getId(); $columns[$columnName] = array('type' => 'decimal(12,4)', 'unsigned' => false, 'is_null' => true, 'default' => null, 'extra' => null); } $object->setColumns($columns); return $this; }
/** * Retrieve catalog product flat table columns array * * @return array */ public function getFlatColumns() { if ($this->_columns === null) { if (Mage::helper('core')->useDbCompatibleMode()) { $this->_columns = $this->_getFlatColumnsOldDefinition(); } else { $this->_columns = $this->_getFlatColumnsDdlDefinition(); } foreach ($this->getAttributes() as $attribute) { /** @var $attribute Mage_Eav_Model_Entity_Attribute_Abstract */ $columns = $attribute->setFlatAddFilterableAttributes($this->getFlatHelper()->isAddFilterableAttributes())->setFlatAddChildData($this->getFlatHelper()->isAddChildData())->getFlatColumns(); if ($columns !== null) { $this->_columns = array_merge($this->_columns, $columns); } } $columnsObject = new Varien_Object(); $columnsObject->setColumns($this->_columns); Mage::dispatchEvent('catalog_product_flat_prepare_columns', array('columns' => $columnsObject)); $this->_columns = $columnsObject->getColumns(); } return $this->_columns; }
/** * Retrieve catalog product flat table columns array * * @return array */ public function getFlatColumns() { if (is_null($this->_columns)) { $this->_columns = array(); $this->_columns['entity_id'] = array('type' => 'int(10)', 'unsigned' => true, 'is_null' => false, 'default' => null, 'extra' => 'auto_increment'); if ($this->getFlatHelper()->isAddChildData()) { $this->_columns['child_id'] = array('type' => 'int(10)', 'unsigned' => true, 'is_null' => true, 'default' => null, 'extra' => null); $this->_columns['is_child'] = array('type' => 'tinyint(1)', 'unsigned' => true, 'is_null' => false, 'default' => 0, 'extra' => null); } $this->_columns['attribute_set_id'] = array('type' => 'smallint(5)', 'unsigned' => true, 'is_null' => false, 'default' => 0, 'extra' => null); $this->_columns['type_id'] = array('type' => 'varchar(32)', 'unsigned' => false, 'is_null' => false, 'default' => 'simple', 'extra' => null); foreach ($this->getAttributes() as $attribute) { /* @var $attribute Mage_Eav_Model_Entity_Attribute */ $columns = $attribute->setFlatAddFilterableAttributes($this->getFlatHelper()->isAddFilterableAttributes())->setFlatAddChildData($this->getFlatHelper()->isAddChildData())->getFlatColumns(); if (is_null($columns)) { continue; } $this->_columns = array_merge($this->_columns, $columns); } $columnsObject = new Varien_Object(); $columnsObject->setColumns($this->_columns); Mage::dispatchEvent('catalog_product_flat_prepare_columns', array('columns' => $columnsObject)); $this->_columns = $columnsObject->getColumns(); } return $this->_columns; }
protected function _getCustomColumns() { if (is_null($this->_customColumns)) { // Initialize custom columns from the different available sources $xmlColumns = Mage::getSingleton('customgrid/grid_type')->getTypeCustomColumnsByCode($this->getCode()); $response = new Varien_Object(array('columns' => array())); Mage::dispatchEvent('blcg_grid_type_additional_columns', array('response' => $response, 'type_model' => $this)); $this->_customColumns = array_filter(array_merge($this->_getAdditionalCustomColumns(), $xmlColumns, $response->getColumns()), create_function('$m', 'return ($m instanceof BL_CustomGrid_Model_Custom_Column_Abstract);')); uasort($this->_customColumns, array($this, '_sortCustomColumns')); // Initialize corresponding groups $defaultGroupId = 1; $currentGroupId = 2; $this->_columnsGroups = array(); foreach ($this->_customColumns as $column) { if ($column->hasGroup()) { if (!($groupId = array_search($column->getGroup(), $this->_columnsGroups))) { $groupId = 'g' . $currentGroupId++; $this->_columnsGroups[$groupId] = $column->getGroup(); } $column->setGroupId($groupId); } else { $column->setGroupId('g' . $defaultGroupId); } } uasort($this->_columnsGroups, 'strcmp'); $this->_columnsGroups['g1'] = Mage::helper('customgrid')->__('Others'); $this->_blocksColumns = array(); } return $this->_customColumns; }