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_Dataflow
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: * Dataflow Batch model
30: *
31: * @method Mage_Dataflow_Model_Resource_Batch _getResource()
32: * @method Mage_Dataflow_Model_Resource_Batch getResource()
33: * @method int getProfileId()
34: * @method Mage_Dataflow_Model_Batch setProfileId(int $value)
35: * @method int getStoreId()
36: * @method Mage_Dataflow_Model_Batch setStoreId(int $value)
37: * @method string getAdapter()
38: * @method Mage_Dataflow_Model_Batch setAdapter(string $value)
39: * @method string getCreatedAt()
40: * @method Mage_Dataflow_Model_Batch setCreatedAt(string $value)
41: *
42: * @category Mage
43: * @package Mage_Dataflow
44: * @author Magento Core Team <core@magentocommerce.com>
45: */
46: class Mage_Dataflow_Model_Batch extends Mage_Core_Model_Abstract
47: {
48: /**
49: * Lifetime abandoned batches
50: *
51: */
52: const LIFETIME = 86400;
53:
54: /**
55: * Field list collection array
56: *
57: * @var array
58: */
59: protected $_fieldList = array();
60:
61: /**
62: * Dataflow batch io adapter
63: *
64: * @var Mage_Dataflow_Model_Batch_Io
65: */
66: protected $_ioAdapter;
67:
68: /**
69: * Dataflow batch export model
70: *
71: * @var Mage_Dataflow_Model_Batch_Export
72: */
73: protected $_batchExport;
74:
75: /**
76: * Dataflow batch import model
77: *
78: * @var Mage_Dataflow_Model_Batch_Import
79: */
80: protected $_batchImport;
81:
82: /**
83: * Init model
84: *
85: */
86: protected function _construct()
87: {
88: $this->_init('dataflow/batch');
89: }
90:
91: /**
92: * Retrieve prepared field list
93: *
94: * @return array
95: */
96: public function getFieldList()
97: {
98: return $this->_fieldList;
99: }
100:
101: /**
102: * Parse row fields
103: *
104: * @param array $row
105: */
106: public function parseFieldList($row)
107: {
108: foreach ($row as $fieldName => $value) {
109: if (!in_array($fieldName, $this->_fieldList)) {
110: $this->_fieldList[$fieldName] = $fieldName;
111: }
112: }
113: unset($fieldName, $value, $row);
114: }
115:
116: /**
117: * Retrieve Io Adapter
118: *
119: * @return Mage_Dataflow_Model_Batch_Io
120: */
121: public function getIoAdapter()
122: {
123: if (is_null($this->_ioAdapter)) {
124: $this->_ioAdapter = Mage::getModel('dataflow/batch_io');
125: $this->_ioAdapter->init($this);
126: }
127: return $this->_ioAdapter;
128: }
129:
130: protected function _beforeSave()
131: {
132: if (is_null($this->getData('created_at'))) {
133: $this->setData('created_at', Mage::getSingleton('core/date')->gmtDate());
134: }
135: }
136:
137: protected function _afterDelete()
138: {
139: $this->getIoAdapter()->clear();
140: }
141:
142: /**
143: * Retrieve Batch export model
144: *
145: * @return Mage_Dataflow_Model_Batch_Export
146: */
147: public function getBatchExportModel()
148: {
149: if (is_null($this->_batchExport)) {
150: $object = Mage::getModel('dataflow/batch_export');
151: $object->setBatchId($this->getId());
152: $this->_batchExport = Varien_Object_Cache::singleton()->save($object);
153: }
154: return Varien_Object_Cache::singleton()->load($this->_batchExport);
155: }
156:
157: /**
158: * Retrieve Batch import model
159: *
160: * @return Mage_Dataflow_Model_Import_Export
161: */
162: public function getBatchImportModel()
163: {
164: if (is_null($this->_batchImport)) {
165: $object = Mage::getModel('dataflow/batch_import');
166: $object->setBatchId($this->getId());
167: $this->_batchImport = Varien_Object_Cache::singleton()->save($object);
168: }
169: return Varien_Object_Cache::singleton()->load($this->_batchImport);
170: }
171:
172: /**
173: * Run finish actions for Adapter
174: *
175: */
176: public function beforeFinish()
177: {
178: if ($this->getAdapter()) {
179: $adapter = Mage::getModel($this->getAdapter());
180: if (method_exists($adapter, 'finish')) {
181: $adapter->finish();
182: }
183: }
184: }
185:
186: /**
187: * Set additional params
188: * automatic convert to serialize data
189: *
190: * @param mixed $data
191: * @return Mage_Dataflow_Model_Batch_Abstract
192: */
193: public function setParams($data)
194: {
195: $this->setData('params', serialize($data));
196: return $this;
197: }
198:
199: /**
200: * Retrieve additional params
201: * return unserialize data
202: *
203: * @return mixed
204: */
205: public function getParams()
206: {
207: $data = $this->_data['params'];
208: $data = unserialize($data);
209: return $data;
210: }
211: }
212: