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: class Mage_CatalogInventory_Helper_Minsaleqty
31: {
32: 33: 34: 35: 36: 37:
38: protected function _fixQty($qty)
39: {
40: return (!empty($qty) ? (float)$qty : null);
41: }
42:
43: 44: 45: 46: 47: 48:
49: protected function _serializeValue($value)
50: {
51: if (is_numeric($value)) {
52: $data = (float)$value;
53: return (string)$data;
54: } else if (is_array($value)) {
55: $data = array();
56: foreach ($value as $groupId => $qty) {
57: if (!array_key_exists($groupId, $data)) {
58: $data[$groupId] = $this->_fixQty($qty);
59: }
60: }
61: if (count($data) == 1 && array_key_exists(Mage_Customer_Model_Group::CUST_GROUP_ALL, $data)) {
62: return (string)$data[Mage_Customer_Model_Group::CUST_GROUP_ALL];
63: }
64: return serialize($data);
65: } else {
66: return '';
67: }
68: }
69:
70: 71: 72: 73: 74: 75:
76: protected function _unserializeValue($value)
77: {
78: if (is_numeric($value)) {
79: return array(
80: Mage_Customer_Model_Group::CUST_GROUP_ALL => $this->_fixQty($value)
81: );
82: } else if (is_string($value) && !empty($value)) {
83: return unserialize($value);
84: } else {
85: return array();
86: }
87: }
88:
89: 90: 91: 92: 93: 94:
95: protected function _isEncodedArrayFieldValue($value)
96: {
97: if (!is_array($value)) {
98: return false;
99: }
100: unset($value['__empty']);
101: foreach ($value as $_id => $row) {
102: if (!is_array($row) || !array_key_exists('customer_group_id', $row) || !array_key_exists('min_sale_qty', $row)) {
103: return false;
104: }
105: }
106: return true;
107: }
108:
109: 110: 111: 112: 113: 114:
115: protected function _encodeArrayFieldValue(array $value)
116: {
117: $result = array();
118: foreach ($value as $groupId => $qty) {
119: $_id = Mage::helper('core')->uniqHash('_');
120: $result[$_id] = array(
121: 'customer_group_id' => $groupId,
122: 'min_sale_qty' => $this->_fixQty($qty),
123: );
124: }
125: return $result;
126: }
127:
128: 129: 130: 131: 132: 133:
134: protected function _decodeArrayFieldValue(array $value)
135: {
136: $result = array();
137: unset($value['__empty']);
138: foreach ($value as $_id => $row) {
139: if (!is_array($row) || !array_key_exists('customer_group_id', $row) || !array_key_exists('min_sale_qty', $row)) {
140: continue;
141: }
142: $groupId = $row['customer_group_id'];
143: $qty = $this->_fixQty($row['min_sale_qty']);
144: $result[$groupId] = $qty;
145: }
146: return $result;
147: }
148:
149: 150: 151: 152: 153: 154: 155:
156: public function getConfigValue($customerGroupId, $store = null)
157: {
158: $value = Mage::getStoreConfig(Mage_CatalogInventory_Model_Stock_Item::XML_PATH_MIN_SALE_QTY, $store);
159: $value = $this->_unserializeValue($value);
160: if ($this->_isEncodedArrayFieldValue($value)) {
161: $value = $this->_decodeArrayFieldValue($value);
162: }
163: $result = null;
164: foreach ($value as $groupId => $qty) {
165: if ($groupId == $customerGroupId) {
166: $result = $qty;
167: break;
168: } else if ($groupId == Mage_Customer_Model_Group::CUST_GROUP_ALL) {
169: $result = $qty;
170: }
171: }
172: return $this->_fixQty($result);
173: }
174:
175: 176: 177: 178: 179: 180:
181: public function makeArrayFieldValue($value)
182: {
183: $value = $this->_unserializeValue($value);
184: if (!$this->_isEncodedArrayFieldValue($value)) {
185: $value = $this->_encodeArrayFieldValue($value);
186: }
187: return $value;
188: }
189:
190: 191: 192: 193: 194: 195:
196: public function makeStorableArrayFieldValue($value)
197: {
198: if ($this->_isEncodedArrayFieldValue($value)) {
199: $value = $this->_decodeArrayFieldValue($value);
200: }
201: $value = $this->_serializeValue($value);
202: return $value;
203: }
204: }
205: