Plumslice_Api - Version 1.0.0

Version Notes

PlumSliceMagento extension extends SOAP v1.0 API for some of missing features required for Catalog Synching and searching functionality.

Download this release

Release Info

Developer PlumSlice Labs
Extension Plumslice_Api
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

app/code/community/Plumslice/Api/Block/Adminhtml/System/Config/Fieldset/Hint.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Define a Class Plumslice_Api_Block_Adminhtml_System_Config_Fieldset_Hint
4
+
5
+ class Plumslice_Api_Block_Adminhtml_System_Config_Fieldset_Hint
6
+ extends Mage_Adminhtml_Block_Abstract
7
+ implements Varien_Data_Form_Element_Renderer_Interface
8
+ {
9
+ protected $_template = 'plumslice/api/system/config/fieldset/hint.phtml';
10
+
11
+ public function render(Varien_Data_Form_Element_Abstract $element)
12
+ {
13
+ return $this->toHtml();
14
+ }
15
+ }
app/code/community/Plumslice/Api/Helper/Catalog/Product.php ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Define a Class Plumslice_Api_Helper_Catalog_Product
4
+
5
+ class Plumslice_Api_Helper_Catalog_Product extends Mage_Core_Helper_Abstract
6
+ {
7
+ const CATEGORIES_SEPARATOR_PATH_XML = 'plumslice_api/config/categories_separator';
8
+
9
+ /**
10
+ * @param Mage_Catalog_Model_Product $product
11
+ * @param array $simpleSkus
12
+ * @param array $priceChanges
13
+ * @return Plumslice_Api_Helper_Catalog_Product
14
+ *
15
+ */
16
+ public function associateProducts(Mage_Catalog_Model_Product $product, $simpleSkus, $priceChanges = array(), $configurableAttributes = array())
17
+ {
18
+ if (!empty($simpleSkus)) {
19
+ $newProductIds = Mage::getModel('catalog/product')->getCollection()
20
+ ->addFieldToFilter('sku', array('in' => (array) $simpleSkus))
21
+ ->addFieldToFilter('type_id', Mage_Catalog_Model_Product_Type::TYPE_SIMPLE)
22
+ ->getAllIds();
23
+
24
+ $oldProductIds = Mage::getModel('catalog/product_type_configurable')->setProduct($product)->getUsedProductCollection()
25
+ ->addAttributeToSelect('*')
26
+ ->addFilterByRequiredOptions()
27
+ ->getAllIds();
28
+
29
+ $usedProductIds = array_diff($newProductIds, $oldProductIds);
30
+
31
+ if (!empty($newProductIds) && $product->isConfigurable()) {
32
+ $this->_initConfigurableAttributesData($product, $newProductIds, $priceChanges, $configurableAttributes);
33
+ }
34
+
35
+ if (!empty($usedProductIds) && $product->isGrouped()) {
36
+ $relations = array_fill_keys($usedProductIds, array('qty' => 0, 'position' => 0));
37
+ $product->setGroupedLinkData($relations);
38
+ }
39
+ }
40
+
41
+ return $this;
42
+ }
43
+
44
+ protected function _getCatagoriesSeparator()
45
+ {
46
+ return Mage::getStoreConfig(self::CATEGORIES_SEPARATOR_PATH_XML);
47
+ }
48
+
49
+ /**
50
+ * @return mixed
51
+ * @param string $label
52
+ * @param string $attributeCode
53
+ */
54
+ public function getOptionKeyByLabel($attributeCode, $label)
55
+ {
56
+ $attribute = Mage::getModel('catalog/product')->getResource()
57
+ ->getAttribute($attributeCode);
58
+ if ($attribute && $attribute->getId() && $attribute->usesSource()) {
59
+ foreach ($attribute->getSource()->getAllOptions(true, true) as $option) {
60
+ if ($label == $option['label']) {
61
+ return $option['value'];
62
+ }
63
+ }
64
+ }
65
+
66
+ return $label;
67
+ }
68
+
69
+ /**
70
+ * @param array $categoryNames
71
+ * @return array
72
+ *
73
+ */
74
+ public function getCategoryIdsByNames($categoryNames)
75
+ {
76
+ $categories = array();
77
+ $separator = $this->_getCatagoriesSeparator();
78
+ foreach ($categoryNames as $category) {
79
+ if (is_string($category) && !is_numeric($category)) {
80
+ $pieces = explode($separator, $category);
81
+ $addCategories = array();
82
+ $parentIds = array();
83
+ foreach ($pieces as $level => $name) {
84
+ $collection = Mage::getModel('catalog/category')->getCollection()
85
+ ->setStoreId(0)
86
+ ->addFieldToFilter('level', $level + 2)
87
+ ->addAttributeToFilter('name', $name);
88
+ if (!empty($parentIds)) {
89
+ $collection->getSelect()->where('parent_id IN (?)', $parentIds);
90
+ }
91
+ $parentIds = array();
92
+ if ($collection->count()) {
93
+ foreach ($collection as $category) {
94
+ $addCategories[] = (int) $category->getId();
95
+ if ($level > 0) {
96
+ $addCategories[] = (int) $category->getParentId();
97
+ }
98
+ $parentIds[] = $category->getId();
99
+ }
100
+ }
101
+ }
102
+ if (!empty($addCategories)) {
103
+ $categories = array_merge($categories, $addCategories);
104
+ }
105
+ }
106
+ }
107
+
108
+ return !empty($categories) ? $categories : $categoryNames;
109
+ }
110
+
111
+ /**
112
+ * @return Plumslice_Api_Helper_Catalog_Product
113
+ * @param array $priceChanges
114
+ * @param array $simpleProductIds
115
+ * @param Mage_Catalog_Model_Product $mainProduct
116
+ */
117
+ protected function _initConfigurableAttributesData(Mage_Catalog_Model_Product $mainProduct, $simpleProductIds, $priceChanges = array(), $configurableAttributes = array())
118
+ {
119
+ if (!$mainProduct->isConfigurable() || empty($simpleProductIds)) {
120
+ return $this;
121
+ }
122
+
123
+ $mainProduct->setConfigurableProductsData(array_flip($simpleProductIds));
124
+ $productType = $mainProduct->getTypeInstance(true);
125
+ $productType->setProduct($mainProduct);
126
+ $attributesData = $productType->getConfigurableAttributesAsArray();
127
+
128
+ if (empty($attributesData)) {
129
+ // Auto generation if configurable product has no attribute
130
+ $attributeIds = array();
131
+ foreach ($productType->getSetAttributes() as $attribute) {
132
+ if ($productType->canUseAttribute($attribute)) {
133
+ $attributeIds[] = $attribute->getAttributeId();
134
+ }
135
+ }
136
+ $productType->setUsedProductAttributeIds($attributeIds);
137
+ $attributesData = $productType->getConfigurableAttributesAsArray();
138
+ }
139
+ if (!empty($configurableAttributes)){
140
+ foreach ($attributesData as $idx => $val) {
141
+ if (!in_array($val['attribute_id'], $configurableAttributes)) {
142
+ unset($attributesData[$idx]);
143
+ }
144
+ }
145
+ }
146
+
147
+ $products = Mage::getModel('catalog/product')->getCollection()
148
+ ->addIdFilter($simpleProductIds);
149
+
150
+ if (count($products)) {
151
+ foreach ($attributesData as &$attribute) {
152
+ $attribute['label'] = $attribute['frontend_label'];
153
+ $attributeCode = $attribute['attribute_code'];
154
+ foreach ($products as $product) {
155
+ $product->load($product->getId());
156
+ $optionId = $product->getData($attributeCode);
157
+ $isPercent = 0;
158
+ $priceChange = 0;
159
+ if (!empty($priceChanges) && isset($priceChanges[$attributeCode])) {
160
+ $optionText = $product->getResource()
161
+ ->getAttribute($attribute['attribute_code'])
162
+ ->getSource()
163
+ ->getOptionText($optionId);
164
+ if (isset($priceChanges[$attributeCode][$optionText])) {
165
+ if (false !== strpos($priceChanges[$attributeCode][$optionText], '%')) {
166
+ $isPercent = 1;
167
+ }
168
+ $priceChange = preg_replace('/[^0-9\.,-]/', '', $priceChanges[$attributeCode][$optionText]);
169
+ $priceChange = (float) str_replace(',', '.', $priceChange);
170
+ }
171
+ }
172
+ $attribute['values'][$optionId] = array(
173
+ 'value_index' => $optionId,
174
+ 'is_percent' => $isPercent,
175
+ 'pricing_value' => $priceChange,
176
+ );
177
+ }
178
+ }
179
+ $mainProduct->setConfigurableAttributesData($attributesData);
180
+ }
181
+
182
+ return $this;
183
+ }
184
+ }
app/code/community/Plumslice/Api/Helper/Data.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Define a Class Plumslice_Api_Helper_Data
4
+
5
+ class Plumslice_Api_Helper_Data extends Mage_Core_Helper_Abstract
6
+ {
7
+ /**
8
+ * @param string $attrSetName
9
+ * @return string
10
+ *
11
+ */
12
+ public function getAttributeSetIdByName($attrSetName, $entityType = 'catalog_product')
13
+ {
14
+ return Mage::getSingleton('catalog/config')
15
+ ->getAttributeSetId($entityType, $attrSetName);
16
+ }
17
+ }
app/code/community/Plumslice/Api/Model/Catalog/Product/Api.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // Define a Class
3
+ class Plumslice_Api_Model_Catalog_Product_Api extends Mage_Catalog_Model_Product_Api
4
+ {
5
+ public function create($type, $set, $sku, $productData, $store = null)
6
+ {
7
+ // It will allow attribute set name instead id
8
+ if (is_string($set) && !is_numeric($set)) {
9
+ $set = Mage::helper('plumslice_api')->getAttributeSetIdByName($set);
10
+ }
11
+
12
+ return parent::create($type, $set, $sku, $productData, $store);
13
+ }
14
+
15
+ protected function _prepareDataForSave($product, $productData)
16
+ {
17
+ /* Define @var $product Mage_Catalog_Model_Product */
18
+
19
+ if (isset($productData['categories'])) {
20
+ $categoryIds = Mage::helper('plumslice_api/catalog_product')
21
+ ->getCategoryIdsByNames((array) $productData['categories']);
22
+ if (!empty($categoryIds)) {
23
+ $productData['categories'] = array_unique($categoryIds);
24
+ }
25
+ }
26
+
27
+ if (isset($productData['website_ids'])) {
28
+ $websiteIds = $productData['website_ids'];
29
+ foreach ($websiteIds as $i => $websiteId) {
30
+ if (!is_numeric($websiteId)) {
31
+ $website = Mage::app()->getWebsite($websiteId);
32
+ if ($website->getId()) {
33
+ $websiteIds[$i] = $website->getId();
34
+ }
35
+ }
36
+ }
37
+ $product->setWebsiteIds($websiteIds);
38
+ unset($productData['website_ids']);
39
+ }
40
+
41
+ foreach ($productData as $code => $value) {
42
+ $productData[$code] = Mage::helper('plumslice_api/catalog_product')
43
+ ->getOptionKeyByLabel($code, $value);
44
+ }
45
+
46
+ parent::_prepareDataForSave($product, $productData);
47
+
48
+ if (isset($productData['associated_skus'])) {
49
+ $simpleSkus = $productData['associated_skus'];
50
+ $priceChanges = isset($productData['price_changes']) ? $productData['price_changes'] : array();
51
+ $configurableAttributes = isset($productData['configurable_attributes']) ? $productData['configurable_attributes'] : array();
52
+ Mage::helper('plumslice_api/catalog_product')->associateProducts($product, $simpleSkus, $priceChanges, $configurableAttributes);
53
+ }
54
+ }
55
+ }
app/code/community/Plumslice/Api/Model/Catalog/Product/Api/V2.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //Define a Class
3
+ class Plumslice_Api_Model_Catalog_Product_Api_V2 extends Mage_Catalog_Model_Product_Api_V2
4
+ {
5
+ public function create($type, $set, $sku, $productData, $store = null)
6
+ {
7
+ // It will allow attribute set name instead of id
8
+ if (is_string($set) && !is_numeric($set)) {
9
+ $set = Mage::helper('plumslice_api')->getAttributeSetIdByName($set);
10
+ }
11
+
12
+ return parent::create($type, $set, $sku, $productData, $store);
13
+ }
14
+
15
+ protected function _prepareDataForSave($product, $productData)
16
+ {
17
+ /* Define @var $product Mage_Catalog_Model_Product */
18
+
19
+ if (property_exists($productData, 'categories')) {
20
+ $categoryIds = Mage::helper('plumslice_api/catalog_product')
21
+ ->getCategoryIdsByNames((array) $productData->categories);
22
+ if (!empty($categoryIds)) {
23
+ $productData->categories = array_unique($categoryIds);
24
+ }
25
+ }
26
+
27
+ if (property_exists($productData, 'additional_attributes')) {
28
+ $singleDataExists = property_exists((object) $productData->additional_attributes, 'single_data');
29
+ $multiDataExists = property_exists((object) $productData->additional_attributes, 'multi_data');
30
+ if ($singleDataExists || $multiDataExists) {
31
+ if ($singleDataExists) {
32
+ foreach ($productData->additional_attributes->single_data as $_attribute) {
33
+ $_attrCode = $_attribute->key;
34
+ $productData->$_attrCode = Mage::helper('plumslice_api/catalog_product')
35
+ ->getOptionKeyByLabel($_attrCode, $_attribute->value);
36
+ }
37
+ }
38
+ if ($multiDataExists) {
39
+ foreach ($productData->additional_attributes->multi_data as $_attribute) {
40
+ $_attrCode = $_attribute->key;
41
+ $productData->$_attrCode = Mage::helper('plumslice_api/catalog_product')
42
+ ->getOptionKeyByLabel($_attrCode, $_attribute->value);
43
+ }
44
+ }
45
+ } else {
46
+ foreach ($productData->additional_attributes as $_attrCode => $_value) {
47
+ $productData->$_attrCode = Mage::helper('plumslice_api/catalog_product')
48
+ ->getOptionKeyByLabel($_attrCode, $_value);
49
+ }
50
+ }
51
+ unset($productData->additional_attributes);
52
+ }
53
+
54
+ if (property_exists($productData, 'website_ids')) {
55
+ $websiteIds = (array) $productData->website_ids;
56
+ foreach ($websiteIds as $i => $websiteId) {
57
+ if (!is_numeric($websiteId)) {
58
+ $website = Mage::app()->getWebsite($websiteId);
59
+ if ($website->getId()) {
60
+ $websiteIds[$i] = $website->getId();
61
+ }
62
+ }
63
+ }
64
+ $product->setWebsiteIds($websiteIds);
65
+ unset($productData->website_ids);
66
+ }
67
+
68
+ parent::_prepareDataForSave($product, $productData);
69
+
70
+ if (property_exists($productData, 'associated_skus')) {
71
+ $simpleSkus = (array) $productData->associated_skus;
72
+ $priceChanges = array();
73
+ if (property_exists($productData, 'price_changes')) {
74
+ if (key($productData->price_changes) === 0) {
75
+ $priceChanges = $productData->price_changes[0];
76
+ } else {
77
+ $priceChanges = $productData->price_changes;
78
+ }
79
+ }
80
+ $configurableAttributes = array();
81
+ if (property_exists($productData, 'configurable_attributes')) {
82
+ $configurableAttributes = $productData->configurable_attributes;
83
+ }
84
+ Mage::helper('plumslice_api/catalog_product')->associateProducts($product, $simpleSkus, $priceChanges, $configurableAttributes);
85
+ }
86
+ }
87
+ }
app/code/community/Plumslice/Api/etc/adminhtml.xml ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <acl>
4
+ <resources>
5
+ <admin>
6
+ <children>
7
+ <system>
8
+ <children>
9
+ <config>
10
+ <children>
11
+ <plumslice_api>
12
+ <title>Plumslice API</title>
13
+ </plumslice_api>
14
+ </children>
15
+ </config>
16
+ </children>
17
+ </system>
18
+ </children>
19
+ </admin>
20
+ </resources>
21
+ </acl>
22
+ </config>
app/code/community/Plumslice/Api/etc/config.xml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Plumslice_Api>
5
+ <version>1.0.0</version>
6
+ </Plumslice_Api>
7
+ </modules>
8
+ <global>
9
+ <helpers>
10
+ <plumslice_api>
11
+ <class>Plumslice_Api_Helper</class>
12
+ </plumslice_api>
13
+ </helpers>
14
+ <models>
15
+ <catalog>
16
+ <rewrite>
17
+ <product_api>Plumslice_Api_Model_Catalog_Product_Api</product_api>
18
+ <product_api_v2>Plumslice_Api_Model_Catalog_Product_Api_V2</product_api_v2>
19
+ </rewrite>
20
+ </catalog>
21
+ </models>
22
+ <blocks>
23
+ <plumslice_api>
24
+ <class>Plumslice_Api_Block</class>
25
+ </plumslice_api>
26
+ </blocks>
27
+ </global>
28
+ </config>
app/code/community/Plumslice/Api/etc/system.xml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <plumslice translate="label">
5
+ <label><![CDATA[<div><img src="https://plumslice.com/images/mrd/logo-PlumSlice-Cloud-Based-Product-Management-Suite-for-eCommerce.png" alt="PlumSlice Labs" title="PlumSlice Labs" width="108" height="23" style="display:block;" /></div>]]></label>
6
+ <sort_order>1000</sort_order>
7
+ </plumslice>
8
+ </tabs>
9
+ <sections>
10
+ <plumslice_api translate="label" module="plumslice_api">
11
+ <label>Plumslice API</label>
12
+ <tab>plumslice</tab>
13
+ <sort_order>101</sort_order>
14
+ <show_in_store>1</show_in_store>
15
+ <show_in_website>1</show_in_website>
16
+ <show_in_default>1</show_in_default>
17
+
18
+
19
+ <groups>
20
+ <hint>
21
+ <frontend_model>plumslice_api/adminhtml_system_config_fieldset_hint</frontend_model>
22
+ <sort_order>0</sort_order>
23
+ <show_in_website>1</show_in_website>
24
+ <show_in_default>1</show_in_default>
25
+ <show_in_store>1</show_in_store>
26
+ </hint>
27
+ </groups>
28
+ </plumslice_api>
29
+ </sections>
30
+ </config>
app/code/community/Plumslice/Api/etc/wsdl.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <definitions xmlns:typens="urn:{{var wsdl.name}}" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
4
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
5
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
6
+ name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}">
7
+ <types>
8
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
9
+ <complexType name="catalogProductCreateEntity">
10
+ <all>
11
+ <element name="configurable_attributes" type="typens:ArrayOfString" minOccurs="0"/>
12
+ <element name="price_changes" type="typens:associativeArray" minOccurs="0" />
13
+ <element name="associated_skus" type="typens:ArrayOfString" minOccurs="0"/>
14
+ </all>
15
+ </complexType>
16
+ </schema>
17
+ </types>
18
+ </definitions>
app/code/community/Plumslice/Api/etc/wsi.xml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <wsdl:definitions xmlns:typens="urn:{{var wsdl.name}}"
3
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
5
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
6
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
7
+ name="{{var wsdl.name}}"
8
+ targetNamespace="urn:{{var wsdl.name}}">
9
+ <wsdl:types>
10
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:{{var wsdl.name}}">
11
+ <xsd:complexType name="complexMultiFilter">
12
+ <xsd:sequence>
13
+ <xsd:element name="key" type="xsd:string" />
14
+ <xsd:element name="value" type="typens:associativeArray" />
15
+ </xsd:sequence>
16
+ </xsd:complexType>
17
+ <xsd:complexType name="complexMultiArray">
18
+ <xsd:sequence>
19
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="complexObjectArray" type="typens:complexMultiFilter" />
20
+ </xsd:sequence>
21
+ </xsd:complexType>
22
+ <xsd:complexType name="catalogProductCreateEntity">
23
+ <xsd:sequence>
24
+ <xsd:element name="configurable_attributes" type="typens:ArrayOfString" minOccurs="0" />
25
+ <xsd:element name="price_changes" type="typens:complexMultiArray" minOccurs="0" />
26
+ <xsd:element name="associated_skus" type="typens:ArrayOfString" minOccurs="0" />
27
+ </xsd:sequence>
28
+ </xsd:complexType>
29
+ </xsd:schema>
30
+ </wsdl:types>
31
+ </wsdl:definitions>
app/design/adminhtml/base/default/template/plumslice/api/system/config/fieldset/hint.phtml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Define @var $this Plumslice_Api_Block_Adminhtml_System_Config_Fieldset_Hint
4
+ *
5
+ */
6
+ ?>
7
+ <div class="box">
8
+ <div style="padding-left:55px;min-height:42px;">
9
+ <h4><?php echo $this->helper('plumslice_api')->__('PlumSliceMagento extension extends SOAP v1.0 API for some of missing features required for Catalog Synching and searching functionality.'); ?></h4>
10
+ <p style="margin-bottom:0;"><?php echo $this->helper('plumslice_api')->__('Full overview available'); ?> <a href="<?php echo $this->escapeHtml($this->helper('plumslice_api')->__('http://www.plumslice.com/')); ?>" target="_blank"><?php echo $this->helper('plumslice_api')->__('here'); ?></a>.</p>
11
+ </div>
12
+ </div>
app/etc/modules/Plumslice_Api.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Plumslice_Api>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Plumslice_Api>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Plumslice_Api</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/OSL-3.0">OSL-3.0</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>PlumSlice PIM API Magento extension provides seamless and automated Catalog( Products, Digital Assets, Hierarchies, and Attributes) management using the Plumslice PIM application within the PlumSlice Collaboration Suite. The PlumSlice PIM out-of-box auto-synching process enables customers to manage enhanced and comprehensive product data in PIM which then automatically informs your Magento e-commerce site with the information needed to optimize your customer experience.</summary>
10
+ <description>PlumSlice Labs(https://www.plumslice.com) makes optimizing the digital commerce ecosystem possible through enhanced product data management including: product research and conceptualization, product development and selection, vendor collaboration and product information and digital asset management - by uniting all the players in product data management including multiple internal stakeholders and external partners as a single highly productive team. All PlumSlice SAAS applications leverage best-in-class automation, workflow management and collaboration techniques as well as purpose-designed internal architecture for added economies and value.&#xD;
11
+ &#xD;
12
+ PlumSlice PIM(product information management)&#xA0;is an industry leading enterprise level fully configurable and workflow-based SAAS application which enables the systemic managementof all product information from one central location. Automation, collaboration and workflow management combine to streamline time to market for new products, reduce costly product data errors, truncate replatforming timelines and drive an exponential improvement in the ability to deliver a truly relevant customer experience across multiple channels with limited resources. PlumSlice PIM was designed for touchscreens and includes desktop, iPad and mobile applications. Work can be done anywhere, at any time, on any device.&#xD;
13
+ PlumSlice PIM API Magento extension provides seamless and automated Catalog ( Products, Digital Assets, Hierarchies, and Attributes) management using the Plumslice PIM application within the PlumSlice Colllaboration Suite. The PlumSlice PIM out-of-box auto-synching process enables customers to manage enhanced and comprehensive product data in PIM which then automatically informs your Magento e-commerce site with the information needed to optimize your customer experience.&#xD;
14
+ &#xD;
15
+ PlumSliceMagento extension extends SOAP v1.0 API for some of missing features required for Catalog Synching and searching functionality.</description>
16
+ <notes>PlumSliceMagento extension extends SOAP v1.0 API for some of missing features required for Catalog Synching and searching functionality.</notes>
17
+ <authors><author><name>PlumSlice Labs</name><user>bhargav_shah</user><email>bshah@plumslice.com</email></author></authors>
18
+ <date>2015-12-28</date>
19
+ <time>13:12:11</time>
20
+ <contents><target name="magecommunity"><dir name="Plumslice"><dir name="Api"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Hint.php" hash="3f2b55222c8e52e09133c5b11aeea84b"/></dir></dir></dir></dir></dir><dir name="Helper"><dir name="Catalog"><file name="Product.php" hash="0b8d121b67498c5038d699d7f4eec095"/></dir><file name="Data.php" hash="a53d2f33ffdc933811cdbc406e449828"/></dir><dir name="Model"><dir name="Catalog"><dir name="Product"><dir name="Api"><file name="V2.php" hash="61b267001dacdbd9c13d0343e9d9895b"/></dir><file name="Api.php" hash="65525a5f926a410d05ec62b3931152f3"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="e022183be1071b3f56232a4f4cf07fdc"/><file name="config.xml" hash="8fff43e67008ab42b0ded71f9ff540b0"/><file name="system.xml" hash="f684a3bc400095b94b679db783d0919e"/><file name="wsdl.xml" hash="e91ccf6cf9102265ebfe0eb0c1b4c35a"/><file name="wsi.xml" hash="b2ba402ffe6658c9ee6f89cceea07299"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="plumslice"><dir name="api"><dir name="system"><dir name="config"><dir name="fieldset"><file name="hint.phtml" hash="54f6fead1f0d67a1a05eb6c71e3bd26c"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Plumslice_Api.xml" hash="378ef041113f0772bd7151578455173a"/></dir></target></contents>
21
+ <compatible/>
22
+ <dependencies><required><php><min>5.4.2</min><max>5.5.5</max></php></required></dependencies>
23
+ </package>