Public Member Functions | |
getRelationInfo () | |
getChildrenIds ($parentId, $required=true) | |
getParentIdsByChild ($childId) | |
getAssociatedProducts ($product=null) | |
addStatusFilter ($status, $product=null) | |
setSaleableStatus ($product=null) | |
getStatusFilters ($product=null) | |
getAssociatedProductIds ($product=null) | |
getAssociatedProductCollection ($product=null) | |
isSalable ($product=null) | |
save ($product=null) | |
prepareForCart (Varien_Object $buyRequest, $product=null) | |
Public Attributes | |
const | TYPE_CODE = 'grouped' |
Protected Attributes | |
$_keyAssociatedProducts = '_cache_instance_associated_products' | |
$_keyAssociatedProductIds = '_cache_instance_associated_product_ids' | |
$_keyStatusFilters = '_cache_instance_status_filters' | |
$_isComposite = true |
Definition at line 34 of file Grouped.php.
addStatusFilter | ( | $ | status, | |
$ | product = null | |||
) |
Add status filter to collection
int | $status | |
Mage_Catalog_Model_Product | $product |
Definition at line 149 of file Grouped.php.
00150 { 00151 $statusFilters = $this->getProduct($product)->getData($this->_keyStatusFilters); 00152 if (!is_array($statusFilters)) { 00153 $statusFilters = array(); 00154 } 00155 00156 $statusFilters[] = $status; 00157 $this->getProduct($product)->setData($this->_keyStatusFilters, $statusFilters); 00158 00159 return $this; 00160 }
getAssociatedProductCollection | ( | $ | product = null |
) |
Retrieve collection of associated products
Mage_Catalog_Model_Product | $product |
Definition at line 216 of file Grouped.php.
00217 { 00218 $collection = $this->getProduct($product)->getLinkInstance()->useGroupedLinks() 00219 ->getProductCollection() 00220 ->setFlag('require_stock_items', true) 00221 ->setIsStrongMode(); 00222 $collection->setProduct($this->getProduct($product)); 00223 return $collection; 00224 }
getAssociatedProductIds | ( | $ | product = null |
) |
Retrieve related products identifiers
Mage_Catalog_Model_Product | $product |
Definition at line 198 of file Grouped.php.
00199 { 00200 if (!$this->getProduct($product)->hasData($this->_keyAssociatedProductIds)) { 00201 $associatedProductIds = array(); 00202 foreach ($this->getAssociatedProducts($product) as $product) { 00203 $associatedProductIds[] = $product->getId(); 00204 } 00205 $this->getProduct($product)->setData($this->_keyAssociatedProductIds, $associatedProductIds); 00206 } 00207 return $this->getProduct($product)->getData($this->_keyAssociatedProductIds); 00208 }
getAssociatedProducts | ( | $ | product = null |
) |
Retrieve array of associated products
Mage_Catalog_Model_Product | $product |
Definition at line 117 of file Grouped.php.
00118 { 00119 if (!$this->getProduct($product)->hasData($this->_keyAssociatedProducts)) { 00120 $associatedProducts = array(); 00121 00122 if (!Mage::app()->getStore()->isAdmin()) { 00123 $this->setSaleableStatus($product); 00124 } 00125 00126 $collection = $this->getAssociatedProductCollection($product) 00127 ->addAttributeToSelect('*') 00128 ->addFilterByRequiredOptions() 00129 ->setPositionOrder() 00130 ->addStoreFilter($this->getStoreFilter($product)) 00131 ->addAttributeToFilter('status', array('in' => $this->getStatusFilters($product))); 00132 00133 foreach ($collection as $product) { 00134 $associatedProducts[] = $product; 00135 } 00136 00137 $this->getProduct($product)->setData($this->_keyAssociatedProducts, $associatedProducts); 00138 } 00139 return $this->getProduct($product)->getData($this->_keyAssociatedProducts); 00140 }
getChildrenIds | ( | $ | parentId, | |
$ | required = true | |||
) |
Retrieve Required children ids Return grouped array, ex array( group => array(ids) )
int | $parentId | |
bool | $required |
Reimplemented from Mage_Catalog_Model_Product_Type_Abstract.
Definition at line 91 of file Grouped.php.
00092 { 00093 return Mage::getResourceSingleton('catalog/product_link') 00094 ->getChildrenIds($parentId, 00095 Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED); 00096 }
getParentIdsByChild | ( | $ | childId | ) |
Retrieve parent ids array by requered child
int|array | $childId |
Reimplemented from Mage_Catalog_Model_Product_Type_Abstract.
Definition at line 104 of file Grouped.php.
00105 { 00106 return Mage::getResourceSingleton('catalog/product_link') 00107 ->getParentIdsByChild($childId, 00108 Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED); 00109 }
getRelationInfo | ( | ) |
Return relation info about used products
Reimplemented from Mage_Catalog_Model_Product_Type_Abstract.
Definition at line 71 of file Grouped.php.
00072 { 00073 $info = new Varien_Object(); 00074 $info->setTable('catalog/product_link') 00075 ->setParentFieldName('product_id') 00076 ->setChildFieldName('linked_product_id') 00077 ->setWhere('link_type_id=' . Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED); 00078 return $info; 00079 }
getStatusFilters | ( | $ | product = null |
) |
Return all assigned status filters
Mage_Catalog_Model_Product | $product |
Definition at line 181 of file Grouped.php.
00182 { 00183 if (!$this->getProduct($product)->hasData($this->_keyStatusFilters)) { 00184 return array( 00185 Mage_Catalog_Model_Product_Status::STATUS_ENABLED, 00186 Mage_Catalog_Model_Product_Status::STATUS_DISABLED 00187 ); 00188 } 00189 return $this->getProduct($product)->getData($this->_keyStatusFilters); 00190 }
isSalable | ( | $ | product = null |
) |
Check is product available for sale
Mage_Catalog_Model_Product | $product |
Reimplemented from Mage_Catalog_Model_Product_Type_Abstract.
Definition at line 232 of file Grouped.php.
00233 { 00234 $salable = parent::isSalable($product); 00235 if (!is_null($salable)) { 00236 return $salable; 00237 } 00238 00239 $salable = false; 00240 foreach ($this->getAssociatedProducts($product) as $associatedProduct) { 00241 $salable = $salable || $associatedProduct->isSalable(); 00242 } 00243 return $salable; 00244 }
prepareForCart | ( | Varien_Object $ | buyRequest, | |
$ | product = null | |||
) |
Initialize product(s) for add to cart process
Varien_Object | $buyRequest | |
Mage_Catalog_Model_Product | $product |
Reimplemented from Mage_Catalog_Model_Product_Type_Abstract.
Definition at line 266 of file Grouped.php.
00267 { 00268 $productsInfo = $buyRequest->getSuperGroup(); 00269 if (!empty($productsInfo) && is_array($productsInfo)) { 00270 $products = array(); 00271 $associatedProducts = $this->getAssociatedProducts($product); 00272 if ($associatedProducts) { 00273 foreach ($associatedProducts as $subProduct) { 00274 if(isset($productsInfo[$subProduct->getId()])) { 00275 $qty = $productsInfo[$subProduct->getId()]; 00276 if (!empty($qty)) { 00277 00278 $_result = $subProduct->getTypeInstance(true) 00279 ->prepareForCart($buyRequest, $subProduct); 00280 if (is_string($_result) && !is_array($_result)) { 00281 return $_result; 00282 } 00283 00284 if (!isset($_result[0])) { 00285 return Mage::helper('checkout')->__('Can not add item to shopping cart'); 00286 } 00287 00288 $_result[0]->setCartQty($qty); 00289 $_result[0]->addCustomOption('product_type', self::TYPE_CODE, $this->getProduct($product)); 00290 $_result[0]->addCustomOption('info_buyRequest', 00291 serialize(array( 00292 'super_product_config' => array( 00293 'product_type' => self::TYPE_CODE, 00294 'product_id' => $this->getProduct($product)->getId() 00295 ) 00296 )) 00297 ); 00298 $products[] = $_result[0]; 00299 } 00300 } 00301 } 00302 } 00303 if (count($products)) { 00304 return $products; 00305 } 00306 } 00307 return Mage::helper('catalog')->__('Please specify the product(s) quantity'); 00308 }
save | ( | $ | product = null |
) |
Save type related data
Mage_Catalog_Model_Product | $product |
Reimplemented from Mage_Catalog_Model_Product_Type_Abstract.
Definition at line 252 of file Grouped.php.
00253 { 00254 parent::save($product); 00255 $this->getProduct($product)->getLinkInstance()->saveGroupedLinks($this->getProduct($product)); 00256 return $this; 00257 }
setSaleableStatus | ( | $ | product = null |
) |
Set only saleable filter
Mage_Catalog_Model_Product | $product |
Definition at line 168 of file Grouped.php.
00169 { 00170 $this->getProduct($product)->setData($this->_keyStatusFilters, 00171 Mage::getSingleton('catalog/product_status')->getSaleableStatusIds()); 00172 return $this; 00173 }
$_isComposite = true [protected] |
Reimplemented from Mage_Catalog_Model_Product_Type_Abstract.
Definition at line 64 of file Grouped.php.
$_keyAssociatedProductIds = '_cache_instance_associated_product_ids' [protected] |
Definition at line 50 of file Grouped.php.
$_keyAssociatedProducts = '_cache_instance_associated_products' [protected] |
Definition at line 43 of file Grouped.php.
$_keyStatusFilters = '_cache_instance_status_filters' [protected] |
Definition at line 57 of file Grouped.php.
const TYPE_CODE = 'grouped' |
Definition at line 36 of file Grouped.php.