1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26:
27:
28: 29: 30: 31: 32: 33: 34:
35: abstract class Mage_Dataflow_Model_Convert_Container_Abstract
36: implements Mage_Dataflow_Model_Convert_Container_Interface
37: {
38: protected $_batchParams = array();
39:
40: protected $_vars;
41:
42: protected $_profile;
43:
44: protected $_action;
45:
46: protected $_data;
47:
48: protected $_position;
49:
50: public function getVar($key, $default=null)
51: {
52: if (!isset($this->_vars[$key]) || (!is_array($this->_vars[$key]) && strlen($this->_vars[$key]) == 0)) {
53: return $default;
54: }
55: return $this->_vars[$key];
56: }
57:
58: public function getVars()
59: {
60: return $this->_vars;
61: }
62:
63: public function setVar($key, $value=null)
64: {
65: if (is_array($key) && is_null($value)) {
66: $this->_vars = $key;
67: } else {
68: $this->_vars[$key] = $value;
69: }
70: return $this;
71: }
72:
73: public function getAction()
74: {
75: return $this->_action;
76: }
77:
78: public function setAction(Mage_Dataflow_Model_Convert_Action_Interface $action)
79: {
80: $this->_action = $action;
81: return $this;
82: }
83:
84: public function getProfile()
85: {
86: return $this->_profile;
87: }
88:
89: public function setProfile(Mage_Dataflow_Model_Convert_Profile_Interface $profile)
90: {
91: $this->_profile = $profile;
92: return $this;
93: }
94:
95: public function getData()
96: {
97: if (is_null($this->_data) && $this->getProfile()) {
98: $this->_data = $this->getProfile()->getContainer()->getData();
99: }
100: return $this->_data;
101: }
102:
103: public function setData($data)
104: {
105: if ($this->getProfile()) {
106: $this->getProfile()->getContainer()->setData($data);
107: }
108: $this->_data = $data;
109: return $this;
110: }
111:
112: public function validateDataString($data=null)
113: {
114: if (is_null($data)) {
115: $data = $this->getData();
116: }
117: if (!is_string($data)) {
118: $this->addException("Invalid data type, expecting string.", Mage_Dataflow_Model_Convert_Exception::FATAL);
119: }
120: return true;
121: }
122:
123: public function validateDataArray($data=null)
124: {
125: if (is_null($data)) {
126: $data = $this->getData();
127: }
128: if (!is_array($data)) {
129: $this->addException("Invalid data type, expecting array.", Mage_Dataflow_Model_Convert_Exception::FATAL);
130: }
131: return true;
132: }
133:
134: public function validateDataGrid($data=null)
135: {
136: if (is_null($data)) {
137: $data = $this->getData();
138: }
139: if (!is_array($data) || !is_array(current($data))) {
140: if (count($data)==0) {
141: return true;
142: }
143: $this->addException("Invalid data type, expecting 2D grid array.", Mage_Dataflow_Model_Convert_Exception::FATAL);
144: }
145: return true;
146: }
147:
148: public function getGridFields($grid)
149: {
150: $fields = array();
151: foreach ($grid as $i=>$row) {
152: foreach ($row as $fieldName=>$data) {
153: if (!in_array($fieldName, $fields)) {
154: $fields[] = $fieldName;
155: }
156: }
157: }
158: return $fields;
159: }
160:
161: public function addException($error, $level=null)
162: {
163: $e = new Mage_Dataflow_Model_Convert_Exception($error);
164: $e->setLevel(!is_null($level) ? $level : Mage_Dataflow_Model_Convert_Exception::NOTICE);
165: $e->setContainer($this);
166: $e->setPosition($this->getPosition());
167:
168: if ($this->getProfile()) {
169: $this->getProfile()->addException($e);
170: }
171:
172: return $e;
173: }
174:
175: public function getPosition()
176: {
177: return $this->_position;
178: }
179:
180: public function setPosition($position)
181: {
182: $this->_position = $position;
183: return $this;
184: }
185:
186: public function setBatchParams($data)
187: {
188: if (is_array($data)) {
189: $this->_batchParams = $data;
190: }
191: return $this;
192: }
193:
194: public function getBatchParams($key = null)
195: {
196: if (!empty($key)) {
197: return isset($this->_batchParams[$key]) ? $this->_batchParams[$key] : null;
198: }
199: return $this->_batchParams;
200: }
201: }
202: