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: * Convert column mapper
30: *
31: * @category Mage
32: * @package Mage_Dataflow
33: * @author Magento Core Team <core@magentocommerce.com>
34: */
35: class Mage_Dataflow_Model_Convert_Mapper_Column extends Mage_Dataflow_Model_Convert_Mapper_Abstract
36: {
37: /**
38: * Dataflow batch model
39: *
40: * @var Mage_Dataflow_Model_Batch
41: */
42: protected $_batch;
43:
44: /**
45: * Dataflow batch export model
46: *
47: * @var Mage_Dataflow_Model_Batch_Export
48: */
49: protected $_batchExport;
50:
51: /**
52: * Dataflow batch import model
53: *
54: * @var Mage_Dataflow_Model_Batch_Import
55: */
56: protected $_batchImport;
57:
58: /**
59: * Retrieve Batch model singleton
60: *
61: * @return Mage_Dataflow_Model_Batch
62: */
63: public function getBatchModel()
64: {
65: if (is_null($this->_batch)) {
66: $this->_batch = Mage::getSingleton('dataflow/batch');
67: }
68: return $this->_batch;
69: }
70:
71: /**
72: * Retrieve Batch export model
73: *
74: * @return Mage_Dataflow_Model_Batch_Export
75: */
76: public function getBatchExportModel()
77: {
78: if (is_null($this->_batchExport)) {
79: $object = Mage::getModel('dataflow/batch_export');
80: $this->_batchExport = Varien_Object_Cache::singleton()->save($object);
81: }
82: return Varien_Object_Cache::singleton()->load($this->_batchExport);
83: }
84:
85: /**
86: * Retrieve Batch import model
87: *
88: * @return Mage_Dataflow_Model_Import_Export
89: */
90: public function getBatchImportModel()
91: {
92: if (is_null($this->_batchImport)) {
93: $object = Mage::getModel('dataflow/batch_import');
94: $this->_batchImport = Varien_Object_Cache::singleton()->save($object);
95: }
96: return Varien_Object_Cache::singleton()->load($this->_batchImport);
97: }
98:
99: public function map()
100: {
101: $batchModel = $this->getBatchModel();
102: $batchExport = $this->getBatchExportModel();
103:
104: $batchExportIds = $batchExport
105: ->setBatchId($this->getBatchModel()->getId())
106: ->getIdCollection();
107:
108: $onlySpecified = (bool)$this->getVar('_only_specified') === true;
109:
110: if (!$onlySpecified) {
111: foreach ($batchExportIds as $batchExportId) {
112: $batchExport->load($batchExportId);
113: $batchModel->parseFieldList($batchExport->getBatchData());
114: }
115:
116: return $this;
117: }
118:
119: if ($this->getVar('map') && is_array($this->getVar('map'))) {
120: $attributesToSelect = $this->getVar('map');
121: }
122: else {
123: $attributesToSelect = array();
124: }
125:
126: if (!$attributesToSelect) {
127: $this->getBatchExportModel()
128: ->setBatchId($this->getBatchModel()->getId())
129: ->deleteCollection();
130:
131: throw new Exception(Mage::helper('dataflow')->__('Error in field mapping: field list for mapping is not defined.'));
132: }
133:
134: foreach ($batchExportIds as $batchExportId) {
135: $batchExport = $this->getBatchExportModel()->load($batchExportId);
136: $row = $batchExport->getBatchData();
137:
138: $newRow = array();
139: foreach ($attributesToSelect as $field => $mapField) {
140: $newRow[$mapField] = isset($row[$field]) ? $row[$field] : null;
141: }
142:
143: $batchExport->setBatchData($newRow)
144: ->setStatus(2)
145: ->save();
146: $this->getBatchModel()->parseFieldList($batchExport->getBatchData());
147: }
148:
149: return $this;
150: }
151: }
152: