Mage_CatalogIndex_Model_Data_Abstract Class Reference

Inheritance diagram for Mage_CatalogIndex_Model_Data_Abstract:

Mage_Core_Model_Abstract Varien_Object Mage_CatalogIndex_Model_Data_Configurable Mage_CatalogIndex_Model_Data_Grouped Mage_CatalogIndex_Model_Data_Simple Mage_Bundle_Model_CatalogIndex_Data_Bundle Mage_CatalogIndex_Model_Data_Virtual Mage_Downloadable_Model_CatalogIndex_Data_Downloadable

List of all members.

Public Member Functions

 getChildProductIds ($store, $parentIds)
 getParentProductIds ($store, $childIds)
 getFinalPrice ($product, $store, $group)
 getMinimalPrice ($products, $store)
 getTaxClassId ($productId, $store)
 getTierPrices ($products, $store)
 getAttributeData ($products, $attributes, $store)
 getTypeCode ()
 areChildrenIndexable ($type)
 getTypeInstance ()

Public Attributes

const LINK_GET_CHILDREN = 1
const LINK_GET_PARENTS = 1

Protected Member Functions

 _construct ()
 fetchLinkInformation ($store, $settings, $type, $suppliedId)
 _getLinkSettings ()

Protected Attributes

 $_typeInstance
 $_haveChildren
 $_haveParents = true


Detailed Description

Definition at line 35 of file Abstract.php.


Member Function Documentation

_construct (  )  [protected]

Initialize abstract resource model

Reimplemented from Varien_Object.

Reimplemented in Mage_CatalogIndex_Model_Data_Configurable, and Mage_CatalogIndex_Model_Data_Grouped.

Definition at line 69 of file Abstract.php.

00070     {
00071         $this->_init('catalogindex/data_abstract');
00072     }

_getLinkSettings (  )  [protected]

Get child link table and field settings

Returns:
mixed

Reimplemented in Mage_Bundle_Model_CatalogIndex_Data_Bundle, Mage_CatalogIndex_Model_Data_Configurable, and Mage_CatalogIndex_Model_Data_Grouped.

Definition at line 269 of file Abstract.php.

00270     {
00271         return false;
00272     }

areChildrenIndexable ( type  ) 

Returns if type supports children of the specified type

Parameters:
int $type
Returns:
bool

Definition at line 280 of file Abstract.php.

00281     {
00282         if (!$this->_haveChildren || !isset($this->_haveChildren[$type]) || !$this->_haveChildren[$type]) {
00283             return false;
00284         }
00285         return true;
00286     }

fetchLinkInformation ( store,
settings,
type,
suppliedId 
) [protected]

Returns an array of product children/parents

Parameters:
Mage_Core_Model_Store $store
array $settings
int $type
int $suppliedId

Definition at line 122 of file Abstract.php.

00123     {
00124         switch ($type) {
00125             case self::LINK_GET_CHILDREN:
00126                 $whereField = $settings['parent_field'];
00127                 $idField = $settings['child_field'];
00128                 break;
00129 
00130             case self::LINK_GET_PARENTS:
00131                 $idField = $settings['parent_field'];
00132                 $whereField = $settings['child_field'];
00133                 break;
00134         }
00135 
00136         $additional = array();
00137         if (isset($settings['additional']) && is_array($settings['additional'])) {
00138             $additional = $settings['additional'];
00139         }
00140 
00141         return $this->getResource()->fetchLinkInformation($store->getId(), $settings['table'], $idField, $whereField, $suppliedId, $additional);
00142     }

getAttributeData ( products,
attributes,
store 
)

Retreive specified attribute data for specified products from specified store

Parameters:
array $products
array $attributes
Mage_Core_Model_Store $store

Definition at line 249 of file Abstract.php.

00250     {
00251         return $this->getResource()->getAttributeData($products, $attributes, $store->getId());
00252     }

getChildProductIds ( store,
parentIds 
)

Return all children ids

Parameters:
Mage_Core_Model_Store $store
int $parentId
Returns:
mixed

Definition at line 81 of file Abstract.php.

00082     {
00083         if (!$this->_haveChildren) {
00084             return false;
00085         }
00086 
00087         if (!$this->_getLinkSettings()) {
00088             return false;
00089         }
00090 
00091         return $this->fetchLinkInformation($store, $this->_getLinkSettings(), self::LINK_GET_CHILDREN, $parentIds);
00092     }

getFinalPrice ( product,
store,
group 
)

Fetch final price for product

Parameters:
int $product
Mage_Core_Model_Store $store
Mage_Customer_Model_Group $group
Returns:
float

Reimplemented in Mage_CatalogIndex_Model_Data_Grouped.

Definition at line 152 of file Abstract.php.

