MVentory_API - Version 1.5.0

Version Notes

* Add additional data (price, QTY, images, etc) to output of product.list API call

* Other small bug fixies and improvements

Download this release

Release Info

Developer Anatoly A. Kazantsev
Extension MVentory_API
Version 1.5.0
Comparing to
See all releases


Code changes from version 1.4.1 to 1.5.0

app/code/community/MVentory/API/Model/Observer.php CHANGED
@@ -233,7 +233,9 @@ EOT;
233
 
234
  $msg = $helper->__(
235
  self::__CONFIG_URL,
236
- $store->getBaseUrl() . 'mventory-key/' . urlencode($key),
 
 
237
  round($period / 3600)
238
  );
239
 
233
 
234
  $msg = $helper->__(
235
  self::__CONFIG_URL,
236
+ $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK, true)
237
+ . 'mventory-key/'
238
+ . urlencode($key),
239
  round($period / 3600)
240
  );
241
 
app/code/community/MVentory/API/Model/Product/Api.php CHANGED
@@ -14,7 +14,7 @@
14
  * See the full license at http://creativecommons.org/licenses/by-nc-nd/4.0/
15
  *
16
  * @package MVentory/API
17
- * @copyright Copyright (c) 2014 mVentory Ltd. (http://mventory.com)
18
  * @license http://creativecommons.org/licenses/by-nc-nd/4.0/
19
  */
20
 
@@ -36,6 +36,12 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
36
  // Add to whitelist in MVentory_API_Helper_Product_Attribute
37
  'status' => true,
38
 
 
 
 
 
 
 
39
  'stock_data' => true
40
  );
41
 
@@ -75,7 +81,7 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
75
  $productId = $product->getId();
76
 
77
  $_result = array(
78
- 'product_id' => $productId,
79
  'sku' => $product->getSku(),
80
  'set' => $product->getAttributeSetId(),
81
  'websites' => $product->getWebsiteIds(),
@@ -104,7 +110,7 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
104
  $_result,
105
  array_merge(
106
  array(
107
- 'product_id' => true,
108
  'set' => true,
109
  'websites' => true,
110
  'url_path' => true,
@@ -120,6 +126,11 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
120
  )
121
  );
122
 
 
 
 
 
 
123
  $stockItem = Mage::getModel('mventory/stock_item_api');
124
 
125
  $_result = $stockItem->items($productId);
@@ -127,60 +138,28 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
127
  if (isset($_result[0]))
128
  $result = array_merge($result, $_result[0]);
129
 
130
- $productAttributeMedia
131
- = Mage::getModel('mventory/product_attribute_media_api');
132
-
133
- $baseUrlPath = Mage_Core_Model_Store::XML_PATH_UNSECURE_BASE_URL;
134
-
135
- $mediaConfig = Mage::getSingleton('catalog/product_media_config');
136
 
137
- $baseMediaPath = $mediaConfig->getBaseMediaPath();
138
- $baseMediaUrl = Mage::getStoreConfig($baseUrlPath, $storeId)
139
- . 'media/'
140
- . $mediaConfig->getBaseMediaUrlAddition();
141
 
142
- $images = $productAttributeMedia->items($productId, $storeId, 'id');
143
-
144
- foreach ($images as &$image) {
145
- $_image = new Varien_Image($baseMediaPath . $image['file']);
146
-
147
- $image['url'] = $baseMediaUrl . $image['file'];
148
- $image['width'] = (string) $_image->getOriginalWidth();
149
- $image['height'] = (string) $_image->getOriginalHeight();
150
- }
151
-
152
- $result['images'] = $images;
153
-
154
- $helper = Mage::helper('mventory/product_configurable');
155
-
156
- if ($siblingIds = $helper->getSiblingsIds($productId)) {
157
- $attrs = Mage::getModel('mventory/product_attribute_api')
158
- ->fullInfoList($result['set']);
159
-
160
- foreach ($attrs as $attr)
161
- if ($attr['is_configurable'])
162
- break;
163
-
164
- $siblings = Mage::getResourceModel('catalog/product_collection')
165
- ->addAttributeToSelect('price')
166
- ->addAttributeToSelect('name')
167
- ->addAttributeToSelect($attr['attribute_code'])
168
- ->addIdFilter($siblingIds)
169
- ->addStoreFilter($storeId)
170
- ->setFlag('require_stock_items');
171
-
172
- foreach ($siblings as $sibling)
173
- $result['siblings'][] = array(
174
- 'product_id' => $sibling->getId(),
175
- 'sku' => $sibling->getSku(),
176
- 'name' => $sibling->getName(),
177
- 'price' => $sibling->getPrice(),
178
- 'qty' => $sibling->getStockItem()->getQty(),
179
- $attr['attribute_code'] => $sibling->getData($attr['attribute_code'])
180
- );
181
  }
182
 
183
- $product = new Varien_Object($result);
 
184
 
185
  Mage::dispatchEvent(
186
  'mventory_api_product_info',
@@ -191,7 +170,7 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
191
  }
192
 
193
  public function limitedList ($name = null, $categoryId = null, $page = 1) {
194
- $helper = Mage::helper('mventory');
195
  $storeId = $helper->getCurrentStoreId();
196
 
197
  $limit = (int) Mage::getStoreConfig(
@@ -199,6 +178,15 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
199
  $storeId
200
  );
201
 
 
 
 
 
 
 
 
 
 
202
  if ($categoryId) {
203
  $category = Mage::getModel('catalog/category')
204
  ->setStoreId($storeId)
@@ -207,11 +195,7 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
207
  if (!$category->getId())
208
  $this->_fault('category_not_exists');
209
 
210
- $collection = $category->getProductCollection();
211
- } else {
212
- $collection = Mage::getModel('catalog/product')
213
- ->getCollection()
214
- ->addStoreFilter($storeId);
215
  }
216
 
217
  if ($name) {
@@ -229,31 +213,86 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
229
  'left'
230
  );
231
  }
 
 
 
 
 
232
 
233
- $collection
234
- ->addAttributeToSelect('name')
235
- ->addAttributeToFilter(
236
- 'type_id',
237
- Mage_Catalog_Model_Product_Type::TYPE_SIMPLE
238
- )
239
- ->setPage($page, $limit);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
 
241
  if (!$name)
242
- $collection
243
- ->setOrder('updated_at', Varien_Data_Collection::SORT_ORDER_DESC);
 
 
244
 
245
- $result = array('items' => array());
 
 
 
 
 
 
246
 
247
- foreach ($collection as $product)
248
- $result['items'][] = array('product_id' => $product->getId(),
249
- 'sku' => $product->getSku(),
250
- 'name' => $product->getName(),
251
- 'set' => $product->getAttributeSetId(),
252
- 'type' => $product->getTypeId(),
253
- 'category_ids' => $product->getCategoryIds() );
254
 
255
- $result['current_page'] = $collection->getCurPage();
256
- $result['last_page'] = (int) $collection->getLastPageNumber();
 
 
 
257
 
258
  return $helper->prepareApiResponse($result);
259
  }
@@ -294,12 +333,20 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
294
  $website
295
  );
296
 
 
 
 
 
 
 
 
 
297
  //Use admin store ID to save values of attributes in the default scope
298
  $id = $this->create(
299
  $type,
300
  $set,
301
  $sku,
302
- $data,
303
  Mage_Core_Model_App::ADMIN_STORE_ID
304
  );
305
 
@@ -622,7 +669,8 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
622
  $product->setAttributeSetId($newSet);
623
  }
624
 
625
- $skus = isset($productData['additional_sku'])
 
626
  ? (array) $productData['additional_sku']
627
  : false;
628
 
@@ -815,4 +863,197 @@ class MVentory_API_Model_Product_Api extends Mage_Catalog_Model_Product_Api {
815
  )
816
  );
817
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
818
  }
14
  * See the full license at http://creativecommons.org/licenses/by-nc-nd/4.0/
15
  *
16
  * @package MVentory/API
17
+ * @copyright Copyright (c) 2014-2015 mVentory Ltd. (http://mventory.com)
18
  * @license http://creativecommons.org/licenses/by-nc-nd/4.0/
19
  */
20
 
36
  // Add to whitelist in MVentory_API_Helper_Product_Attribute
37
  'status' => true,
38
 
39
+ /**
40
+ * @todo remove it after API code will be changed to update product
41
+ * visibility directly in product but not via update call
42
+ */
43
+ 'visibility' => true,
44
+
45
  'stock_data' => true
46
  );
47
 
81
  $productId = $product->getId();
82
 
83
  $_result = array(
84
+ 'id' => $productId,
85
  'sku' => $product->getSku(),
86
  'set' => $product->getAttributeSetId(),
87
  'websites' => $product->getWebsiteIds(),
110
  $_result,
111
  array_merge(
112
  array(
113
+ 'id' => true,
114
  'set' => true,
115
  'websites' => true,
116
  'url_path' => true,
126
  )
127
  );
128
 
129
+ /**
130
+ * @todo Remove after apps will be updated
131
+ */
132
+ $result['product_id'] = $productId;
133
+
134
  $stockItem = Mage::getModel('mventory/stock_item_api');
135
 
136
  $_result = $stockItem->items($productId);
138
  if (isset($_result[0]))
139
  $result = array_merge($result, $_result[0]);
140
 
141
+ $result['images'] = $this->_getImages($productId, $storeId);
 
 
 
 
 
142
 
143
+ if ($attr = $helper->getConfigurable($result['set'])) {
144
+ $_tmp = array($productId => $result);
 
 
145
 
146
+ $this->_addSiblings(
147
+ $_tmp,
148
+ array($result['set'] => $attr),
149
+ array(
150
+ 'name',
151
+ 'price',
152
+ 'special_price',
153
+ 'special_from_date',
154
+ 'special_to_date'
155
+ ),
156
+ $storeId,
157
+ array('load_image' => true)
158
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  }
160
 
161
+ $product = new Varien_Object(isset($_tmp) ? $_tmp[$productId] : $result);
162
+ unset($_tmp);
163
 
164
  Mage::dispatchEvent(
165
  'mventory_api_product_info',
170
  }
171
 
172
  public function limitedList ($name = null, $categoryId = null, $page = 1) {
173
+ $helper = Mage::helper('mventory/product_attribute');
174
  $storeId = $helper->getCurrentStoreId();
175
 
176
  $limit = (int) Mage::getStoreConfig(
178
  $storeId
179
  );
180
 
181
+ $collection = Mage::getResourceModel('mventory/product_collection')
182
+ ->addAttributeToFilter(
183
+ 'type_id',
184
+ Mage_Catalog_Model_Product_Type::TYPE_SIMPLE
185
+ )
186
+ ->setStoreId($storeId)
187
+ ->addStoreFilter($storeId)
188
+ ->setPage($page, $limit);
189
+
190
  if ($categoryId) {
191
  $category = Mage::getModel('catalog/category')
192
  ->setStoreId($storeId)
195
  if (!$category->getId())
196
  $this->_fault('category_not_exists');
197
 
198
+ $collection->addCategoryFilter($category);
 
 
 
 
199
  }
200
 
201
  if ($name) {
213
  'left'
214
  );
215
  }
216
+ else
217
+ $collection->setOrder(
218
+ 'updated_at',
219
+ Varien_Data_Collection::SORT_ORDER_DESC
220
+ );
221
 
222
+ $result = array(
223
+ 'items' => array(),
224
+ 'current_page' => $collection->getCurPage(),
225
+ 'last_page' => (int) $collection->getLastPageNumber()
226
+ );
227
+
228
+ //Check if there's products which pass collection filters
229
+ if (!$collection->getSize())
230
+ return $helper->prepareApiResponse($result);
231
+
232
+ //List of product attributes which should be returned in the result
233
+ $_attrs = array(
234
+ 'name',
235
+ 'price',
236
+ 'special_price',
237
+ 'special_from_date',
238
+ 'special_to_date'
239
+ );
240
+
241
+ //Get product IDs and attribute set IDs for the collection. We will use
242
+ //loaded IDs later to load product data
243
+ $ids = $collection->getIdsAndSets();
244
+
245
+ //Collect attrribute set IDs and their configurable attributes to
246
+ //get list of attributes which should be loaded in collection.
247
+ //Also this data is used to add data of sibling products.
248
+ $confAttrs = $confCodes = array();
249
+
250
+ foreach ($ids as $id => $setId)
251
+ if (!isset($confAttrs[$setId])
252
+ && $confAttr = $helper->getConfigurable($setId)) {
253
+
254
+ $confAttrs[$setId] = $confAttr;
255
+ $confCodes[] = $confAttr->getAttributeCode();
256
+ }
257
+
258
+ unset($code);
259
+
260
+ //Get full list of attributes which should be returned in the result
261
+ $attrs = array_merge($_attrs, $confCodes);
262
+
263
+ $collection = Mage::getResourceModel('mventory/product_collection')
264
+ ->addIdFilter(array_keys($ids))
265
+ ->setStoreId($storeId)
266
+ ->addAttributeToSelect($attrs)
267
+ ->setFlag('require_stock_items', true);
268
 
269
  if (!$name)
270
+ $collection->setOrder(
271
+ 'updated_at',
272
+ Varien_Data_Collection::SORT_ORDER_DESC
273
+ );
274
 
275
+ foreach ($collection as $id => $product)
276
+ $result['items'][$id] = $this->_getProductData(
277
+ $product,
278
+ $attrs,
279
+ $storeId,
280
+ array('load_image' => false)
281
+ );
282
 
283
+ $this->_addSiblings(
284
+ $result['items'],
285
+ $confAttrs,
286
+ $_attrs,
287
+ $storeId,
288
+ array('load_image' => false)
289
+ );
290
 
291
+ /**
292
+ * @todo [COMPAT] reset keys temporarely, because old app expects plain
293
+ * array
294
+ */
295
+ $result['items'] = array_values($result['items']);
296
 
297
  return $helper->prepareApiResponse($result);
298
  }
333
  $website
334
  );
335
 
336
+ Mage::dispatchEvent(
337
+ 'mventory_api_product_create',
338
+ array(
339
+ 'product' => ($product = new Varien_Object($data)),
340
+ 'website' => $website
341
+ )
342
+ );
343
+
344
  //Use admin store ID to save values of attributes in the default scope
345
  $id = $this->create(
346
  $type,
347
  $set,
348
  $sku,
349
+ $product->getData(),
350
  Mage_Core_Model_App::ADMIN_STORE_ID
351
  );
352
 
669
  $product->setAttributeSetId($newSet);
670
  }
671
 
672
+ $skus = (isset($productData['additional_sku'])
673
+ && $productData['additional_sku'])
674
  ? (array) $productData['additional_sku']
675
  : false;
676
 
863
  )
864
  );
865
  }
866
+
867
+ /**
868
+ * Return prepared product data for list API call. Also loads and prepares
869
+ * images data.
870
+ *
871
+ * @param Mage_Catalog_Model_Product $product
872
+ * Product model
873
+ *
874
+ * @param array $attrs
875
+ * List of attributes which data should be included
876
+ *
877
+ * @param int $storeId
878
+ * Current store ID
879
+ *
880
+ * @param array $params
881
+ * Additional parameters
882
+ *
883
+ * @return array
884
+ * Prepared product data
885
+ */
886
+ protected function _getProductData ($product, $attrs, $storeId, $params) {
887
+ $stock = $product->getStockItem();
888
+
889
+ $id = $product->getId();
890
+ $qty = $stock->getQty();
891
+
892
+ return array_merge(
893
+ array(
894
+ 'id' => $id,
895
+ 'sku' => $product->getSku(),
896
+ 'set' => $product->getAttributeSetId(),
897
+ 'category_ids' => $product->getCategoryIds(),
898
+ 'stock' => array(
899
+ 'qty' => $qty,
900
+ 'is_in_stock' => $stock->getIsInStock(),
901
+ 'manage_stock' => $stock->getManageStock(),
902
+ 'is_qty_decimal' => $stock->getIsQtyDecimal()
903
+ ),
904
+ 'images' => $this->_getImages($id, $storeId, $params['load_image']),
905
+
906
+ /**
907
+ * @todo Remove after apps will be updated
908
+ */
909
+ 'product_id' => $id,
910
+ 'type' => $product->getTypeId(),
911
+ 'qty' => $qty
912
+ ),
913
+ array_intersect_key($product->getData(), array_flip($attrs))
914
+ );
915
+ }
916
+
917
+ /**
918
+ * Add data of sibling products to the supplied list of product data
919
+ *
920
+ * @param array $products
921
+ * Prepared product data
922
+ *
923
+ * @param array $confAttrs
924
+ * List of attribute sets IDs anf their configurable attributes, where
925
+ * key is ID of attribute set and value is attribute model
926
+ *
927
+ * @param array $_attrs
928
+ * List of attributes which data should be included
929
+ *
930
+ * @param int $storeId
931
+ * Current store ID
932
+ *
933
+ * @param array $params
934
+ * Additional parameters
935
+ */
936
+ protected function _addSiblings (&$products,
937
+ $confAttrs,
938
+ $_attrs,
939
+ $storeId,
940
+ $params) {
941
+
942
+ $helper = Mage::helper('mventory/product_configurable');
943
+
944
+ foreach ($products as &$product) {
945
+ $setId = $product['set'];
946
+
947
+ $product['siblings'] = array();
948
+
949
+ if (!isset($confAttrs[$setId]))
950
+ continue;
951
+
952
+ $attr = $confAttrs[$setId];
953
+ $code = $attr->getAttributeCode();
954
+
955
+ if (!(isset($product[$code]) && $product[$code]))
956
+ continue;
957
+
958
+ if (!$siblingIds = $helper->getSiblingsIds($product['id']))
959
+ continue;
960
+
961
+ $_siblings = array();
962
+
963
+ //Find which sibling products were already loaded and reuse exising data
964
+ if ($loaded = array_intersect_key($products, array_flip($siblingIds))) {
965
+ foreach ($loaded as $id => $_sibling) {
966
+ unset($_sibling['siblings']);
967
+
968
+ $_siblings[$id] = $_sibling;
969
+ }
970
+
971
+ if (count($loaded) == count($siblingIds)) {
972
+ $product['siblings'] = $_siblings;
973
+ continue;
974
+ }
975
+
976
+ //Get list of IDs of not loaded sibling products
977
+ $siblingIds = array_diff($siblingIds, array_keys($loaded));
978
+ }
979
+
980
+ unset($loaded);
981
+
982
+ $attrs = array_merge($_attrs, array($code));
983
+
984
+ $siblings = Mage::getResourceModel('mventory/product_collection')
985
+ ->addIdFilter($siblingIds)
986
+ ->addAttributeToSelect($attrs)
987
+ ->setFlag('require_stock_items', true)
988
+ ->setStoreId($storeId);
989
+
990
+ foreach ($siblings as $id => $sibling)
991
+ $_siblings[$id] = $this->_getProductData(
992
+ $sibling,
993
+ $attrs,
994
+ $storeId,
995
+ $params
996
+ );
997
+
998
+ /**
999
+ * @todo [COMPAT] reset keys temporarely, because old app expects plain
1000
+ * array
1001
+ */
1002
+ $product['siblings'] = array_values($_siblings);
1003
+ }
1004
+ }
1005
+
1006
+ /**
1007
+ * Return prepared data for product's images
1008
+ *
1009
+ * @param int $id
1010
+ * ID of product
1011
+ *
1012
+ * @param int $storeId
1013
+ * Current store ID
1014
+ *
1015
+ * @param bool $loadImage
1016
+ * Flag to load image to get additional data
1017
+ *
1018
+ * @return array
1019
+ * Prepared data for product's images
1020
+ */
1021
+ protected function _getImages ($id, $storeId, $loadImage = true) {
1022
+ if (!isset($this->__mediaApi))
1023
+ $this->__mediaApi = Mage::getModel(
1024
+ 'mventory/product_attribute_media_api'
1025
+ );
1026
+
1027
+ if (!isset($this->__mediaPath, $this->__mediaUrl)) {
1028
+ $config = Mage::getSingleton('catalog/product_media_config');
1029
+
1030
+ $this->__mediaPath = $config->getBaseMediaPath();
1031
+ $this->__mediaUrl = Mage::getStoreConfig(
1032
+ Mage_Core_Model_Store::XML_PATH_UNSECURE_BASE_URL,
1033
+ $storeId
1034
+ )
1035
+ . 'media/'
1036
+ . $config->getBaseMediaUrlAddition();
1037
+ }
1038
+
1039
+ $images = $this
1040
+ ->__mediaApi
1041
+ ->items($id, $storeId, 'id');
1042
+
1043
+ foreach ($images as &$image) {
1044
+ $image['url'] = $this->__mediaUrl . $image['file'];
1045
+
1046
+ if ($loadImage
1047
+ && file_exists($_image = $this->__mediaPath . $image['file'])) try {
1048
+
1049
+ $_image = new Varien_Image($_image);
1050
+
1051
+ $image['width'] = (string) $_image->getOriginalWidth();
1052
+ $image['height'] = (string) $_image->getOriginalHeight();
1053
+ }
1054
+ catch (Exception $e) {}
1055
+ }
1056
+
1057
+ return $images;
1058
+ }
1059
  }
app/code/community/MVentory/API/Model/Resource/Product/Collection.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * NOTICE OF LICENSE
5
+ *
6
+ * This source file is subject to the Creative Commons License BY-NC-ND.
7
+ * By Attribution (BY) - You can share this file unchanged, including
8
+ * this copyright statement.
9
+ * Non-Commercial (NC) - You can use this file for non-commercial activities.
10
+ * A commercial license can be purchased separately from mventory.com.
11
+ * No Derivatives (ND) - You can make changes to this file for your own use,
12
+ * but you cannot share or redistribute the changes.
13
+ *
14
+ * See the full license at http://creativecommons.org/licenses/by-nc-nd/4.0/
15
+ *
16
+ * @package MVentory/API
17
+ * @copyright Copyright (c) 2015 mVentory Ltd. (http://mventory.com)
18
+ * @license http://creativecommons.org/licenses/by-nc-nd/4.0/
19
+ */
20
+
21
+ /**
22
+ * Product collection
23
+ *
24
+ * @package MVentory/API
25
+ * @author Anatoly A. Kazantsev <anatoly@mventory.com>
26
+ */
27
+ class MVentory_API_Model_Resource_Product_Collection
28
+ extends Mage_Catalog_Model_Resource_Product_Collection
29
+ {
30
+ /**
31
+ * Retrive all pairs of product ID and its attribute set ID for collection
32
+ *
33
+ * @return array
34
+ * Pairs of product ID and its attribute set ID
35
+ */
36
+ public function getIdsAndSets () {
37
+ $this->_renderFilters();
38
+ $this->_renderOrders();
39
+ $this->_renderLimit();
40
+
41
+ $select = clone $this->getSelect();
42
+
43
+ $select
44
+ ->reset(Zend_Db_Select::COLUMNS)
45
+ ->columns(array(
46
+ 'e.' . $this->getEntity()->getIdFieldName(),
47
+ 'attribute_set_id',
48
+ ))
49
+ ->resetJoinLeft();
50
+
51
+ return $this
52
+ ->getConnection()
53
+ ->fetchPairs($select, $this->_bindParams);
54
+ }
55
+ }
app/code/community/MVentory/API/controllers/AppController.php CHANGED
@@ -94,7 +94,8 @@ class MVentory_API_AppController
94
 
95
  $output = $user->getUsername() . "\n"
96
  . $apiKey . "\n"
97
- . $store->getBaseUrl() . "\n";
 
98
 
99
  $response = $this->getResponse();
100
 
@@ -115,11 +116,11 @@ class MVentory_API_AppController
115
  return;
116
  }
117
 
118
- $url = Mage::app()
119
- ->getStore()
120
- ->getBaseUrl();
121
 
122
- $url = 'mventory://'
123
  . substr($url, strpos($url, '//') + 2)
124
  . 'mventory-key/'
125
  . urlencode($key)
94
 
95
  $output = $user->getUsername() . "\n"
96
  . $apiKey . "\n"
97
+ . $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK, true)
98
+ . "\n";
99
 
100
  $response = $this->getResponse();
101
 
116
  return;
117
  }
118
 
119
+ $store = Mage::app()->getStore();
120
+ $secure = $store->isCurrentlySecure();
121
+ $url = $store->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK, $secure);
122
 
123
+ $url = ($secure ? 'mventorys://' : 'mventory://')
124
  . substr($url, strpos($url, '//') + 2)
125
  . 'mventory-key/'
126
  . urlencode($key)
app/design/adminhtml/default/default/template/mventory/config/build-info.phtml CHANGED
@@ -18,5 +18,5 @@
18
 
19
  ?>
20
 
21
- Build version: 90b8641
22
- <BR/>Build date: 24/02/2015 12:36 UTC
18
 
19
  ?>
20
 
21
+ Build version: ad197bc
22
+ <BR/>Build date: 22/04/2015 05:51 UTC
package.xml CHANGED
@@ -1,5 +1,5 @@
1
  <?xml version="1.0"?>
2
- <package><name>MVentory_API</name><version>1.4.1</version><stability>stable</stability><license>CC BY-NC-ND 4.0</license><channel>community</channel><extends></extends><summary>The easiest way to sell online: PoS, Inventory and Website control in one elegant Android application.</summary><description>mVentory is an Android application for efficient management of Magento stores. This extension provides additional API functionality and is required for the app to connect to your Magento website.
3
 
4
 
5
 
