00001 <?php 00002 /** 00003 * Magento 00004 * 00005 * NOTICE OF LICENSE 00006 * 00007 * This source file is subject to the Open Software License (OSL 3.0) 00008 * that is bundled with this package in the file LICENSE.txt. 00009 * It is also available through the world-wide-web at this URL: 00010 * http://opensource.org/licenses/osl-3.0.php 00011 * If you did not receive a copy of the license and are unable to 00012 * obtain it through the world-wide-web, please send an email 00013 * to license@magentocommerce.com so we can send you a copy immediately. 00014 * 00015 * DISCLAIMER 00016 * 00017 * Do not edit or add to this file if you wish to upgrade Magento to newer 00018 * versions in the future. If you wish to customize Magento for your 00019 * needs please refer to http://www.magentocommerce.com for more information. 00020 * 00021 * @category Mage 00022 * @package Mage_Sales 00023 * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com) 00024 * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) 00025 */ 00026 00027 /** 00028 * Order order item collection 00029 * 00030 * @category Mage 00031 * @package Mage_Sales 00032 * @author Magento Core Team <core@magentocommerce.com> 00033 */ 00034 class Mage_Sales_Model_Mysql4_Order_Item_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract 00035 { 00036 public function _construct() 00037 { 00038 $this->_init('sales/order_item'); 00039 } 00040 00041 protected function _afterLoad() 00042 { 00043 parent::_afterLoad(); 00044 /** 00045 * Assign parent items 00046 */ 00047 foreach ($this as $item) { 00048 if ($item->getParentItemId()) { 00049 $item->setParentItem($this->getItemById($item->getParentItemId())); 00050 } 00051 } 00052 return $this; 00053 } 00054 00055 /** 00056 * Set filter by order id 00057 * 00058 * @param mixed $order 00059 * @return Mage_Sales_Model_Mysql4_Order_Item_Collection 00060 */ 00061 public function setOrderFilter($order) 00062 { 00063 if ($order instanceof Mage_Sales_Model_Order) { 00064 $orderId = $order->getId(); 00065 } 00066 else { 00067 $orderId = $order; 00068 } 00069 $this->addFieldToFilter('order_id', $orderId); 00070 return $this; 00071 } 00072 00073 public function setRandomOrder() 00074 { 00075 $this->setOrder('RAND()'); 00076 return $this; 00077 } 00078 00079 /** 00080 * Set filter by item id 00081 * 00082 * @param mixed $item 00083 * @return Mage_Sales_Model_Mysql4_Order_Item_Collection 00084 */ 00085 public function addIdFilter($item) 00086 { 00087 if (is_array($item)) { 00088 $this->addFieldToFilter('item_id', array('in'=>$item)); 00089 } elseif ($item instanceof Mage_Sales_Model_Order_Item) { 00090 $this->addFieldToFilter('item_id', $item->getId()); 00091 } else { 00092 $this->addFieldToFilter('item_id', $item); 00093 } 00094 return $this; 00095 } 00096 00097 /** 00098 * Filter collection by specified product types 00099 * 00100 * @param array $typeIds 00101 * @return Mage_Sales_Model_Mysql4_Order_Item_Collection 00102 */ 00103 public function filterByTypes($typeIds) 00104 { 00105 $this->addFieldToFilter('product_type', array('in' => $typeIds)); 00106 return $this; 00107 } 00108 00109 /** 00110 * Filter collection by parent_item_id 00111 * 00112 * @param int $parentId 00113 * @return Mage_Sales_Model_Mysql4_Order_Item_Collection 00114 */ 00115 public function filterByParent($parentId = null) 00116 { 00117 if (empty($parentId)) { 00118 $this->addFieldToFilter('parent_item_id', array('null' => true)); 00119 } 00120 else { 00121 $this->addFieldToFilter('parent_item_id', $parentId); 00122 } 00123 return $this; 00124 } 00125 }