00153     {
00154         $basePrice = $specialPrice = $specialPriceFrom = $specialPriceTo = null;
00155         $priceId = Mage::getSingleton('eav/entity_attribute')->getIdByCode('catalog_product', 'price');
00156         $specialPriceId = Mage::getSingleton('eav/entity_attribute')->getIdByCode('catalog_product', 'special_price');
00157         $specialPriceFromId = Mage::getSingleton('eav/entity_attribute')->getIdByCode('catalog_product', 'special_from_date');
00158         $specialPriceToId = Mage::getSingleton('eav/entity_attribute')->getIdByCode('catalog_product', 'special_to_date');
00159 
00160         $attributes = array($priceId, $specialPriceId, $specialPriceFromId, $specialPriceToId);
00161 
00162         $productData = $this->getAttributeData($product, $attributes, $store);
00163         foreach ($productData as $row) {
00164             switch ($row['attribute_id']) {
00165                 case $priceId:
00166                     $basePrice = $row['value'];
00167                 break;
00168                 case $specialPriceId:
00169                     $specialPrice = $row['value'];
00170                 break;
00171                 case $specialPriceFromId:
00172                     $specialPriceFrom = $row['value'];
00173                 break;
00174                 case $specialPriceToId:
00175                     $specialPriceTo = $row['value'];
00176                 break;
00177             }
00178         }
00179 
00180         $finalPrice = Mage::getSingleton('catalog/product_type')
00181             ->priceFactory($this->getTypeCode())
00182             ->calculatePrice($basePrice, $specialPrice, $specialPriceFrom, $specialPriceTo, false, $store, $group, $product);
00183 
00184         return $finalPrice;
00185     }

getMinimalPrice ( products,
store 
)

Return minimal prices for specified products

Parameters:
array $products
Mage_Core_Model_Store $store
Returns:
array

Definition at line 194 of file Abstract.php.

00195     {
00196         $priceAttributes = array(
00197             Mage::getSingleton('eav/entity_attribute')->getIdByCode('catalog_product', 'tier_price'),
00198             Mage::getSingleton('eav/entity_attribute')->getIdByCode('catalog_product', 'price'));
00199 
00200         $data = $this->getResource()->getMinimalPrice($products, $priceAttributes, $store->getId());
00201 
00202         $this->setMinimalPriceData($data);
00203         $eventData = array('indexer'=>$this, 'product_ids'=>$products, 'store'=>$store);
00204         Mage::dispatchEvent('catalogindex_get_minimal_price', $eventData);
00205         $data = $this->getMinimalPriceData();
00206 
00207         return $data;
00208     }

getParentProductIds ( store,
childIds 
)

Return all parent ids

Parameters:
Mage_Core_Model_Store $store
int $childId
Returns:
mixed

Definition at line 101 of file Abstract.php.

00102     {
00103         if (!$this->_haveParents) {
00104             return false;
00105         }
00106 
00107         if (!$this->_getLinkSettings()) {
00108             return false;
00109         }
00110 
00111         return $this->fetchLinkInformation($store, $this->_getLinkSettings(), self::LINK_GET_PARENTS, $childIds);
00112     }

getTaxClassId ( productId,
store 
)

Get tax class id for a product

Parameters:
int $productId
Mage_Core_Model_Store $store
Returns:
int

Definition at line 217 of file Abstract.php.

00218     {
00219         $attributeId = Mage::getSingleton('eav/entity_attribute')->getIdByCode('catalog_product', 'tax_class_id');
00220         $taxClassId  = $this->getResource()->getAttributeData(array($productId), array($attributeId), $store->getId());
00221         if (is_array($taxClassId) && isset($taxClassId[0]['value'])) {
00222             $taxClassId = $taxClassId[0]['value'];
00223         }
00224         else {
00225             $taxClassId = 0;
00226         }
00227         return $taxClassId;
00228     }

getTierPrices ( products,
store 
)

Return tier data for specified products in specified store

Parameters:
array $products
Mage_Core_Model_Store $store
Returns:
mixed

Definition at line 237 of file Abstract.php.

00238     {
00239         return $this->getResource()->getTierPrices($products, $store->getWebsiteId());
00240     }

getTypeCode (  ) 

Retreive product type code

Returns:
string

Reimplemented in Mage_Bundle_Model_CatalogIndex_Data_Bundle, Mage_CatalogIndex_Model_Data_Configurable, Mage_CatalogIndex_Model_Data_Grouped, Mage_CatalogIndex_Model_Data_Simple, Mage_CatalogIndex_Model_Data_Virtual, and Mage_Downloadable_Model_CatalogIndex_Data_Downloadable.

Definition at line 259 of file Abstract.php.

00260     {
00261         Mage::throwException('Define custom data retreiver with getTypeCode function');
00262     }

getTypeInstance (  ) 

Retrieve Product Type Instance

Returns:
Mage_Catalog_Model_Product_Type_Abstract

Definition at line 293 of file Abstract.php.

00294     {
00295         if (is_null($this->_typeInstance)) {
00296             $product = new Varien_Object();
00297             $product->setTypeId($this->getTypeCode());
00298             $this->_typeInstance = Mage::getSingleton('catalog/product_type')
00299                 ->factory($product, true);
00300         }
00301         return $this->_typeInstance;
00302     }


Member Data Documentation

$_haveChildren [protected]

$_haveParents = true [protected]

$_typeInstance [protected]

Definition at line 42 of file Abstract.php.

const LINK_GET_CHILDREN = 1

Definition at line 62 of file Abstract.php.

const LINK_GET_PARENTS = 1

Definition at line 63 of file Abstract.php.


The documentation for this class was generated from the following file:

Generated on Sat Jul 4 17:23:46 2009 for Magento by  doxygen 1.5.8