@@ -49,6 +49,6 @@ Creative Commons BY-NC-ND 4.0 (http://creativecommons.org/licenses/by-nc-nd/4.0/
49
 
50
  The extension is free for non-commercial or trial use. Please, request a FREE commercial license from info@mventory.com
51
 
52
- Visit http://mventory.com for more info.</description><notes>* Fix setting default category on create/updating product
53
 
54
- * Fix bug which breaks API settings page in Magento versions prior 1.9 release</notes><authors><author><name>Anatoly A. Kazantsev</name><user>anatoly</user><email>anatoly@mventory.com</email></author></authors><date>2015-02-24</date><time>4:36:08</time><compatible></compatible><dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies><contents><target name="mage"><dir name="js"><dir name="jquery"><file name="jquery-min.js" hash="baae1db8cca4abb2265b0a6e01f1beed"/><file name="jquery-ui-custom-min.js" hash="e37cbc707c78240780a5ce641f476eb3"/></dir><dir name="mventory"><file name="matching.js" hash="2a3d6d34c60aee3f0efe94ff96fd67fc"/></dir></dir><dir name="var"><dir name="connect"><file name="MVentory_API.xml" hash="d36dcd9f365b5b4feb8043412d4c63b3"/></dir></dir><dir name="app"><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="mventory.xml" hash="902a95b8b78acdf528e13993eb6f5030"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mventory.xml" hash="46b4a123593ad761f3521d5b2d4f71bb"/></dir><dir name="template"><dir name="mventory"><file name="element.phtml" hash="cb233713a0e550b2165280231c24360f"/><file name="matching.phtml" hash="5378e331d15f5daf582021dd96d7f130"/><file name="metadata.phtml" hash="29d84bb98175c7ca358e68f49cffa8f3"/><dir name="matching"><file name="categories.phtml" hash="ab29d30352987276065b9e933acd3fcc"/></dir><dir name="customer"><dir name="edit"><file name="js.phtml" hash="36e6fba58aa4eff02bc57e2a1d628d79"/></dir></dir><dir name="config"><file name="build-info.phtml" hash="907ff053c9190c226b0ae77f916c4b01"/></dir></dir></dir></dir></dir></dir></dir><dir name="code"><dir name="community"><dir name="MVentory"><dir name="API"><dir name="controllers"><file name="AppController.php" hash="4037d44fb61810a4f9b002f8aa19fbf7"/><file name="CarriersController.php" hash="326f66c967a9ee2216be9c6dae043d97"/><file name="CustomerController.php" hash="029f18706ffe07e8a466eb8c30d0a2f9"/><file name="DropboxController.php" hash="e4f9ee9fcafd993e26e931b31c2228c7"/><file name="ImageController.php" hash="deb5c8227a982e8a328479aa88e8f088"/><file name="LogsController.php" hash="96c331e223a6a94ef9d3ba7192d24935"/><file name="MatchingController.php" hash="071284fc5681b70ead84ff2a98f3d519"/><file name="QrController.php" hash="1678dcc58be2ebcb554e7dc0e7c26d80"/><file name="SwitchController.php" hash="1a00ad2aae0845faea5dbe1475e84d8f"/><dir name="Catalog"><file name="ProductController.php" hash="b507cf269539c6dc3fea5e81bada5664"/></dir></dir><dir name="Block"><file name="Matching.php" hash="da741edb96130c120e4eddf0b677bbd2"/><file name="Metadata.php" hash="4b68a44b1f064093ac94722c40c7c651"/><dir name="Setting"><file name="Buildinfo.php" hash="87e71b9cd02e61dff260609be485ca54"/><file name="Fieldset.php" hash="5b5a717192210b9726e5e86ee75949d9"/></dir><dir name="Matching"><file name="Categories.php" hash="e5ffc5a02aa37a43d90079c66eace63b"/></dir><dir name="Carrier"><dir name="Volumerate"><file name="Grid.php" hash="182f5a1eb264ec7648aae468d5faef99"/></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Exportrates.php" hash="aa4a0e11eaa9330ba35f460582290927"/><file name="Imgcliplog.php" hash="05f8dfba30a9acdc6462b5aadbc154e7"/></dir></dir></dir></dir></dir><dir name="data"><dir name="mventory_setup"><file name="data-upgrade-20-21.php" hash="ab6622b831fc5a806d780eff2eacf75b"/><file name="data-upgrade-23-24.php" hash="9d5bd2a2745585d814d3b203008ef2ad"/><file name="data-upgrade-27-28.php" hash="6b63835702467615f932f6fbac78e97d"/><file name="data-upgrade-28-29.php" hash="db2ca19d3162d377bd1927a22f2b6be0"/></dir></dir><dir name="Helper"><file name="Barcode.php" hash="57de68928ed6da93a02a044bf9f93f86"/><file name="Data.php" hash="d8016b9f4770342d10fe8a047ff1d167"/><file name="Image.php" hash="cb931b138f4c90f7f52cf8303ecb6aa2"/><file name="Imageclipper.php" hash="83634ad59a28a237d5cff3e7b1fb5131"/><file name="Product.php" hash="74a8787d1fc9dc4ff4bf3519d5ecab1e"/><file name="String.php" hash="258c2000ce8feb070211e04816e903e3"/><dir name="Mage"><dir name="Sales"><file name="Data.php" hash="84fbc100be8baa83e5dbb5fcecccbd6b"/></dir></dir><dir name="Product"><file name="Attribute.php" hash="130bee848a2d12bc75ed07383d15c190"/><file name="Configurable.php" hash="5f5eadcb33883752a56ad306fadf32dd"/></dir></dir><dir name="sql"><dir name="mventory_setup"><file name="install-3.php" hash="7514f77abff39b3d359a59978784e275"/><file name="upgrade-10-11.php" hash="fb312c3621c87f7b2222ba56e3f83fb9"/><file name="upgrade-12-13.php" hash="aefb35e0871eafd84864f8052ff21423"/><file name="upgrade-17-18.php" hash="a06e899380dd85a175b331fe5b52f324"/><file name="upgrade-18-19.php" hash="00113090ec00f2385c78d28464871c46"/><file name="upgrade-20-21.php" hash="27d45b15f3ba21df99cd90a3750f9c79"/><file name="upgrade-21-22.php" hash="e882fef187fa158587a4451bfced7e45"/><file name="upgrade-22-23.php" hash="e67150b521f86d35027fcafcf3d6000b"/><file name="upgrade-24-25.php" hash="ef3e432929a236bed6ef0d9c19ca3db5"/><file name="upgrade-25-26.php" hash="e134738e9a55fc1691a38b5eb4cbe73e"/><file name="upgrade-26-27.php" hash="fb5e01ee89497e99426f816240791d4a"/><file name="upgrade-3-4.php" hash="9f04a747fe387598a2871cdc8c9caf87"/><file name="upgrade-8-9.php" hash="0e3e3bb76a0cd039910bf17f2956285f"/><file name="upgrade-9-10.php" hash="05ccf6ee0b530dc5bf63b5fe0bc8f044"/></dir></dir><dir name="Model"><file name="Config.php" hash="c1232e1bf9267f2fa120c96087e69191"/><file name="Matching.php" hash="a54d42a7da654d845a1e79c745a2166b"/><file name="Observer.php" hash="ab5b388a5d83c818f8002ab4bb4bbca3"/><file name="Payment.php" hash="d2745860dfb2eca1adbc0f7b3de6fbfc"/><file name="Shipping.php" hash="043c9d12eebdff5016b84e4d86cc1e77"/><dir name="Setting"><dir name="Backend"><file name="Dbxpath.php" hash="cd9272381487b8a599a63cfe123d57b7"/></dir></dir><dir name="Dataflow"><file name="Api.php" hash="bfb1829343503354daf9db216f313976"/></dir><dir name="Category"><file name="Api.php" hash="9628dc59a845bc36a80a490ee808c338"/></dir><dir name="Carrier"><file name="Volumerate.php" hash="609709fdded050a3ac4204464ef6d922"/></dir><dir name="Stock"><dir name="Item"><file name="Api.php" hash="64473e1600fd51600853eddee75d598e"/></dir></dir><dir name="Config"><dir name="Data"><file name="Websites.php" hash="a7314efd0ca3c6adc8594893c64555aa"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Carrier"><file name="Volumerate.php" hash="2010718655ff39b4559a369403074fa4"/></dir><dir name="Imgclip"><file name="Backupfolder.php" hash="07bd6a17f8e65d96c47ed52d5f1c38e6"/><file name="Csvlog.php" hash="f3780e5079abb09594e018cfb36e4226"/></dir></dir><dir name="Source"><file name="Allowedshippingtypes.php" hash="d2a6259b9278242d3acf8a0c4f34c763"/><file name="Contenttype.php" hash="e91f6a1a495f1a19e1875fbde4ed5aac"/><file name="Customers.php" hash="b3e615aa64cce43d1bb4cadbe41c2ee7"/><file name="Inputmethod.php" hash="0cdc2b42456faeffd2b86481d2a04940"/><file name="Visibility.php" hash="22a8599fb6867d2fe5887f2f9b0246cb"/><file name="Website.php" hash="b8ea07d8f5c82df42c7f0b9be950bb0e"/></dir></dir></dir><dir name="Product"><file name="Action.php" hash="6cb738d6a133a99d0004cad23fed84e5"/><file name="Api.php" hash="e707cbecd8e371eb5c930aaed068723c"/><dir name="Attribute"><file name="Api.php" hash="f6c53d7a8988119f2f57bfce34dfd1d2"/><dir name="Set"><file name="Api.php" hash="112da5255f9e73b0bc715bccf5c6103f"/></dir><dir name="Media"><file name="Api.php" hash="c8fde457de5a6c59d345f3eed49d24bb"/></dir></dir></dir><dir name="Resource"><file name="Matching.php" hash="790d70f09cc175f643eccdfff754d92c"/><file name="Product.php" hash="e04d66d258b01579e4e6301a01f70771"/><file name="Setup.php" hash="5ce8cb51734c03b947d37a0eff1b7117"/><file name="Sku.php" hash="21379417a6a30c33f74f0a5ffbdfbac7"/><dir name="Carrier"><file name="Volumerate.php" hash="6763c1a02ff9750fd5d8eca703da05dd"/><dir name="Volumerate"><file name="Collection.php" hash="a5e5852a7d58fa31cb49ef7e4c1e38cf"/></dir></dir><dir name="Cart"><file name="Item.php" hash="3e1cbab71c91eca69f225668d55f3d0d"/></dir><dir name="Entity"><file name="Attribute.php" hash="14461aa0ae2e032b9efb16ebf23096af"/></dir><dir name="Order"><file name="Transaction.php" hash="16b62fc85e4b68443941c8212054cce7"/></dir></dir><dir name="Cart"><file name="Api.php" hash="5e154ff60f57f5d11675be3ad9415579"/><file name="Item.php" hash="84ad9830e7e50a55e28fcd4105521a91"/><dir name="Payment"><file name="Api.php" hash="b9253dd46ee980e322d10be6b7b0ffd7"/></dir></dir><dir name="Order"><file name="Api.php" hash="3d65404a24ab282eee8764d0c77ccaa3"/><file name="Transaction.php" hash="0666f26f229b11f30a1db2dfd6e1bf77"/><dir name="Shipment"><file name="Api.php" hash="f7ac72e14810d9af0ab1f876b57e00b9"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="bceda356fa43b9f5bfc7ab0ea91bafca"/><file name="api.xml" hash="e69c9b6a59cb2bcd4324b53d43bd7440"/><file name="config.xml" hash="1e0e76c76b881d080eceb836b50e5ef7"/><file name="system.xml" hash="eee035212b89d57558f7d9299c53ac58"/></dir></dir></dir><dir name="Hackathon"><dir name="PSR0Autoloader"><dir name="Model"><file name="Observer.php" hash="27ff6168c7057b3d116915c50e34c0a6"/><file name="SplAutoloader.php" hash="ca80992ff765e7fa88c507976205f7e2"/></dir><dir name="etc"><file name="config.xml" hash="4b76d9de1d114e8bf5dfef6fae75d973"/></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><file name="Hackathon_PSR0Autoloader.xml" hash="87095bbf80d16f7e97304317761690dd"/><file name="MVentory_API.xml" hash="3002a36d0a49a782ead45dc5bf2d885a"/></dir></dir></dir><dir name="lib"><dir name="Dropbox"><file name="AppInfo.php" hash="b08006228ca38ac11c1a431646536ad9"/><file name="AppInfoLoadException.php" hash="06360c81e5ceafe6d029a72e0d38a58a"/><file name="ArrayEntryStore.php" hash="abfcab905705695de35004a314b05ec0"/><file name="AuthBase.php" hash="b0ac3fdae57cb61152d0f60066cd1e77"/><file name="AuthInfo.php" hash="3166cd194c72d1951d80bb1f7cc572f8"/><file name="AuthInfoLoadException.php" hash="4435a95cc3ad35471b1491834d3462f2"/><file name="Checker.php" hash="7433c56c1a9b53f918a5ad66d3844caf"/><file name="Client.php" hash="1c8fbbf62477bfba8ba7892f624604ef"/><file name="Curl.php" hash="9ff4836a05237b7990eac9a16a6a97ff"/><file name="CurlStreamRelay.php" hash="99b9d4b311110bbef6455cc3769585fc"/><file name="DeserializeException.php" hash="bb74de5ce4ad24ed03efabe52604a300"/><file name="DropboxMetadataHeaderCatcher.php" hash="608e493bbc560cb5d89804b831b38c43"/><file name="Exception.php" hash="1c55eda1bc2e9fb753c1f8f32b95c2e9"/><file name="Host.php" hash="c46c786726fc59c890ee2e588a7c3af6"/><file name="HttpResponse.php" hash="5cb98bfbaac3e48ffb7f1fe4ecab400c"/><file name="OAuth1AccessToken.php" hash="25ed61cb959c4446ec79552a4ce7fa77"/><file name="OAuth1Upgrader.php" hash="f3bc2125746d19bc99c0f4d8887ea3e6"/><file name="Path.php" hash="242a8243ee9f66281058979922e76c7f"/><file name="RequestUtil.php" hash="34e02972f318c99d1a2247bcbb5eeda7"/><file name="SSLTester.php" hash="2aba98547a9915608073438f6370fd15"/><file name="Security.php" hash="252e63a1a377935aa1ef3e40405d3412"/><file name="StreamReadException.php" hash="464bfb0fc75beef2b73e0c5192d0a061"/><file name="ValueStore.php" hash="c932c52f15d67c01a6e3c841f82306dd"/><file name="WebAuth.php" hash="e9e971b77ffc60544a2d9f10a5940eaf"/><file name="WebAuthBase.php" hash="1128a83bbf693e528e68a3c3893aef4f"/><file name="WebAuthNoRedirect.php" hash="87f2494ed95142f7a7e4c968fbb3e09e"/><file name="WriteMode.php" hash="22a3b70bf74feae770e4aa94915a1b1a"/><file name="app-info.json" hash="418aafd4a85212f6b96a1d180c2fd053"/><file name="autoload.php" hash="55bd4af009c75821e0416f33ef5e5fab"/><file name="strict.php" hash="b39f6f3228a1a499ac88ada9ec57ebfd"/><dir name="Exception"><file name="BadRequest.php" hash="5f0ae16a2d28c26bc66ed2e43ac8b4e1"/><file name="BadResponse.php" hash="c534a78bd9436b3ae6130bfbbdf7b8da"/><file name="BadResponseCode.php" hash="9720559b39e522a3acb6a9986b68c711"/><file name="InvalidAccessToken.php" hash="d2106a45d6366d7060d351e89fa738ed"/><file name="NetworkIO.php" hash="1278b1d756b43912f9083985df756305"/><file name="ProtocolError.php" hash="c99f595645d9fba2ddcec415483ea3af"/><file name="RetryLater.php" hash="b3d88a95ffd772f94838ab03c479f6a7"/><file name="ServerError.php" hash="ed7f0cb2dd114e9f60cf12acece68611"/></dir><dir name="certs"><file name="trusted-certs.crt" hash="847f0dc12cc8ddee1969a3ec857facb6"/></dir><dir name="WebAuthException"><file name="BadRequest.php" hash="8b2e77ef6128b2b96c20ec0847c5812b"/><file name="BadState.php" hash="039a2e21cac09f89ab6090e4f9648241"/><file name="Csrf.php" hash="3e2f878255c5366cabcc2880a7c97586"/><file name="NotApproved.php" hash="5d5db96ad13433a081a0db5dcb6d9412"/><file name="Provider.php" hash="5cf549587d95873cfb4a8e96f98d0534"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="mventory"><dir name="css"><file name="styles.css" hash="6e0215c7d35145479634fd50b3b996e3"/></dir></dir></dir></dir></dir></dir></target></contents></package>
1
  <?xml version="1.0"?>
2
+ <package><name>MVentory_API</name><version>1.5.0</version><stability>stable</stability><license>CC BY-NC-ND 4.0</license><channel>community</channel><extends></extends><summary>The easiest way to sell online: PoS, Inventory and Website control in one elegant Android application.</summary><description>mVentory is an Android application for efficient management of Magento stores. This extension provides additional API functionality and is required for the app to connect to your Magento website.
3
 
4
 
5
 
49
 
50
  The extension is free for non-commercial or trial use. Please, request a FREE commercial license from info@mventory.com
51
 
52
+ Visit http://mventory.com for more info.</description><notes>* Add additional data (price, QTY, images, etc) to output of product.list API call
53
 
54
+ * Other small bug fixies and improvements</notes><authors><author><name>Anatoly A. Kazantsev</name><user>anatoly</user><email>anatoly@mventory.com</email></author></authors><date>2015-04-21</date><time>22:51:15</time><compatible></compatible><dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies><contents><target name="mage"><dir name="js"><dir name="jquery"><file name="jquery-min.js" hash="baae1db8cca4abb2265b0a6e01f1beed"/><file name="jquery-ui-custom-min.js" hash="e37cbc707c78240780a5ce641f476eb3"/></dir><dir name="mventory"><file name="matching.js" hash="2a3d6d34c60aee3f0efe94ff96fd67fc"/></dir></dir><dir name="var"><dir name="connect"><file name="MVentory_API.xml" hash="045afa5d3ddc5c0b8d1b938d99ee0676"/></dir></dir><dir name="app"><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="mventory.xml" hash="902a95b8b78acdf528e13993eb6f5030"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mventory.xml" hash="46b4a123593ad761f3521d5b2d4f71bb"/></dir><dir name="template"><dir name="mventory"><file name="element.phtml" hash="cb233713a0e550b2165280231c24360f"/><file name="matching.phtml" hash="5378e331d15f5daf582021dd96d7f130"/><file name="metadata.phtml" hash="29d84bb98175c7ca358e68f49cffa8f3"/><dir name="matching"><file name="categories.phtml" hash="ab29d30352987276065b9e933acd3fcc"/></dir><dir name="customer"><dir name="edit"><file name="js.phtml" hash="36e6fba58aa4eff02bc57e2a1d628d79"/></dir></dir><dir name="config"><file name="build-info.phtml" hash="03a6160cbda741188468e6f79412e532"/></dir></dir></dir></dir></dir></dir></dir><dir name="code"><dir name="community"><dir name="MVentory"><dir name="API"><dir name="controllers"><file name="AppController.php" hash="607581fc3b4810618ac06770c8656e98"/><file name="CarriersController.php" hash="326f66c967a9ee2216be9c6dae043d97"/><file name="CustomerController.php" hash="029f18706ffe07e8a466eb8c30d0a2f9"/><file name="DropboxController.php" hash="e4f9ee9fcafd993e26e931b31c2228c7"/><file name="ImageController.php" hash="deb5c8227a982e8a328479aa88e8f088"/><file name="LogsController.php" hash="96c331e223a6a94ef9d3ba7192d24935"/><file name="MatchingController.php" hash="071284fc5681b70ead84ff2a98f3d519"/><file name="QrController.php" hash="1678dcc58be2ebcb554e7dc0e7c26d80"/><file name="SwitchController.php" hash="1a00ad2aae0845faea5dbe1475e84d8f"/><dir name="Catalog"><file name="ProductController.php" hash="b507cf269539c6dc3fea5e81bada5664"/></dir></dir><dir name="Block"><file name="Matching.php" hash="da741edb96130c120e4eddf0b677bbd2"/><file name="Metadata.php" hash="4b68a44b1f064093ac94722c40c7c651"/><dir name="Setting"><file name="Buildinfo.php" hash="87e71b9cd02e61dff260609be485ca54"/><file name="Fieldset.php" hash="5b5a717192210b9726e5e86ee75949d9"/></dir><dir name="Matching"><file name="Categories.php" hash="e5ffc5a02aa37a43d90079c66eace63b"/></dir><dir name="Carrier"><dir name="Volumerate"><file name="Grid.php" hash="182f5a1eb264ec7648aae468d5faef99"/></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Exportrates.php" hash="aa4a0e11eaa9330ba35f460582290927"/><file name="Imgcliplog.php" hash="05f8dfba30a9acdc6462b5aadbc154e7"/></dir></dir></dir></dir></dir><dir name="data"><dir name="mventory_setup"><file name="data-upgrade-20-21.php" hash="ab6622b831fc5a806d780eff2eacf75b"/><file name="data-upgrade-23-24.php" hash="9d5bd2a2745585d814d3b203008ef2ad"/><file name="data-upgrade-27-28.php" hash="6b63835702467615f932f6fbac78e97d"/><file name="data-upgrade-28-29.php" hash="db2ca19d3162d377bd1927a22f2b6be0"/></dir></dir><dir name="Helper"><file name="Barcode.php" hash="57de68928ed6da93a02a044bf9f93f86"/><file name="Data.php" hash="d8016b9f4770342d10fe8a047ff1d167"/><file name="Image.php" hash="cb931b138f4c90f7f52cf8303ecb6aa2"/><file name="Imageclipper.php" hash="83634ad59a28a237d5cff3e7b1fb5131"/><file name="Product.php" hash="74a8787d1fc9dc4ff4bf3519d5ecab1e"/><file name="String.php" hash="258c2000ce8feb070211e04816e903e3"/><dir name="Mage"><dir name="Sales"><file name="Data.php" hash="84fbc100be8baa83e5dbb5fcecccbd6b"/></dir></dir><dir name="Product"><file name="Attribute.php" hash="130bee848a2d12bc75ed07383d15c190"/><file name="Configurable.php" hash="5f5eadcb33883752a56ad306fadf32dd"/></dir></dir><dir name="sql"><dir name="mventory_setup"><file name="install-3.php" hash="7514f77abff39b3d359a59978784e275"/><file name="upgrade-10-11.php" hash="fb312c3621c87f7b2222ba56e3f83fb9"/><file name="upgrade-12-13.php" hash="aefb35e0871eafd84864f8052ff21423"/><file name="upgrade-17-18.php" hash="a06e899380dd85a175b331fe5b52f324"/><file name="upgrade-18-19.php" hash="00113090ec00f2385c78d28464871c46"/><file name="upgrade-20-21.php" hash="27d45b15f3ba21df99cd90a3750f9c79"/><file name="upgrade-21-22.php" hash="e882fef187fa158587a4451bfced7e45"/><file name="upgrade-22-23.php" hash="e67150b521f86d35027fcafcf3d6000b"/><file name="upgrade-24-25.php" hash="ef3e432929a236bed6ef0d9c19ca3db5"/><file name="upgrade-25-26.php" hash="e134738e9a55fc1691a38b5eb4cbe73e"/><file name="upgrade-26-27.php" hash="fb5e01ee89497e99426f816240791d4a"/><file name="upgrade-3-4.php" hash="9f04a747fe387598a2871cdc8c9caf87"/><file name="upgrade-8-9.php" hash="0e3e3bb76a0cd039910bf17f2956285f"/><file name="upgrade-9-10.php" hash="05ccf6ee0b530dc5bf63b5fe0bc8f044"/></dir></dir><dir name="Model"><file name="Config.php" hash="c1232e1bf9267f2fa120c96087e69191"/><file name="Matching.php" hash="a54d42a7da654d845a1e79c745a2166b"/><file name="Observer.php" hash="265747686a9c80cbcce805c47501cd95"/><file name="Payment.php" hash="d2745860dfb2eca1adbc0f7b3de6fbfc"/><file name="Shipping.php" hash="043c9d12eebdff5016b84e4d86cc1e77"/><dir name="Setting"><dir name="Backend"><file name="Dbxpath.php" hash="cd9272381487b8a599a63cfe123d57b7"/></dir></dir><dir name="Dataflow"><file name="Api.php" hash="bfb1829343503354daf9db216f313976"/></dir><dir name="Category"><file name="Api.php" hash="9628dc59a845bc36a80a490ee808c338"/></dir><dir name="Carrier"><file name="Volumerate.php" hash="609709fdded050a3ac4204464ef6d922"/></dir><dir name="Stock"><dir name="Item"><file name="Api.php" hash="64473e1600fd51600853eddee75d598e"/></dir></dir><dir name="Config"><dir name="Data"><file name="Websites.php" hash="a7314efd0ca3c6adc8594893c64555aa"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Carrier"><file name="Volumerate.php" hash="2010718655ff39b4559a369403074fa4"/></dir><dir name="Imgclip"><file name="Backupfolder.php" hash="07bd6a17f8e65d96c47ed52d5f1c38e6"/><file name="Csvlog.php" hash="f3780e5079abb09594e018cfb36e4226"/></dir></dir><dir name="Source"><file name="Allowedshippingtypes.php" hash="d2a6259b9278242d3acf8a0c4f34c763"/><file name="Contenttype.php" hash="e91f6a1a495f1a19e1875fbde4ed5aac"/><file name="Customers.php" hash="b3e615aa64cce43d1bb4cadbe41c2ee7"/><file name="Inputmethod.php" hash="0cdc2b42456faeffd2b86481d2a04940"/><file name="Visibility.php" hash="22a8599fb6867d2fe5887f2f9b0246cb"/><file name="Website.php" hash="b8ea07d8f5c82df42c7f0b9be950bb0e"/></dir></dir></dir><dir name="Product"><file name="Action.php" hash="6cb738d6a133a99d0004cad23fed84e5"/><file name="Api.php" hash="630a4b1ae11395b260a22ad880098573"/><dir name="Attribute"><file name="Api.php" hash="f6c53d7a8988119f2f57bfce34dfd1d2"/><dir name="Set"><file name="Api.php" hash="112da5255f9e73b0bc715bccf5c6103f"/></dir><dir name="Media"><file name="Api.php" hash="c8fde457de5a6c59d345f3eed49d24bb"/></dir></dir></dir><dir name="Resource"><file name="Matching.php" hash="790d70f09cc175f643eccdfff754d92c"/><file name="Product.php" hash="e04d66d258b01579e4e6301a01f70771"/><file name="Setup.php" hash="5ce8cb51734c03b947d37a0eff1b7117"/><file name="Sku.php" hash="21379417a6a30c33f74f0a5ffbdfbac7"/><dir name="Carrier"><file name="Volumerate.php" hash="6763c1a02ff9750fd5d8eca703da05dd"/><dir name="Volumerate"><file name="Collection.php" hash="a5e5852a7d58fa31cb49ef7e4c1e38cf"/></dir></dir><dir name="Product"><file name="Collection.php" hash="5e09f3e940fa105aecb8a74bdde295ac"/></dir><dir name="Cart"><file name="Item.php" hash="3e1cbab71c91eca69f225668d55f3d0d"/></dir><dir name="Entity"><file name="Attribute.php" hash="14461aa0ae2e032b9efb16ebf23096af"/></dir><dir name="Order"><file name="Transaction.php" hash="16b62fc85e4b68443941c8212054cce7"/></dir></dir><dir name="Cart"><file name="Api.php" hash="5e154ff60f57f5d11675be3ad9415579"/><file name="Item.php" hash="84ad9830e7e50a55e28fcd4105521a91"/><dir name="Payment"><file name="Api.php" hash="b9253dd46ee980e322d10be6b7b0ffd7"/></dir></dir><dir name="Order"><file name="Api.php" hash="3d65404a24ab282eee8764d0c77ccaa3"/><file name="Transaction.php" hash="0666f26f229b11f30a1db2dfd6e1bf77"/><dir name="Shipment"><file name="Api.php" hash="f7ac72e14810d9af0ab1f876b57e00b9"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="bceda356fa43b9f5bfc7ab0ea91bafca"/><file name="api.xml" hash="e69c9b6a59cb2bcd4324b53d43bd7440"/><file name="config.xml" hash="1e0e76c76b881d080eceb836b50e5ef7"/><file name="system.xml" hash="eee035212b89d57558f7d9299c53ac58"/></dir></dir></dir><dir name="Hackathon"><dir name="PSR0Autoloader"><dir name="Model"><file name="Observer.php" hash="27ff6168c7057b3d116915c50e34c0a6"/><file name="SplAutoloader.php" hash="ca80992ff765e7fa88c507976205f7e2"/></dir><dir name="etc"><file name="config.xml" hash="4b76d9de1d114e8bf5dfef6fae75d973"/></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><file name="Hackathon_PSR0Autoloader.xml" hash="87095bbf80d16f7e97304317761690dd"/><file name="MVentory_API.xml" hash="3002a36d0a49a782ead45dc5bf2d885a"/></dir></dir></dir><dir name="lib"><dir name="Dropbox"><file name="AppInfo.php" hash="b08006228ca38ac11c1a431646536ad9"/><file name="AppInfoLoadException.php" hash="06360c81e5ceafe6d029a72e0d38a58a"/><file name="ArrayEntryStore.php" hash="abfcab905705695de35004a314b05ec0"/><file name="AuthBase.php" hash="b0ac3fdae57cb61152d0f60066cd1e77"/><file name="AuthInfo.php" hash="3166cd194c72d1951d80bb1f7cc572f8"/><file name="AuthInfoLoadException.php" hash="4435a95cc3ad35471b1491834d3462f2"/><file name="Checker.php" hash="7433c56c1a9b53f918a5ad66d3844caf"/><file name="Client.php" hash="1c8fbbf62477bfba8ba7892f624604ef"/><file name="Curl.php" hash="9ff4836a05237b7990eac9a16a6a97ff"/><file name="CurlStreamRelay.php" hash="99b9d4b311110bbef6455cc3769585fc"/><file name="DeserializeException.php" hash="bb74de5ce4ad24ed03efabe52604a300"/><file name="DropboxMetadataHeaderCatcher.php" hash="608e493bbc560cb5d89804b831b38c43"/><file name="Exception.php" hash="1c55eda1bc2e9fb753c1f8f32b95c2e9"/><file name="Host.php" hash="c46c786726fc59c890ee2e588a7c3af6"/><file name="HttpResponse.php" hash="5cb98bfbaac3e48ffb7f1fe4ecab400c"/><file name="OAuth1AccessToken.php" hash="25ed61cb959c4446ec79552a4ce7fa77"/><file name="OAuth1Upgrader.php" hash="f3bc2125746d19bc99c0f4d8887ea3e6"/><file name="Path.php" hash="242a8243ee9f66281058979922e76c7f"/><file name="RequestUtil.php" hash="34e02972f318c99d1a2247bcbb5eeda7"/><file name="SSLTester.php" hash="2aba98547a9915608073438f6370fd15"/><file name="Security.php" hash="252e63a1a377935aa1ef3e40405d3412"/><file name="StreamReadException.php" hash="464bfb0fc75beef2b73e0c5192d0a061"/><file name="ValueStore.php" hash="c932c52f15d67c01a6e3c841f82306dd"/><file name="WebAuth.php" hash="e9e971b77ffc60544a2d9f10a5940eaf"/><file name="WebAuthBase.php" hash="1128a83bbf693e528e68a3c3893aef4f"/><file name="WebAuthNoRedirect.php" hash="87f2494ed95142f7a7e4c968fbb3e09e"/><file name="WriteMode.php" hash="22a3b70bf74feae770e4aa94915a1b1a"/><file name="app-info.json" hash="418aafd4a85212f6b96a1d180c2fd053"/><file name="autoload.php" hash="55bd4af009c75821e0416f33ef5e5fab"/><file name="strict.php" hash="b39f6f3228a1a499ac88ada9ec57ebfd"/><dir name="Exception"><file name="BadRequest.php" hash="5f0ae16a2d28c26bc66ed2e43ac8b4e1"/><file name="BadResponse.php" hash="c534a78bd9436b3ae6130bfbbdf7b8da"/><file name="BadResponseCode.php" hash="9720559b39e522a3acb6a9986b68c711"/><file name="InvalidAccessToken.php" hash="d2106a45d6366d7060d351e89fa738ed"/><file name="NetworkIO.php" hash="1278b1d756b43912f9083985df756305"/><file name="ProtocolError.php" hash="c99f595645d9fba2ddcec415483ea3af"/><file name="RetryLater.php" hash="b3d88a95ffd772f94838ab03c479f6a7"/><file name="ServerError.php" hash="ed7f0cb2dd114e9f60cf12acece68611"/></dir><dir name="certs"><file name="trusted-certs.crt" hash="847f0dc12cc8ddee1969a3ec857facb6"/></dir><dir name="WebAuthException"><file name="BadRequest.php" hash="8b2e77ef6128b2b96c20ec0847c5812b"/><file name="BadState.php" hash="039a2e21cac09f89ab6090e4f9648241"/><file name="Csrf.php" hash="3e2f878255c5366cabcc2880a7c97586"/><file name="NotApproved.php" hash="5d5db96ad13433a081a0db5dcb6d9412"/><file name="Provider.php" hash="5cf549587d95873cfb4a8e96f98d0534"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="mventory"><dir name="css"><file name="styles.css" hash="6e0215c7d35145479634fd50b3b996e3"/></dir></dir></dir></dir></dir></dir></target></contents></package>
var/connect/MVentory_API.xml CHANGED
@@ -1,5 +1,6 @@
1
  <_>
2
- <form_key>YwOz927Fe0jqJayA</form_key>
 
3
  <name>MVentory_API</name>
4
  <channel>community</channel>
5
  <version_ids>
@@ -34,10 +35,10 @@ The extension is free for non-commercial or trial use. Please, request a FREE co
34
  Visit http://mventory.com for more info.</description>
35
  <license>CC BY-NC-ND 4.0</license>
36
  <license_uri>http://creativecommons.org/licenses/by-nc-nd/4.0/</license_uri>
37
- <version>1.4.1</version>
38
- <stability>devel</stability>
39
- <notes>* Fix setting default category on create/updating product
40
- * Fix bug which breaks API settings page in Magento versions prior 1.9 release</notes>
41
  <authors>
42
  <name>
43
  <name>Anatoly A. Kazantsev</name>
@@ -55,23 +56,18 @@ Visit http://mventory.com for more info.</description>
55
  <package>
56
  <name>
57
  <name/>
58
- <name>Mage_Core_Modules</name>
59
  </name>
60
  <channel>
61
  <channel/>
62
- <channel>community</channel>
63
  </channel>
64
  <min>
65
  <min/>
66
- <min/>
67
  </min>
68
  <max>
69
  <max/>
70
- <max/>
71
  </max>
72
  <files>
73
  <files></files>
74
- <files></files>
75
  </files>
76
  </package>
77
  <extension>
1
  <_>
2
+ <form_key>wUYdj2Aes1qrNG5j</form_key>
3
+ <_create/>
4
  <name>MVentory_API</name>
5
  <channel>community</channel>
6
  <version_ids>
35
  Visit http://mventory.com for more info.</description>
36
  <license>CC BY-NC-ND 4.0</license>
37
  <license_uri>http://creativecommons.org/licenses/by-nc-nd/4.0/</license_uri>
38
+ <version>1.5.0</version>
39
+ <stability>stable</stability>
40
+ <notes>* Add additional data (price, QTY, images, etc) to output of product.list API call
41
+ * Other small bug fixies and improvements</notes>
42
  <authors>
43
  <name>
44
  <name>Anatoly A. Kazantsev</name>
56
  <package>
57
  <name>
58
  <name/>
 
59
  </name>
60
  <channel>
61
  <channel/>
 
62
  </channel>
63
  <min>
64
  <min/>
 
65
  </min>
66
  <max>
67
  <max/>
 
68
  </max>
69
  <files>
70
  <files></files>
 
71
  </files>
72
  </package>
73
  <extension>