Version Notes
Fetches products in chunks rather than one big xml to save memory.
Download this release
Release Info
Developer | Simon Cooper |
Extension | Swift_Swiftplugin |
Version | 1.5.0 |
Comparing to | |
See all releases |
Code changes from version 1.4.5 to 1.5.0
app/code/community/Swift/Swiftplugin/Model/XmlProduct.php
CHANGED
@@ -8,6 +8,20 @@ require_once(Mage::getBaseDir('lib') . '/libXML/xml.php');
|
|
8 |
*/
|
9 |
class Swift_Swiftplugin_Model_XmlProduct {
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
/**
|
12 |
* Retrieves product details and generates the appropriate response to the request
|
13 |
*
|
@@ -18,90 +32,85 @@ class Swift_Swiftplugin_Model_XmlProduct {
|
|
18 |
$productCollection = Mage::getModel('catalog/product')->getCollection()
|
19 |
->addAttributeToSelect(array('product_id','name','description', 'short_description','price','url_path','image','thumbnail', 'small_image','special_price','sku','special_to_date', 'special_from_date'))
|
20 |
->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED))
|
|
|
21 |
->setPageSize($limit);
|
22 |
|
23 |
$xmlRow = array();
|
24 |
-
|
25 |
$xml = new xml();
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
$productCollection->clear();
|
30 |
-
$productCollection->setCurPage($i);
|
31 |
-
$productCollection->setPageSize($limit);
|
32 |
-
}
|
33 |
-
|
34 |
foreach ($productCollection as $product) {
|
35 |
-
|
36 |
$stock_item = Mage::getModel('cataloginventory/stock_item')->loadByProduct( $product->getId() );
|
37 |
-
|
38 |
$qty = $stock_item->getData('qty');
|
39 |
$manageStock = $stock_item->getData('manage_stock');
|
40 |
$inStock = $stock_item->getData('is_in_stock');
|
41 |
-
|
42 |
if(!($manageStock == 1 && ($qty<1 || $inStock == 0))) {
|
43 |
-
|
44 |
-
|
45 |
$tempXml = array();
|
46 |
$method = 'g:id';
|
47 |
-
$tempXml[] = $xml -> $method($product->getId());
|
48 |
-
$tempXml[] = $xml -> title(htmlspecialchars($product->getName(), ENT_QUOTES));
|
49 |
-
$tempXml[] = $xml -> description(htmlspecialchars($product->getDescription(), ENT_QUOTES));
|
50 |
-
$tempXml[] = $xml -> short_description(htmlspecialchars($product->getShortDescription(), ENT_QUOTES));
|
51 |
-
|
52 |
$parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId());
|
53 |
-
|
54 |
-
if (!empty($parentIds)) {
|
55 |
|
|
|
|
|
56 |
foreach($parentIds as $parentId) {
|
57 |
$groupProduct = Mage::getModel('catalog/product')->load($parentId);
|
58 |
$groupPath = $groupProduct->getProductUrl();
|
59 |
-
$tempXml[] = $xml -> link($groupPath);
|
60 |
break;
|
61 |
}
|
62 |
-
|
63 |
}
|
64 |
else {
|
65 |
-
$tempXml[] = $xml -> link($product->getProductUrl());
|
66 |
}
|
67 |
-
|
68 |
$method = 'g:image_link';
|
69 |
-
$tempXml[] = $xml -> $method($product->getImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getImage()));
|
70 |
$method = 'g:small_image_link';
|
71 |
-
$tempXml[] = $xml -> $method($product->getSmallImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getSmallImage()));
|
72 |
$method = 'g:additional_image_link';
|
73 |
-
$tempXml[] = $xml -> $method($product->getThumbnail() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail()));
|
74 |
$method = 'g:price';
|
75 |
-
$tempXml[] = $xml -> $method($product->getPrice());
|
76 |
$method = 'g:sale_price';
|
77 |
-
|
78 |
$special_price = '';
|
79 |
-
|
80 |
-
if (!is_null($product->getSpecialPrice())) {
|
81 |
|
|
|
|
|
82 |
if($today >= strtotime($product->getSpecialFromDate()) && $today <= strtotime($product->getSpecialToDate()) || $today >= strtotime($product->getSpecialFromDate()) && is_null($product->getSpecialToDate())) {
|
83 |
$special_price = $product->getSpecialPrice();
|
84 |
}
|
85 |
-
|
86 |
}
|
87 |
-
|
88 |
-
$tempXml[] = $xml -> $method($special_price);
|
89 |
$categoryId = $product->getCategoryIds();
|
90 |
$categoryId = array_shift($categoryId);
|
91 |
$category = Mage::getModel('catalog/category')->load($categoryId);
|
92 |
-
$tempXml[] = $xml -> subcategory(is_null($category->getName()) ? '' : htmlspecialchars($category->getName(), ENT_QUOTES));
|
93 |
$pCategory = Mage::getModel('catalog/category')->load($category->getParentId());
|
94 |
-
$tempXml[] = $xml -> parentcategory(is_null($pCategory->getName()) ? '' : htmlspecialchars($pCategory->getName(), ENT_QUOTES));
|
95 |
-
$tempXml[] = $xml -> sku(is_null($product->getSku()) ? null : htmlspecialchars($product->getSku(), ENT_QUOTES));
|
96 |
-
$xmlRow[] = $xml -> product(implode(
|
97 |
|
98 |
}
|
99 |
-
|
100 |
}
|
101 |
}
|
102 |
-
|
103 |
header('Content-Type: application/xml; charset=utf-8');
|
104 |
-
echo '<?xml version="1.0" encoding="UTF-8"?>'. "\n" . $xml -> urlset($xml -> products(implode(
|
105 |
die();
|
106 |
}
|
107 |
}
|
8 |
*/
|
9 |
class Swift_Swiftplugin_Model_XmlProduct {
|
10 |
|
11 |
+
const SWIFT_XML_PRODUCT_VERSION = 2;
|
12 |
+
|
13 |
+
protected $offset;
|
14 |
+
|
15 |
+
public function __construct() {
|
16 |
+
$this->offset = 1;
|
17 |
+
}
|
18 |
+
|
19 |
+
public function setOffset($offset = 1) {
|
20 |
+
if (is_numeric($offset)) {
|
21 |
+
$this->offset = $offset;
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
/**
|
26 |
* Retrieves product details and generates the appropriate response to the request
|
27 |
*
|
32 |
$productCollection = Mage::getModel('catalog/product')->getCollection()
|
33 |
->addAttributeToSelect(array('product_id','name','description', 'short_description','price','url_path','image','thumbnail', 'small_image','special_price','sku','special_to_date', 'special_from_date'))
|
34 |
->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED))
|
35 |
+
->setCurPage($this->offset)
|
36 |
->setPageSize($limit);
|
37 |
|
38 |
$xmlRow = array();
|
|
|
39 |
$xml = new xml();
|
40 |
|
41 |
+
if ($this->offset <= $productCollection->getLastPageNumber()) {
|
42 |
+
|
|
|
|
|
|
|
|
|
|
|
43 |
foreach ($productCollection as $product) {
|
44 |
+
|
45 |
$stock_item = Mage::getModel('cataloginventory/stock_item')->loadByProduct( $product->getId() );
|
46 |
+
|
47 |
$qty = $stock_item->getData('qty');
|
48 |
$manageStock = $stock_item->getData('manage_stock');
|
49 |
$inStock = $stock_item->getData('is_in_stock');
|
50 |
+
|
51 |
if(!($manageStock == 1 && ($qty<1 || $inStock == 0))) {
|
52 |
+
|
53 |
+
|
54 |
$tempXml = array();
|
55 |
$method = 'g:id';
|
56 |
+
$tempXml[] = $xml -> $method(base64_encode($product->getId()));
|
57 |
+
$tempXml[] = $xml -> title(base64_encode(htmlspecialchars($product->getName(), ENT_QUOTES)));
|
58 |
+
$tempXml[] = $xml -> description(base64_encode(htmlspecialchars($product->getDescription(), ENT_QUOTES)));
|
59 |
+
$tempXml[] = $xml -> short_description(base64_encode(htmlspecialchars($product->getShortDescription(), ENT_QUOTES)));
|
60 |
+
|
61 |
$parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId());
|
|
|
|
|
62 |
|
63 |
+
if (!empty($parentIds)) {
|
64 |
+
|
65 |
foreach($parentIds as $parentId) {
|
66 |
$groupProduct = Mage::getModel('catalog/product')->load($parentId);
|
67 |
$groupPath = $groupProduct->getProductUrl();
|
68 |
+
$tempXml[] = $xml -> link(base64_encode($groupPath));
|
69 |
break;
|
70 |
}
|
71 |
+
|
72 |
}
|
73 |
else {
|
74 |
+
$tempXml[] = $xml -> link(base64_encode($product->getProductUrl()));
|
75 |
}
|
76 |
+
|
77 |
$method = 'g:image_link';
|
78 |
+
$tempXml[] = $xml -> $method(base64_encode($product->getImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getImage())));
|
79 |
$method = 'g:small_image_link';
|
80 |
+
$tempXml[] = $xml -> $method(base64_encode($product->getSmallImage() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getSmallImage())));
|
81 |
$method = 'g:additional_image_link';
|
82 |
+
$tempXml[] = $xml -> $method(base64_encode($product->getThumbnail() == 'no_selection' ? '' : Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail())));
|
83 |
$method = 'g:price';
|
84 |
+
$tempXml[] = $xml -> $method(base64_encode($product->getPrice()));
|
85 |
$method = 'g:sale_price';
|
86 |
+
|
87 |
$special_price = '';
|
|
|
|
|
88 |
|
89 |
+
if (!is_null($product->getSpecialPrice())) {
|
90 |
+
|
91 |
if($today >= strtotime($product->getSpecialFromDate()) && $today <= strtotime($product->getSpecialToDate()) || $today >= strtotime($product->getSpecialFromDate()) && is_null($product->getSpecialToDate())) {
|
92 |
$special_price = $product->getSpecialPrice();
|
93 |
}
|
94 |
+
|
95 |
}
|
96 |
+
|
97 |
+
$tempXml[] = $xml -> $method(base64_encode($special_price));
|
98 |
$categoryId = $product->getCategoryIds();
|
99 |
$categoryId = array_shift($categoryId);
|
100 |
$category = Mage::getModel('catalog/category')->load($categoryId);
|
101 |
+
$tempXml[] = $xml -> subcategory(base64_encode(is_null($category->getName()) ? '' : htmlspecialchars($category->getName(), ENT_QUOTES)));
|
102 |
$pCategory = Mage::getModel('catalog/category')->load($category->getParentId());
|
103 |
+
$tempXml[] = $xml -> parentcategory(base64_encode(is_null($pCategory->getName()) ? '' : htmlspecialchars($pCategory->getName(), ENT_QUOTES)));
|
104 |
+
$tempXml[] = $xml -> sku(base64_encode(is_null($product->getSku()) ? null : htmlspecialchars($product->getSku(), ENT_QUOTES)));
|
105 |
+
$xmlRow[] = $xml -> product(implode($tempXml));
|
106 |
|
107 |
}
|
108 |
+
|
109 |
}
|
110 |
}
|
111 |
+
|
112 |
header('Content-Type: application/xml; charset=utf-8');
|
113 |
+
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"));
|
114 |
die();
|
115 |
}
|
116 |
}
|
app/code/community/Swift/Swiftplugin/controllers/XmlController.php
CHANGED
@@ -4,6 +4,7 @@ class Swift_Swiftplugin_XmlController extends Mage_Core_Controller_Front_Action
|
|
4 |
|
5 |
public function feedAction() {
|
6 |
$obj = new Swift_Swiftplugin_Model_XmlProduct();
|
|
|
7 |
$obj->generate_xml();
|
8 |
}
|
9 |
}
|
4 |
|
5 |
public function feedAction() {
|
6 |
$obj = new Swift_Swiftplugin_Model_XmlProduct();
|
7 |
+
$obj->setOffset($this->getRequest()->getParam('offset'));
|
8 |
$obj->generate_xml();
|
9 |
}
|
10 |
}
|
app/code/community/Swift/Swiftplugin/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Swift_Swiftplugin>
|
5 |
-
<version>1.
|
6 |
</Swift_Swiftplugin>
|
7 |
</modules>
|
8 |
<frontend>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Swift_Swiftplugin>
|
5 |
+
<version>1.5.0</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.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/LGPL-3.0">LGPL</license>
|
7 |
<channel>community</channel>
|
@@ -18,11 +18,11 @@ 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>2016-
|
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="4a3e384d05e8113c34f7251841b0dcbc"/><file name="SwiftAPI_Exception.php" hash="879b899a7961f4de1212b7296ccafb16"/><file name="SwiftAPI_Product.php" hash="063922cccb485d81c6022de5c4e8e044"/><file name="SwiftAPI_Request.php" hash="bbd113950c050532ea131738fb8432cb"/><file name="SwiftAPI_Request_Cart.php" hash="f8955c78200ddb0512adb5214fd64bb2"/><file name="SwiftAPI_Request_EmailPackage.php" hash="1574f461582500a524160d3db8371d37"/><file name="SwiftAPI_Request_Home.php" hash="9268da121dd10db50d5c2675afd1c65e"/><file name="SwiftAPI_Request_Order.php" hash="6e938a92e9949809653e2207a8c5a5c7"/><file name="SwiftAPI_Request_OrderPackage.php" hash="91724705e976182c0bb1d7d7d6fc786f"/><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_ViewMail.php" hash="f0eb0236c7f6e1fa194d8f05f865a7d8"/><dir name="doc"><file name="SwiftAPI-Specification.html" hash="3be495e89f1555d138a9314052e2c627"/></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="8b4f72297c8af67374c695b44003867d"/></dir><dir name="Helper"><file name="Data.php" hash="4281667b622843620ef59e990b551cec"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Swift"><file name="Collection.php" hash="82de0fe56cd875d3e78c8fc690424ee1"/></dir><file name="Swift.php" hash="252d5f2ecb1119804b415758d2db6800"/></dir><file name="Observer.php" hash="8bb4dd498a57f1166ed1c85a2b8ab0e0"/><file name="Swift.php" hash="1f9e49d4db7f8987cfd8858061fedc6a"/><file name="XmlProduct.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.5.0</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>Fetches products in chunks rather than one big xml to save memory.</notes>
|
22 |
<authors><author><name>Simon Cooper</name><user>Netready</user><email>simon@netready.biz</email></author></authors>
|
23 |
+
<date>2016-08-26</date>
|
24 |
+
<time>15:58:50</time>
|
25 |
+
<contents><target name="magelib"><dir name="libXML"><file name="xml.php" hash="c20ca4a39971acf4605247712186b9ec"/></dir><dir name="SwiftAPI"><file name="SwiftAPI.php" hash="4a3e384d05e8113c34f7251841b0dcbc"/><file name="SwiftAPI_Exception.php" hash="879b899a7961f4de1212b7296ccafb16"/><file name="SwiftAPI_Product.php" hash="063922cccb485d81c6022de5c4e8e044"/><file name="SwiftAPI_Request.php" hash="bbd113950c050532ea131738fb8432cb"/><file name="SwiftAPI_Request_Cart.php" hash="f8955c78200ddb0512adb5214fd64bb2"/><file name="SwiftAPI_Request_EmailPackage.php" hash="1574f461582500a524160d3db8371d37"/><file name="SwiftAPI_Request_Home.php" hash="9268da121dd10db50d5c2675afd1c65e"/><file name="SwiftAPI_Request_Order.php" hash="6e938a92e9949809653e2207a8c5a5c7"/><file name="SwiftAPI_Request_OrderPackage.php" hash="91724705e976182c0bb1d7d7d6fc786f"/><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_ViewMail.php" hash="f0eb0236c7f6e1fa194d8f05f865a7d8"/><dir name="doc"><file name="SwiftAPI-Specification.html" hash="3be495e89f1555d138a9314052e2c627"/></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="8b4f72297c8af67374c695b44003867d"/></dir><dir name="Helper"><file name="Data.php" hash="4281667b622843620ef59e990b551cec"/></dir><dir name="Model"><dir name="Mysql4"><dir name="Swift"><file name="Collection.php" hash="82de0fe56cd875d3e78c8fc690424ee1"/></dir><file name="Swift.php" hash="252d5f2ecb1119804b415758d2db6800"/></dir><file name="Observer.php" hash="8bb4dd498a57f1166ed1c85a2b8ab0e0"/><file name="Swift.php" hash="1f9e49d4db7f8987cfd8858061fedc6a"/><file name="XmlProduct.php" hash="0ce1132295a312791e0374886b886dab"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="92604a30880c89fbe7885780520096cc"/></dir><file name="MailController.php" hash="af10fe5d485b1742ba5095510f2deea4"/><file name="OrdersController.php" hash="8e9f8bc8f669ab30fc1793e31a149053"/><file name="VersionController.php" hash="b9bebb51f946430a2dc7bfc82f96bf36"/><file name="XmlController.php" hash="d25b7c6c4fa165211a00b18f108b624a"/></dir><dir name="etc"><file name="config.xml" hash="1bd6f1a7856cacbc24efffbe816e7f33"/></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="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>
|
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>
|