1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_Sales
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27:
28: /**
29: * Flat sales order payment collection
30: *
31: * @category Mage
32: * @package Mage_Sales
33: * @author Magento Core Team <core@magentocommerce.com>
34: */
35: class Mage_Sales_Model_Resource_Order_Item_Collection extends Mage_Sales_Model_Resource_Order_Collection_Abstract
36: {
37: /**
38: * Event prefix
39: *
40: * @var string
41: */
42: protected $_eventPrefix = 'sales_order_item_collection';
43:
44: /**
45: * Event object
46: *
47: * @var string
48: */
49: protected $_eventObject = 'order_item_collection';
50:
51: /**
52: * Order field for setOrderFilter
53: *
54: * @var string
55: */
56: protected $_orderField = 'order_id';
57:
58: /**
59: * Model initialization
60: *
61: */
62: protected function _construct()
63: {
64: $this->_init('sales/order_item');
65: }
66:
67: /**
68: * Assign parent items on after collection load
69: *
70: * @return Mage_Sales_Model_Resource_Order_Item_Collection
71: */
72: protected function _afterLoad()
73: {
74: parent::_afterLoad();
75: /**
76: * Assign parent items
77: */
78: foreach ($this as $item) {
79: if ($item->getParentItemId()) {
80: $item->setParentItem($this->getItemById($item->getParentItemId()));
81: }
82: }
83: return $this;
84: }
85:
86: /**
87: * Set random items order
88: *
89: * @return Mage_Sales_Model_Resource_Order_Item_Collection
90: */
91: public function setRandomOrder()
92: {
93: $this->getConnection()->orderRand($this->getSelect());
94: return $this;
95: }
96:
97: /**
98: * Set filter by item id
99: *
100: * @param mixed $item
101: * @return Mage_Sales_Model_Resource_Order_Item_Collection
102: */
103: public function addIdFilter($item)
104: {
105: if (is_array($item)) {
106: $this->addFieldToFilter('item_id', array('in'=>$item));
107: } elseif ($item instanceof Mage_Sales_Model_Order_Item) {
108: $this->addFieldToFilter('item_id', $item->getId());
109: } else {
110: $this->addFieldToFilter('item_id', $item);
111: }
112: return $this;
113: }
114:
115: /**
116: * Filter collection by specified product types
117: *
118: * @param array $typeIds
119: * @return Mage_Sales_Model_Resource_Order_Item_Collection
120: */
121: public function filterByTypes($typeIds)
122: {
123: $this->addFieldToFilter('product_type', array('in' => $typeIds));
124: return $this;
125: }
126:
127: /**
128: * Filter collection by parent_item_id
129: *
130: * @param int $parentId
131: * @return Mage_Sales_Model_Resource_Order_Item_Collection
132: */
133: public function filterByParent($parentId = null)
134: {
135: if (empty($parentId)) {
136: $this->addFieldToFilter('parent_item_id', array('null' => true));
137: } else {
138: $this->addFieldToFilter('parent_item_id', $parentId);
139: }
140: return $this;
141: }
142: }
143: