Version Notes
minor bug fixes
Download this release
Release Info
Developer | Albert Andrejev |
Extension | LinnLiveConnect |
Version | 1.1.40 |
Comparing to | |
See all releases |
Code changes from version 1.1.39 to 1.1.40
app/code/local/LinnSystems/LinnLiveConnect/Model/Api/V2.php
CHANGED
@@ -79,7 +79,7 @@ class Factory{
|
|
79 |
$version = intval($version);
|
80 |
|
81 |
if ($version == 0)
|
82 |
-
throw new Mage_Api_Exception('
|
83 |
if (Settings::$VERSION < $version )
|
84 |
throw new Mage_Api_Exception('wrong_version');
|
85 |
}
|
@@ -390,8 +390,7 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
390 |
$indexer = Mage::getSingleton('index/indexer');
|
391 |
$process = $indexer->getProcessByCode('catalog_product_price');
|
392 |
$process->reindexEverything();
|
393 |
-
}
|
394 |
-
catch (Mage_Core_Exception $e) {
|
395 |
throw new Mage_Api_Exception('configurable_creating_error', $e->getMessage());
|
396 |
}
|
397 |
}
|
@@ -533,20 +532,6 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
533 |
return $this->_getStore()->getCode();
|
534 |
}
|
535 |
|
536 |
-
private function _getProductBySku($sku)
|
537 |
-
{
|
538 |
-
if($sku){
|
539 |
-
$product = Mage::getModel('catalog/product');
|
540 |
-
$productId = $product->getIdBySku((string)$sku);
|
541 |
-
if($productId){
|
542 |
-
$product->load($productId);
|
543 |
-
if($product->getId()){
|
544 |
-
return $product;
|
545 |
-
}
|
546 |
-
}
|
547 |
-
}
|
548 |
-
}
|
549 |
-
|
550 |
private function _getStore($storeCode=null)
|
551 |
{
|
552 |
if (Mage::app()->isSingleStoreMode()) {
|
@@ -710,10 +695,10 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
710 |
|
711 |
|
712 |
/*
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
public function configurableProduct($set, $sku, $reindex, $productData, $productsSet, $attributesSet, $store=null)
|
718 |
{
|
719 |
if (!$set || !$sku) {
|
@@ -752,34 +737,26 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
752 |
|
753 |
public function updateConfigurableProduct($productId, $reindex, $productData, $productsSet, $attributesSet, $store=null, $identifierType='id')
|
754 |
{
|
|
|
|
|
|
|
755 |
|
|
|
|
|
|
|
|
|
756 |
|
757 |
$this->_prepareConfigurableData($store, $productData, $assignedProductsArray,
|
758 |
$attributesSetArray, $productsSet, $attributesSet);
|
759 |
|
760 |
try {
|
761 |
$storeId = Mage::app()->getStore($store)->getId();
|
762 |
-
}
|
763 |
-
catch (Mage_Core_Model_Store_Exception $e) {
|
764 |
throw new Mage_Api_Exception('store_not_exists', null);
|
765 |
}
|
766 |
-
/*
|
767 |
-
if ($identifierType == 'id')
|
768 |
-
{
|
769 |
-
$productId = intval($productId);
|
770 |
-
|
771 |
-
if ($productId < 1) {
|
772 |
-
throw new Mage_Api_Exception('product_not_exists', null);
|
773 |
-
}
|
774 |
-
}*/
|
775 |
|
776 |
$_loadedProduct = Mage::helper('catalog/product')->getProduct($productId, $storeId, $identifierType);
|
777 |
|
778 |
-
if (!$_loadedProduct->getId())
|
779 |
-
{
|
780 |
-
throw new Mage_Api_Exception('product_not_exists', null);
|
781 |
-
}
|
782 |
-
|
783 |
$_categoryIds = $_loadedProduct->getCategoryIds();
|
784 |
if (property_exists($productData, 'category_ids'))
|
785 |
{
|
@@ -831,8 +808,8 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
831 |
}
|
832 |
|
833 |
/*
|
834 |
-
|
835 |
-
|
836 |
public function storesList()
|
837 |
{
|
838 |
return ($this->_getCurrentVersion() >= 160);
|
@@ -845,33 +822,24 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
845 |
|
846 |
public function deleteAssigned($productId, $store=null, $identifierType='id')
|
847 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
848 |
$store = $this->_currentStoreCode($store);
|
849 |
|
850 |
try {
|
851 |
$storeId = Mage::app()->getStore($store)->getId();
|
852 |
-
}
|
853 |
-
catch (Mage_Core_Model_Store_Exception $e) {
|
854 |
throw new Mage_Api_Exception('store_not_exists', null);
|
855 |
}
|
856 |
-
/*
|
857 |
-
if ($identifierType == 'id')
|
858 |
-
{
|
859 |
-
$productId = intval($productId);
|
860 |
-
|
861 |
-
if ($productId < 1) {
|
862 |
-
throw new Mage_Api_Exception('product_not_exists', null);
|
863 |
-
}
|
864 |
-
}*/
|
865 |
-
|
866 |
|
867 |
$_loadedProduct = Mage::helper('catalog/product')->getProduct($productId, $storeId, $identifierType);
|
868 |
-
|
869 |
-
if (!$_loadedProduct->getId())
|
870 |
-
{
|
871 |
-
throw new Mage_Api_Exception('product_not_exists', null);
|
872 |
-
}
|
873 |
-
|
874 |
-
|
875 |
$currentWebsites = $_loadedProduct->getWebsiteIds();
|
876 |
$websiteId = $this->_getWebsiteId($store);
|
877 |
$websiteId = $websiteId[0];
|
@@ -957,12 +925,12 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
957 |
}
|
958 |
|
959 |
/*
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
public function productList($page, $perPage, $filters = null, $store = null)
|
967 |
{
|
968 |
$arrayParams = array(
|
@@ -974,8 +942,7 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
974 |
|
975 |
try {
|
976 |
$storeId = Mage::app()->getStore($store)->getId();
|
977 |
-
}
|
978 |
-
catch (Mage_Core_Model_Store_Exception $e) {
|
979 |
throw new Mage_Api_Exception('store_not_exists', null);
|
980 |
}
|
981 |
|
@@ -1032,8 +999,7 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
1032 |
foreach ($preparedFilters as $field => $value) {
|
1033 |
$collection->addFieldToFilter($field, $value);
|
1034 |
}
|
1035 |
-
}
|
1036 |
-
catch (Mage_Core_Exception $e) {
|
1037 |
throw new Mage_Api_Exception('filters_invalid', $e->getMessage());
|
1038 |
}
|
1039 |
}
|
@@ -1213,31 +1179,24 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
1213 |
|
1214 |
public function update($productId, $productData, $store = null, $identifierType = 'id')
|
1215 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1216 |
$store = $this->_currentStoreCode($store);
|
1217 |
try {
|
1218 |
$storeId = Mage::app()->getStore($store)->getId();
|
1219 |
-
}
|
1220 |
-
catch (Mage_Core_Model_Store_Exception $e) {
|
1221 |
throw new Mage_Api_Exception('store_not_exists', null);
|
1222 |
}
|
1223 |
-
/*
|
1224 |
-
if ($identifierType == 'id')
|
1225 |
-
{
|
1226 |
-
$productId = intval($productId);
|
1227 |
-
|
1228 |
-
if ($productId < 1) {
|
1229 |
-
throw new Mage_Api_Exception('product_not_exists', null);
|
1230 |
-
}
|
1231 |
-
}*/
|
1232 |
|
1233 |
$_loadedProduct = Mage::helper('catalog/product')->getProduct($productId, $storeId, $identifierType);
|
1234 |
|
1235 |
-
if (!$_loadedProduct->getId())
|
1236 |
-
{
|
1237 |
-
throw new Mage_Api_Exception('product_not_exists', null);
|
1238 |
-
}
|
1239 |
-
|
1240 |
-
|
1241 |
$_categoryIds = $_loadedProduct->getCategoryIds();
|
1242 |
if (property_exists($productData, 'category_ids'))
|
1243 |
{
|
@@ -1292,11 +1251,6 @@ class LinnLiveMain extends Mage_Core_Model_Abstract{
|
|
1292 |
|
1293 |
public function create($type, $set, $sku, $productData, $store = null)
|
1294 |
{
|
1295 |
-
$product = $this->_getProductBySku($sku);
|
1296 |
-
if($product){
|
1297 |
-
return $product->getId();
|
1298 |
-
}
|
1299 |
-
|
1300 |
$store = $this->_currentStoreCode($store);
|
1301 |
|
1302 |
$DefaultStore = $this->_getStore();
|
@@ -1443,7 +1397,7 @@ class LinnLiveEnterprise extends LinnLiveMain{
|
|
1443 |
}
|
1444 |
else
|
1445 |
{
|
1446 |
-
|
1447 |
}
|
1448 |
}
|
1449 |
else
|
@@ -1454,7 +1408,7 @@ class LinnLiveEnterprise extends LinnLiveMain{
|
|
1454 |
}
|
1455 |
else
|
1456 |
{
|
1457 |
-
|
1458 |
}
|
1459 |
}
|
1460 |
$i++;
|
79 |
$version = intval($version);
|
80 |
|
81 |
if ($version == 0)
|
82 |
+
throw new Mage_Api_Exception('version is not specified');
|
83 |
if (Settings::$VERSION < $version )
|
84 |
throw new Mage_Api_Exception('wrong_version');
|
85 |
}
|
390 |
$indexer = Mage::getSingleton('index/indexer');
|
391 |
$process = $indexer->getProcessByCode('catalog_product_price');
|
392 |
$process->reindexEverything();
|
393 |
+
} catch (Mage_Core_Exception $e) {
|
|
|
394 |
throw new Mage_Api_Exception('configurable_creating_error', $e->getMessage());
|
395 |
}
|
396 |
}
|
532 |
return $this->_getStore()->getCode();
|
533 |
}
|
534 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
535 |
private function _getStore($storeCode=null)
|
536 |
{
|
537 |
if (Mage::app()->isSingleStoreMode()) {
|
695 |
|
696 |
|
697 |
/*
|
698 |
+
*
|
699 |
+
* Public functions(API)
|
700 |
+
*
|
701 |
+
*/
|
702 |
public function configurableProduct($set, $sku, $reindex, $productData, $productsSet, $attributesSet, $store=null)
|
703 |
{
|
704 |
if (!$set || !$sku) {
|
737 |
|
738 |
public function updateConfigurableProduct($productId, $reindex, $productData, $productsSet, $attributesSet, $store=null, $identifierType='id')
|
739 |
{
|
740 |
+
if ($identifierType == 'id')
|
741 |
+
{
|
742 |
+
$productId = intval($productId);
|
743 |
|
744 |
+
if ($productId < 1) {
|
745 |
+
throw new Mage_Api_Exception('product_not_exists', null);
|
746 |
+
}
|
747 |
+
}
|
748 |
|
749 |
$this->_prepareConfigurableData($store, $productData, $assignedProductsArray,
|
750 |
$attributesSetArray, $productsSet, $attributesSet);
|
751 |
|
752 |
try {
|
753 |
$storeId = Mage::app()->getStore($store)->getId();
|
754 |
+
} catch (Mage_Core_Model_Store_Exception $e) {
|
|
|
755 |
throw new Mage_Api_Exception('store_not_exists', null);
|
756 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
757 |
|
758 |
$_loadedProduct = Mage::helper('catalog/product')->getProduct($productId, $storeId, $identifierType);
|
759 |
|
|
|
|
|
|
|
|
|
|
|
760 |
$_categoryIds = $_loadedProduct->getCategoryIds();
|
761 |
if (property_exists($productData, 'category_ids'))
|
762 |
{
|
808 |
}
|
809 |
|
810 |
/*
|
811 |
+
* Checks if this Magento server has valid Extension installed
|
812 |
+
*/
|
813 |
public function storesList()
|
814 |
{
|
815 |
return ($this->_getCurrentVersion() >= 160);
|
822 |
|
823 |
public function deleteAssigned($productId, $store=null, $identifierType='id')
|
824 |
{
|
825 |
+
if ($identifierType == 'id')
|
826 |
+
{
|
827 |
+
$productId = intval($productId);
|
828 |
+
|
829 |
+
if ($productId < 1) {
|
830 |
+
throw new Mage_Api_Exception('product_not_exists', null);
|
831 |
+
}
|
832 |
+
}
|
833 |
+
|
834 |
$store = $this->_currentStoreCode($store);
|
835 |
|
836 |
try {
|
837 |
$storeId = Mage::app()->getStore($store)->getId();
|
838 |
+
} catch (Mage_Core_Model_Store_Exception $e) {
|
|
|
839 |
throw new Mage_Api_Exception('store_not_exists', null);
|
840 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
841 |
|
842 |
$_loadedProduct = Mage::helper('catalog/product')->getProduct($productId, $storeId, $identifierType);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
843 |
$currentWebsites = $_loadedProduct->getWebsiteIds();
|
844 |
$websiteId = $this->_getWebsiteId($store);
|
845 |
$websiteId = $websiteId[0];
|
925 |
}
|
926 |
|
927 |
/*
|
928 |
+
* Implementation of catalogProductList because of bug in associativeArray.
|
929 |
+
* Extended to filter by category id too.
|
930 |
+
*
|
931 |
+
* Use 'entity_id' for product_id,
|
932 |
+
* 'type_id' instead of product type.
|
933 |
+
*/
|
934 |
public function productList($page, $perPage, $filters = null, $store = null)
|
935 |
{
|
936 |
$arrayParams = array(
|
942 |
|
943 |
try {
|
944 |
$storeId = Mage::app()->getStore($store)->getId();
|
945 |
+
} catch (Mage_Core_Model_Store_Exception $e) {
|
|
|
946 |
throw new Mage_Api_Exception('store_not_exists', null);
|
947 |
}
|
948 |
|
999 |
foreach ($preparedFilters as $field => $value) {
|
1000 |
$collection->addFieldToFilter($field, $value);
|
1001 |
}
|
1002 |
+
} catch (Mage_Core_Exception $e) {
|
|
|
1003 |
throw new Mage_Api_Exception('filters_invalid', $e->getMessage());
|
1004 |
}
|
1005 |
}
|
1179 |
|
1180 |
public function update($productId, $productData, $store = null, $identifierType = 'id')
|
1181 |
{
|
1182 |
+
if ($identifierType == 'id')
|
1183 |
+
{
|
1184 |
+
$productId = intval($productId);
|
1185 |
+
|
1186 |
+
if ($productId < 1) {
|
1187 |
+
throw new Mage_Api_Exception('product_not_exists', null);
|
1188 |
+
}
|
1189 |
+
}
|
1190 |
+
|
1191 |
$store = $this->_currentStoreCode($store);
|
1192 |
try {
|
1193 |
$storeId = Mage::app()->getStore($store)->getId();
|
1194 |
+
} catch (Mage_Core_Model_Store_Exception $e) {
|
|
|
1195 |
throw new Mage_Api_Exception('store_not_exists', null);
|
1196 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1197 |
|
1198 |
$_loadedProduct = Mage::helper('catalog/product')->getProduct($productId, $storeId, $identifierType);
|
1199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1200 |
$_categoryIds = $_loadedProduct->getCategoryIds();
|
1201 |
if (property_exists($productData, 'category_ids'))
|
1202 |
{
|
1251 |
|
1252 |
public function create($type, $set, $sku, $productData, $store = null)
|
1253 |
{
|
|
|
|
|
|
|
|
|
|
|
1254 |
$store = $this->_currentStoreCode($store);
|
1255 |
|
1256 |
$DefaultStore = $this->_getStore();
|
1397 |
}
|
1398 |
else
|
1399 |
{
|
1400 |
+
$productData->additional_attributes->single_data[$i]->value = $_availableOptions[$option->attribute_id][strtolower($option->label)];
|
1401 |
}
|
1402 |
}
|
1403 |
else
|
1408 |
}
|
1409 |
else
|
1410 |
{
|
1411 |
+
$productData->additional_attributes->single_data[$i]->value = $option->value;
|
1412 |
}
|
1413 |
}
|
1414 |
$i++;
|
app/etc/modules/LinnSystems_LinnLiveConnect.xml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<LinnSystems_LinnLiveConnect>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>local</codePool>
|
7 |
+
</LinnSystems_LinnLiveConnect>
|
8 |
+
</modules>
|
9 |
+
</config>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>LinnLiveConnect</name>
|
4 |
-
<version>1.1.
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL v2</license>
|
7 |
<channel>community</channel>
|
@@ -10,10 +10,10 @@
|
|
10 |
<description>Extended SOAP WS-I compliant API to support integration with LinnLive2 (http://www.linnlive.com).
|
11 |
Contains some workarounds to avoid bugs in original Magento modules and additional functionality to operate Magento store remotely.</description>
|
12 |
<notes>minor bug fixes</notes>
|
13 |
-
<authors><author><name>Albert Andrejev</name><user>albert_andrejev</user><email>albert@linnsystems.com</email></author></authors>
|
14 |
<date>2014-04-16</date>
|
15 |
-
<time>
|
16 |
-
<contents><target name="magelocal"><dir name="LinnSystems"><dir name="LinnLiveConnect"><dir name="Helper"><file name="Data.php" hash="5fe5216de67d4e69a0f418b0cd7780ee"/></dir><dir name="Model"><dir name="Api"><file name="V2.php" hash="
|
17 |
<compatible/>
|
18 |
-
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php
|
19 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>LinnLiveConnect</name>
|
4 |
+
<version>1.1.40</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>GPL v2</license>
|
7 |
<channel>community</channel>
|
10 |
<description>Extended SOAP WS-I compliant API to support integration with LinnLive2 (http://www.linnlive.com).
|
11 |
Contains some workarounds to avoid bugs in original Magento modules and additional functionality to operate Magento store remotely.</description>
|
12 |
<notes>minor bug fixes</notes>
|
13 |
+
<authors><author><name>Albert Andrejev</name><user>albert_andrejev</user><email>albert@linnsystems.com</email></author><author><name>Pavel Nikolajev</name><user>Pavel_LL2</user><email>pavel.nokolajev@linnsystems.com</email></author><author><name>Aleksandr Kornev</name><user>alex_LL2</user><email>alex.kornevs@linnsystems.com</email></author></authors>
|
14 |
<date>2014-04-16</date>
|
15 |
+
<time>12:49:47</time>
|
16 |
+
<contents><target name="magelocal"><dir name="LinnSystems"><dir name="LinnLiveConnect"><dir name="Helper"><file name="Data.php" hash="5fe5216de67d4e69a0f418b0cd7780ee"/></dir><dir name="Model"><dir name="Api"><file name="V2.php" hash="488b6fe5c1eb60f1d812387cf570a046"/></dir></dir><dir name="etc"><file name="api.xml" hash="2d53cb9b318de468f6d2e3d388bb8732"/><file name="config.xml" hash="2d1d6338d93e36b730efde622893b4e6"/><file name="wsdl.xml" hash="fc21f2963c1253f5f40e5e8414312174"/><file name="wsi.xml" hash="ef000d5115f5988664f58df8b9139e5e"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="LinnSystems_LinnLiveConnect.xml" hash="19c48712cd0516815d6784592ada0881"/></dir></target></contents>
|
17 |
<compatible/>
|
18 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
19 |
</package>
|