Version Notes
The product feed will now include prices with (or without) taxes applied, where applicable to their setup.
Product feed will fetch child products of grouped products. Child products fetches information from it's parent and ignores parents that are not saleable.
Order Feed now works out the correct cost of an order by applying the tax specified at time of order. Rather than item's base price.
Download this release
Release Info
Developer | Simon Cooper |
Extension | Swift_Swiftplugin |
Version | 1.9.1 |
Comparing to | |
See all releases |
Code changes from version 1.9.0 to 1.9.1
app/code/community/Swift/Swiftplugin/Model/Observer.php
CHANGED
@@ -80,7 +80,7 @@ class Swift_SwiftPlugin_Model_Observer
|
|
80 |
// collect item data and assign them to session
|
81 |
$productData = array();
|
82 |
foreach($items as $item) {
|
83 |
-
$productData[] = array('product' => $item->getProductId(), 'quantity' => $item->getQty(), 'price' => $item->
|
84 |
}
|
85 |
Mage::getSingleton('core/session')->setSwiftProductsList($productData);
|
86 |
}
|
80 |
// collect item data and assign them to session
|
81 |
$productData = array();
|
82 |
foreach($items as $item) {
|
83 |
+
$productData[] = array('product' => $item->getProductId(), 'quantity' => $item->getQty(), 'price' => $item->getPriceInclTax());
|
84 |
}
|
85 |
Mage::getSingleton('core/session')->setSwiftProductsList($productData);
|
86 |
}
|
app/code/community/Swift/Swiftplugin/Model/XmlProduct.php
CHANGED
@@ -37,9 +37,8 @@ class Swift_Swiftplugin_Model_XmlProduct {
|
|
37 |
*/
|
38 |
public function generate_xml() {
|
39 |
//limit the data parsed
|
40 |
-
$
|
41 |
-
->addAttributeToSelect(array('product_id','name','description', 'short_description','price','url_path','image','thumbnail', 'small_image','special_price','sku','special_to_date', 'special_from_date'))
|
42 |
-
->addAttributeToFilter('visibility', array('in' => array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG, Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH, Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)))
|
43 |
->addAttributeToFilter('status', array('in' => Mage::getSingleton('catalog/product_status')->getSaleableStatusIds()))
|
44 |
->setCurPage($this->offset)
|
45 |
->setPageSize($this->limit);
|
@@ -49,30 +48,46 @@ class Swift_Swiftplugin_Model_XmlProduct {
|
|
49 |
|
50 |
$today = time();
|
51 |
|
52 |
-
|
|
|
|
|
53 |
|
54 |
-
|
|
|
|
|
55 |
|
56 |
-
$stock_item = Mage::getModel('cataloginventory/stock_item')->loadByProduct( $
|
57 |
|
58 |
// check if in stock
|
59 |
-
|
60 |
$qty = $stock_item->getData('qty');
|
61 |
$manageStock = $stock_item->getData('manage_stock');
|
62 |
$inStock = $stock_item->getData('is_in_stock');
|
63 |
|
64 |
if(!($manageStock == 1 && ($qty<1 || $inStock == 0))) {
|
65 |
|
|
|
66 |
|
|
|
67 |
$tempXml = array();
|
68 |
$method = 'g:id';
|
69 |
-
$tempXml[] = $xml -> $method(base64_encode($
|
70 |
-
$tempXml[] = $xml -> title(base64_encode(htmlspecialchars($
|
71 |
-
$tempXml[] = $xml -> description(base64_encode(htmlspecialchars($
|
72 |
-
$tempXml[] = $xml -> short_description(base64_encode(htmlspecialchars($
|
73 |
-
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
if (!empty($parentIds)) {
|
77 |
|
78 |
foreach($parentIds as $parentId) {
|
@@ -81,40 +96,73 @@ class Swift_Swiftplugin_Model_XmlProduct {
|
|
81 |
$tempXml[] = $xml -> link(base64_encode($groupPath));
|
82 |
break;
|
83 |
}
|
84 |
-
|
85 |
}
|
86 |
else {
|
87 |
-
$tempXml[] = $xml -> link(base64_encode($
|
88 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
$method = 'g:price';
|
97 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
$method = 'g:sale_price';
|
99 |
-
|
100 |
$special_price = '';
|
101 |
-
|
102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
|
104 |
-
if($today >= strtotime($product->getSpecialFromDate()) && $today <= strtotime($product->getSpecialToDate()) || $today >= strtotime($product->getSpecialFromDate()) && is_null($product->getSpecialToDate())) {
|
105 |
-
$special_price = $product->getSpecialPrice();
|
106 |
}
|
107 |
|
108 |
-
}
|
109 |
|
110 |
$tempXml[] = $xml -> $method(base64_encode($special_price));
|
111 |
-
$categoryId = $
|
112 |
$categoryId = array_shift($categoryId);
|
113 |
$category = Mage::getModel('catalog/category')->load($categoryId);
|
114 |
$tempXml[] = $xml -> subcategory(base64_encode(is_null($category->getName()) ? '' : htmlspecialchars($category->getName(), ENT_QUOTES)));
|
115 |
$pCategory = Mage::getModel('catalog/category')->load($category->getParentId());
|
116 |
$tempXml[] = $xml -> parentcategory(base64_encode(is_null($pCategory->getName()) ? '' : htmlspecialchars($pCategory->getName(), ENT_QUOTES)));
|
117 |
-
$tempXml[] = $xml -> sku(base64_encode(is_null($
|
118 |
$xmlRow[] = $xml -> product(implode($tempXml));
|
119 |
|
120 |
}
|
@@ -126,6 +174,4 @@ class Swift_Swiftplugin_Model_XmlProduct {
|
|
126 |
echo '<?xml version="1.0" encoding="UTF-8"?>'. "\n" . $xml -> urlset($xml->version(self::SWIFT_XML_PRODUCT_VERSION).$xml -> products(implode($xmlRow)), array('xmlns:g' => "http://base.google.com/ns/1.0"));
|
127 |
die();
|
128 |
}
|
129 |
-
}
|
130 |
-
|
131 |
-
?>
|
37 |
*/
|
38 |
public function generate_xml() {
|
39 |
//limit the data parsed
|
40 |
+
$_productCollection = Mage::getModel('catalog/product')->getCollection()
|
41 |
+
->addAttributeToSelect(array('tax_class_id', 'visibility', 'product_id','name','description', 'short_description','price','url_path','image','thumbnail', 'small_image','special_price','sku','special_to_date', 'special_from_date'))
|
|
|
42 |
->addAttributeToFilter('status', array('in' => Mage::getSingleton('catalog/product_status')->getSaleableStatusIds()))
|
43 |
->setCurPage($this->offset)
|
44 |
->setPageSize($this->limit);
|
48 |
|
49 |
$today = time();
|
50 |
|
51 |
+
$_coreHelper = Mage::helper('core');
|
52 |
+
$_weeeHelper = Mage::helper('weee');
|
53 |
+
$_taxHelper = Mage::helper('tax');
|
54 |
|
55 |
+
if ($this->offset <= $_productCollection->getLastPageNumber()) {
|
56 |
+
|
57 |
+
foreach ($_productCollection as $_product) {
|
58 |
|
59 |
+
$stock_item = Mage::getModel('cataloginventory/stock_item')->loadByProduct( $_product->getId() );
|
60 |
|
61 |
// check if in stock
|
|
|
62 |
$qty = $stock_item->getData('qty');
|
63 |
$manageStock = $stock_item->getData('manage_stock');
|
64 |
$inStock = $stock_item->getData('is_in_stock');
|
65 |
|
66 |
if(!($manageStock == 1 && ($qty<1 || $inStock == 0))) {
|
67 |
|
68 |
+
$_store = $_product->getStore();
|
69 |
|
70 |
+
|
71 |
$tempXml = array();
|
72 |
$method = 'g:id';
|
73 |
+
$tempXml[] = $xml -> $method(base64_encode($_product->getId()));
|
74 |
+
$tempXml[] = $xml -> title(base64_encode(htmlspecialchars($_product->getName(), ENT_QUOTES)));
|
75 |
+
$tempXml[] = $xml -> description(base64_encode(htmlspecialchars($_product->getDescription(), ENT_QUOTES)));
|
76 |
+
$tempXml[] = $xml -> short_description(base64_encode(htmlspecialchars($_product->getShortDescription(), ENT_QUOTES)));
|
77 |
+
|
78 |
+
// if the product is a grouped product then fetch it's parent
|
79 |
+
$parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($_product->getId());
|
80 |
+
|
81 |
+
// we only want products with visibilty or has a parent, if not we need to skip it
|
82 |
+
if ($_product->getVisibility() == Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE) {
|
83 |
+
if (empty($parentIds)) {
|
84 |
+
continue;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
$groupProduct = null;
|
89 |
+
|
90 |
+
// get parents and use them for the parent url
|
91 |
if (!empty($parentIds)) {
|
92 |
|
93 |
foreach($parentIds as $parentId) {
|
96 |
$tempXml[] = $xml -> link(base64_encode($groupPath));
|
97 |
break;
|
98 |
}
|
99 |
+
|
100 |
}
|
101 |
else {
|
102 |
+
$tempXml[] = $xml -> link(base64_encode($_product->getProductUrl()));
|
103 |
}
|
104 |
+
|
105 |
+
// if the product does not have an image assigned then we want to use the parent
|
106 |
+
if (!empty($parentIds) && ($_product->getImage() == 'no_selection' || $_product->getSmallImage() == 'no_selection' || $_product->getThumbnail() == 'no_selection')) {
|
107 |
+
|
108 |
+
if (is_null($groupProduct)) {
|
109 |
+
continue;
|
110 |
+
}
|
111 |
+
|
112 |
+
// group product
|
113 |
+
$method = 'g:image_link';
|
114 |
+
$tempXml[] = $xml -> $method(base64_encode($groupProduct->getImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($groupProduct->getImage())));
|
115 |
+
$method = 'g:small_image_link';
|
116 |
+
$tempXml[] = $xml -> $method(base64_encode($groupProduct->getSmallImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($groupProduct->getSmallImage())));
|
117 |
+
$method = 'g:additional_image_link';
|
118 |
+
$tempXml[] = $xml -> $method(base64_encode($groupProduct->getThumbnail() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($groupProduct->getThumbnail())));
|
119 |
|
120 |
+
}
|
121 |
+
else {
|
122 |
+
// get normal products
|
123 |
+
$method = 'g:image_link';
|
124 |
+
$tempXml[] = $xml -> $method(base64_encode($_product->getImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($_product->getImage())));
|
125 |
+
$method = 'g:small_image_link';
|
126 |
+
$tempXml[] = $xml -> $method(base64_encode($_product->getSmallImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($_product->getSmallImage())));
|
127 |
+
$method = 'g:additional_image_link';
|
128 |
+
$tempXml[] = $xml -> $method(base64_encode($_product->getThumbnail() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($_product->getThumbnail())));
|
129 |
+
}
|
130 |
+
|
131 |
+
// calculate price, based on final price, tax is calculated, system given chance to diaplay amount with/without tax
|
132 |
$method = 'g:price';
|
133 |
+
$_price = $_taxHelper->getPrice($_product, $_product->getFinalPrice());
|
134 |
+
if ($_taxHelper->displayPriceIncludingTax() || $_taxHelper->displayBothPrices()) {
|
135 |
+
// as magento config specifies displaying display both prices or prices with tax included make sure we check if tax is applied
|
136 |
+
$_price = $_taxHelper->getPrice($_product, $_product->getFinalPrice(), true);
|
137 |
+
}
|
138 |
+
|
139 |
+
$tempXml[] = $xml -> $method(base64_encode($_price));
|
140 |
+
|
141 |
$method = 'g:sale_price';
|
|
|
142 |
$special_price = '';
|
143 |
+
if (!is_null($_product->getSpecialPrice())) {
|
144 |
+
|
145 |
+
if($today >= strtotime($_product->getSpecialFromDate()) && $today <= strtotime($_product->getSpecialToDate()) || $today >= strtotime($_product->getSpecialFromDate()) && is_null($_product->getSpecialToDate())) {
|
146 |
+
|
147 |
+
// calculate price, based on final price, tax is calculated, system given chance to diaplay amount with/without tax
|
148 |
+
$special_price = $_taxHelper->getPrice($_product,$_product->getSpecialPrice(), true);
|
149 |
+
if ($_taxHelper->displayPriceIncludingTax() || $_taxHelper->displayBothPrices()) {
|
150 |
+
// as magento config specifies displaying display both prices or prices with tax included make sure we check if tax is applied
|
151 |
+
$special_price = $_taxHelper->getPrice($_product, $_product->getSpecialPrice(), true);
|
152 |
+
}
|
153 |
|
|
|
|
|
154 |
}
|
155 |
|
156 |
+
}
|
157 |
|
158 |
$tempXml[] = $xml -> $method(base64_encode($special_price));
|
159 |
+
$categoryId = $_product->getCategoryIds();
|
160 |
$categoryId = array_shift($categoryId);
|
161 |
$category = Mage::getModel('catalog/category')->load($categoryId);
|
162 |
$tempXml[] = $xml -> subcategory(base64_encode(is_null($category->getName()) ? '' : htmlspecialchars($category->getName(), ENT_QUOTES)));
|
163 |
$pCategory = Mage::getModel('catalog/category')->load($category->getParentId());
|
164 |
$tempXml[] = $xml -> parentcategory(base64_encode(is_null($pCategory->getName()) ? '' : htmlspecialchars($pCategory->getName(), ENT_QUOTES)));
|
165 |
+
$tempXml[] = $xml -> sku(base64_encode(is_null($_product->getSku()) ? null : htmlspecialchars($_product->getSku(), ENT_QUOTES)));
|
166 |
$xmlRow[] = $xml -> product(implode($tempXml));
|
167 |
|
168 |
}
|
174 |
echo '<?xml version="1.0" encoding="UTF-8"?>'. "\n" . $xml -> urlset($xml->version(self::SWIFT_XML_PRODUCT_VERSION).$xml -> products(implode($xmlRow)), array('xmlns:g' => "http://base.google.com/ns/1.0"));
|
175 |
die();
|
176 |
}
|
177 |
+
}
|
|
|
|
app/code/community/Swift/Swiftplugin/controllers/OrdersController.php
CHANGED
@@ -50,9 +50,9 @@ class Swift_Swiftplugin_OrdersController extends Mage_Core_Controller_Front_Acti
|
|
50 |
$products = array();
|
51 |
|
52 |
foreach($visibleItems as $order_item_key => $orderItem) {
|
53 |
-
$products[] = array('product' => $orderItem->getId(), 'price' => $orderItem->
|
54 |
}
|
55 |
-
|
56 |
$request = new SwiftAPI_Request_PastOrder($domain, $user, $order->getCustomerEmail(), $order->getCustomerFirstname(), $order->getCustomerLastname(), $products, $order->getId(), null, null, $order->getCreatedAt());
|
57 |
|
58 |
// is curl available
|
50 |
$products = array();
|
51 |
|
52 |
foreach($visibleItems as $order_item_key => $orderItem) {
|
53 |
+
$products[] = array('product' => $orderItem->getId(), 'price' => $orderItem->getPriceInclTax(), 'quantity' => $orderItem->getData('qty_ordered'));
|
54 |
}
|
55 |
+
|
56 |
$request = new SwiftAPI_Request_PastOrder($domain, $user, $order->getCustomerEmail(), $order->getCustomerFirstname(), $order->getCustomerLastname(), $products, $order->getId(), null, null, $order->getCreatedAt());
|
57 |
|
58 |
// is curl available
|
app/code/community/Swift/Swiftplugin/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Swift_Swiftplugin>
|
5 |
-
<version>1.9.
|
6 |
</Swift_Swiftplugin>
|
7 |
</modules>
|
8 |
<frontend>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Swift_Swiftplugin>
|
5 |
+
<version>1.9.1</version>
|
6 |
</Swift_Swiftplugin>
|
7 |
</modules>
|
8 |
<frontend>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Swift_Swiftplugin</name>
|
4 |
-
<version>1.9.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/LGPL-3.0">LGPL</license>
|
7 |
<channel>community</channel>
|
@@ -18,11 +18,15 @@ The extension uses background JavaScript calls to collect and store the customer
|
|
18 |
<p>
|
19 |
The extension is easy to set up and uses Magento’s built in features to collect information and send emails to the customers. Visit swiftcrm.net for prices and free trails.
|
20 |
</p></description>
|
21 |
-
<notes>
|
|
|
|
|
|
|
|
|
22 |
<authors><author><name>Simon Cooper</name><user>Netready</user><email>simon@netready.biz</email></author></authors>
|
23 |
-
<date>2017-
|
24 |
-
<time>
|
25 |
-
<contents><target name="magelib"><dir name="libXML"><file name="xml.php" hash="c20ca4a39971acf4605247712186b9ec"/></dir><dir name="SwiftAPI"><file name="SwiftAPI.php" hash="8bb2f97586dbd62da6fd0d6781b67ae6"/><file name="SwiftAPI_Exception.php" hash="879b899a7961f4de1212b7296ccafb16"/><file name="SwiftAPI_Product.php" hash="063922cccb485d81c6022de5c4e8e044"/><file name="SwiftAPI_Request.php" hash="f072a4c42fe3767d769f8e9f9c824ecd"/><file name="SwiftAPI_Request_Cart.php" hash="f8955c78200ddb0512adb5214fd64bb2"/><file name="SwiftAPI_Request_EmailPackage.php" hash="a23bdf7699540ece514ec5a6f53ecb12"/><file name="SwiftAPI_Request_Home.php" hash="9268da121dd10db50d5c2675afd1c65e"/><file name="SwiftAPI_Request_Order.php" hash="49ff0d4c501b075f11ef94727d729a75"/><file name="SwiftAPI_Request_OrderPackage.php" hash="45ad4af3b24bfab66f96b493c830ceab"/><file name="SwiftAPI_Request_PastOrder.php" hash="90ac5fb44bd1ad61f39d277d268e3575"/><file name="SwiftAPI_Request_Ping.php" hash="e5e13b71682f8230711d5d2f28f9a534"/><file name="SwiftAPI_Request_Product.php" hash="e5fab27bb2dd45946ed8c143a18fe3c4"/><file name="SwiftAPI_Request_SendMail.php" hash="ba04382a3df6b3e179aed5fe3e809de7"/><file name="SwiftAPI_Request_Subscription.php" hash="5545738b941d8ca4dca69b6059a0cce4"/><file name="SwiftAPI_Request_Unsubscribe.php" hash="78aa37cc0ecb98d501674350a4a409c9"/><file name="SwiftAPI_Request_Version.php" hash="21cebd7eb59698bb0aae55bdeaa23660"/><file name="SwiftAPI_Request_ViewMail.php" hash="f0eb0236c7f6e1fa194d8f05f865a7d8"/><dir name="doc"><file name="SwiftAPI-Specification.html" hash="a31d6c9f13198d017f9f50ac787bea23"/><file name="SwiftAPI-Specification_v3.html" hash="17f8207291313730a72286901c61e44f"/></dir><file name="index.php" hash="82886bb98883bd5868ea04c7d8c88ba5"/><file name="php.ini" hash="ef29c923925a1d1bbc8879c22297daa4"/></dir></target><target name="magecommunity"><dir name="Swift"><dir name="Swiftplugin"><dir name="Block"><dir name="Adminhtml"><dir name="Swift"><dir name="Edit"><file name="Form.php" hash="bd80ab8170f7f2286f13ac579e5249d9"/><dir name="Tab"><file name="Form.php" hash="3d15c45cb2205acabc20376f41a9bd5b"/><file name="Instruct.php" hash="9f34075cc9cdfa92b7876c33fda514de"/></dir><file name="Tabs.php" hash="993769f682fad7d28df79ff3acea97cc"/></dir><file name="Edit.php" hash="d93f75dbaaa7266d91e828b3208fbf2d"/></dir></dir><file name="Swiftblock.php" hash="35b83bdbc2f43cd79d8ef4706128e306"/></dir><dir name="Helper"><file name="Data.php" hash="b65fb579c39dc9e49093bb846894b39a"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Swift"><file name="Collection.php" hash="82de0fe56cd875d3e78c8fc690424ee1"/></dir><file name="Swift.php" hash="252d5f2ecb1119804b415758d2db6800"/><dir name="Swiftorders"><file name="Collection.php" hash="a9e75003a18fcedc8badf1ab3ae79719"/></dir><file name="Swiftorders.php" hash="881185eb5fa8af8fe385c1bfaaeb94e0"/></dir><file name="Observer.php" hash="
|
26 |
<compatible/>
|
27 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>mcrypt</name><min/><max/></extension></required></dependencies>
|
28 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Swift_Swiftplugin</name>
|
4 |
+
<version>1.9.1</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/LGPL-3.0">LGPL</license>
|
7 |
<channel>community</channel>
|
18 |
<p>
|
19 |
The extension is easy to set up and uses Magento’s built in features to collect information and send emails to the customers. Visit swiftcrm.net for prices and free trails.
|
20 |
</p></description>
|
21 |
+
<notes>The product feed will now include prices with (or without) taxes applied, where applicable to their setup.
|
22 |
+

|
23 |
+
Product feed will fetch child products of grouped products. Child products fetches information from it's parent and ignores parents that are not saleable.
|
24 |
+

|
25 |
+
Order Feed now works out the correct cost of an order by applying the tax specified at time of order. Rather than item's base price.</notes>
|
26 |
<authors><author><name>Simon Cooper</name><user>Netready</user><email>simon@netready.biz</email></author></authors>
|
27 |
+
<date>2017-05-24</date>
|
28 |
+
<time>10:08:40</time>
|
29 |
+
<contents><target name="magelib"><dir name="libXML"><file name="xml.php" hash="c20ca4a39971acf4605247712186b9ec"/></dir><dir name="SwiftAPI"><file name="SwiftAPI.php" hash="8bb2f97586dbd62da6fd0d6781b67ae6"/><file name="SwiftAPI_Exception.php" hash="879b899a7961f4de1212b7296ccafb16"/><file name="SwiftAPI_Product.php" hash="063922cccb485d81c6022de5c4e8e044"/><file name="SwiftAPI_Request.php" hash="f072a4c42fe3767d769f8e9f9c824ecd"/><file name="SwiftAPI_Request_Cart.php" hash="f8955c78200ddb0512adb5214fd64bb2"/><file name="SwiftAPI_Request_EmailPackage.php" hash="a23bdf7699540ece514ec5a6f53ecb12"/><file name="SwiftAPI_Request_Home.php" hash="9268da121dd10db50d5c2675afd1c65e"/><file name="SwiftAPI_Request_Order.php" hash="49ff0d4c501b075f11ef94727d729a75"/><file name="SwiftAPI_Request_OrderPackage.php" hash="45ad4af3b24bfab66f96b493c830ceab"/><file name="SwiftAPI_Request_PastOrder.php" hash="90ac5fb44bd1ad61f39d277d268e3575"/><file name="SwiftAPI_Request_Ping.php" hash="e5e13b71682f8230711d5d2f28f9a534"/><file name="SwiftAPI_Request_Product.php" hash="e5fab27bb2dd45946ed8c143a18fe3c4"/><file name="SwiftAPI_Request_SendMail.php" hash="ba04382a3df6b3e179aed5fe3e809de7"/><file name="SwiftAPI_Request_Subscription.php" hash="5545738b941d8ca4dca69b6059a0cce4"/><file name="SwiftAPI_Request_Unsubscribe.php" hash="78aa37cc0ecb98d501674350a4a409c9"/><file name="SwiftAPI_Request_Version.php" hash="21cebd7eb59698bb0aae55bdeaa23660"/><file name="SwiftAPI_Request_ViewMail.php" hash="f0eb0236c7f6e1fa194d8f05f865a7d8"/><dir name="doc"><file name="SwiftAPI-Specification.html" hash="a31d6c9f13198d017f9f50ac787bea23"/><file name="SwiftAPI-Specification_v3.html" hash="17f8207291313730a72286901c61e44f"/></dir><file name="index.php" hash="82886bb98883bd5868ea04c7d8c88ba5"/><file name="php.ini" hash="ef29c923925a1d1bbc8879c22297daa4"/></dir></target><target name="magecommunity"><dir name="Swift"><dir name="Swiftplugin"><dir name="Block"><dir name="Adminhtml"><dir name="Swift"><dir name="Edit"><file name="Form.php" hash="bd80ab8170f7f2286f13ac579e5249d9"/><dir name="Tab"><file name="Form.php" hash="3d15c45cb2205acabc20376f41a9bd5b"/><file name="Instruct.php" hash="9f34075cc9cdfa92b7876c33fda514de"/></dir><file name="Tabs.php" hash="993769f682fad7d28df79ff3acea97cc"/></dir><file name="Edit.php" hash="d93f75dbaaa7266d91e828b3208fbf2d"/></dir></dir><file name="Swiftblock.php" hash="35b83bdbc2f43cd79d8ef4706128e306"/></dir><dir name="Helper"><file name="Data.php" hash="b65fb579c39dc9e49093bb846894b39a"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Swift"><file name="Collection.php" hash="82de0fe56cd875d3e78c8fc690424ee1"/></dir><file name="Swift.php" hash="252d5f2ecb1119804b415758d2db6800"/><dir name="Swiftorders"><file name="Collection.php" hash="a9e75003a18fcedc8badf1ab3ae79719"/></dir><file name="Swiftorders.php" hash="881185eb5fa8af8fe385c1bfaaeb94e0"/></dir><file name="Observer.php" hash="54ec7841eed473c1935eb5b84d826244"/><file name="Swift.php" hash="1f9e49d4db7f8987cfd8858061fedc6a"/><file name="Swiftorders.php" hash="e3f2d23f00e0ad8309a958a24b613678"/><file name="XmlProduct.php" hash="7c8cced0d96cc579175844c52d2cc39c"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="5d4cecfaee823681cedabc3a7706b1f1"/></dir><file name="MailController.php" hash="b1126e2aa65b11890dd83e12f8d46056"/><file name="OrdersController.php" hash="70f9f1803f966f5ab65bd2727fb56958"/><file name="VersionController.php" hash="b9bebb51f946430a2dc7bfc82f96bf36"/><file name="XmlController.php" hash="e78cc03f619a75d43752e8bde42b0798"/></dir><dir name="etc"><file name="config.xml" hash="386ee3398210a7f4c26cb7d7d0c9622a"/></dir><dir name="sql"><dir name="swift_setup"><file name="install-1.1.13.php" hash="2447b5645fc36738373678473cec88dc"/><file name="install-1.1.2.php" hash="00832a00c34cb4c997a96330cb28cbfb"/><file name="install-1.7.0.php" hash="13788c22d8b0ad31c68a775f06333d47"/><file name="upgrade-1.1.12-1.7.1.php" hash="979794d8258b7f3840e9699139505823"/><file name="upgrade-1.1.2-1.1.12.php" hash="cbe3c3fa07facb7b720d7dd518acbeca"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="swift.xml" hash="d80a5229e30cf4b76f5a5150ac1c27c3"/></dir><dir name="template"><dir name="swift"><file name="swiftplugin.phtml" hash="d4d25148e09529e457b6436d7655627b"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Swift_all.xml" hash="0ae5a788c805a9fc79b402fe7a02e54d"/></dir></target></contents>
|
30 |
<compatible/>
|
31 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>mcrypt</name><min/><max/></extension></required></dependencies>
|
32 |
</package>
|