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 +3 -1
- app/code/community/MVentory/API/Model/Product/Api.php +321 -80
- app/code/community/MVentory/API/Model/Resource/Product/Collection.php +55 -0
- app/code/community/MVentory/API/controllers/AppController.php +6 -5
- app/design/adminhtml/default/default/template/mventory/config/build-info.phtml +2 -2
- package.xml +3 -3
- var/connect/MVentory_API.xml +6 -10
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(
|
|
|
|
|
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 |
-
'
|
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 |
-
'
|
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 |
-
$
|
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 |
-
$
|
138 |
-
|
139 |
-
. 'media/'
|
140 |
-
. $mediaConfig->getBaseMediaUrlAddition();
|
141 |
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
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
|
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 |
-
$
|
234 |
-
|
235 |
-
->
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
|
241 |
if (!$name)
|
242 |
-
$collection
|
243 |
-
|
|
|
|
|
244 |
|
245 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
246 |
|
247 |
-
|
248 |
-
$result['items']
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
|
255 |
-
|
256 |
-
|
|
|
|
|
|
|
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 |
-
$
|
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()
|
|
|
98 |
|
99 |
$response = $this->getResponse();
|
100 |
|
@@ -115,11 +116,11 @@ class MVentory_API_AppController
|
|
115 |
return;
|
116 |
}
|
117 |
|
118 |
-
$
|
119 |
-
|
120 |
-
|
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:
|
22 |
-
<BR/>Build date:
|
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.
|
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>*
|
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>
|
|
|
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.
|
38 |
-
<stability>
|
39 |
-
<notes>*
|
40 |
-
*
|
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>
|