Mage_Shipwire - Version 1.2.4

Version Notes

Shipwire Shipping Rating API integrated

1.2.4 Added multiple Intl support

1.2.2
- Fixed issue with encoding of rate request

1.2.1
- Fixed issue with ship-to postcode not passing

Download this release

Release Info

Developer Magento Core Team
Extension Mage_Shipwire
Version 1.2.4
Comparing to
See all releases


Code changes from version 1.2.2 to 1.2.4

app/code/local/Shipwire/Shipping/Model/Carrier/Service.php CHANGED
@@ -22,6 +22,18 @@ class Shipwire_Shipping_Model_Carrier_Service {
22
  array(
23
  'value' => 'INTL',
24
  'label' => 'International Service'
 
 
 
 
 
 
 
 
 
 
 
 
25
  )
26
  );
27
  }
22
  array(
23
  'value' => 'INTL',
24
  'label' => 'International Service'
25
+ ),
26
+ array(
27
+ 'value' => 'E-INTL',
28
+ 'label' => 'International Economy Service'
29
+ ),
30
+ array(
31
+ 'value' => 'PL-INTL',
32
+ 'label' => 'International plus Service'
33
+ ),
34
+ array(
35
+ 'value' => 'PM-INTL',
36
+ 'label' => 'International Premium Service'
37
  )
38
  );
39
  }
app/code/local/Shipwire/Shipping/Model/Carrier/ShippingMethod.php CHANGED
@@ -1,228 +1,268 @@
1
- <?php
2
-
3
- /**
4
- * Our test shipping method module adapter
5
- */
6
-
7
- class Shipwire_Shipping_Model_Carrier_ShippingMethod extends Mage_Shipping_Model_Carrier_Abstract
8
- {
9
-
10
- /**
11
- * unique internal shipping method identifier
12
- *
13
- * @var string [a-z0-9_]
14
- */
15
-
16
- protected $_code = 'shipwire_shipping';
17
-
18
- /**
19
- * Collect rates for this shipping method based on information in $request
20
- *
21
- * @param Mage_Shipping_Model_Rate_Request $data
22
- * @return Mage_Shipping_Model_Rate_Result
23
- */
24
- public function collectRates(Mage_Shipping_Model_Rate_Request $request)
25
- {
26
- // skip if not enabled
27
- if (!Mage::getStoreConfig('carriers/'.$this->_code.'/active')) {
28
- return false;
29
- }
30
-
31
- /**
32
- * here we are retrieving shipping rates from external service
33
- * or using internal logic to calculate the rate from $request
34
- * you can see an example in Mage_Usa_Model_Shipping_Carrier_Ups::setRequest()
35
- */
36
- // get necessary configuration values
37
- $response = $this->_submitRequest($request);
38
- //$handling = Mage::getStoreConfig('carriers/'.$this->_code.'/handling');
39
-
40
- // this object will be returned as result of this method
41
- // containing all the shipping rates of this method
42
- $result = Mage::getModel('shipping/rate_result');
43
- // $response is an array that we have
44
- foreach ($response as $rMethod) {
45
- // create new instance of method rate
46
- $method = Mage::getModel('shipping/rate_result_method');
47
- // record carrier information
48
- $method->setCarrier($this->_code);
49
- $method->setCarrierTitle(Mage::getStoreConfig('carriers/'.$this->_code.'/title'));
50
- // record method information
51
- $method->setMethod($rMethod['code']);
52
- $method->setMethodTitle($rMethod['title']);
53
-
54
- // rate cost is optional property to record how much it costs to vendor to ship
55
- $method->setCost($rMethod['amount']);
56
-
57
- // in our example handling is fixed amount that is added to cost
58
- // to receive price the customer will pay for shipping method.
59
- // it could be as well percentage:
60
- /// $method->setPrice($rMethod['amount']*$handling/100);
61
- $method->setPrice($rMethod['amount']);
62
-
63
- // add this rate to the result
64
- $result->append($method);
65
- }
66
-
67
- return $result;
68
- }
69
-
70
-
71
- public function getAllowedMethods()
72
- {
73
- return array('shipwire_shipping'=>$this->getConfigData('name'));
74
- }
75
-
76
- private function _submitRequest($requestVar)
77
- {
78
-
79
- $account_email = Mage::getStoreConfig('carriers/shipwire_shipping/shipwire_email');
80
- $account_password = Mage::getStoreConfig('carriers/shipwire_shipping/shipwire_password');
81
- $available_services = Mage::getStoreConfig('carriers/shipwire_shipping/availableservices');
82
-
83
- $address_street1 = $requestVar->dest_street;
84
- $address_street2 = '';
85
- $address_city = $requestVar->dest_city;
86
- $address_region = $requestVar->dest_region_code;
87
- $address_country = $requestVar->dest_country_id;
88
- $address_postcode =
89
- !empty($requestVar->dest_postcode)
90
- ? $requestVar->dest_postcode
91
- : (!empty($requestVar->dest_zip)
92
- ? $requestVar->dest_zip
93
- : $requestVar->getDestPostcode());
94
-
95
- $items = $requestVar->all_items;
96
-
97
- $item_xml = '';
98
- $num = 1;
99
- if (count($items) > 0) {
100
- foreach ($items as $item) {
101
- $item_xml .= '<Item num="' . $num++ . '">';
102
- $item_xml .= '<Code>' . $item->sku . '</Code>';
103
- $item_xml .= '<Quantity>' . $item->qty . '</Quantity>';
104
- $item_xml .= '</Item>';
105
- }
106
- }
107
-
108
- $xml = '
109
-
110
- <?xml version="1.0" encoding="utf-8"?>
111
- <!DOCTYPE RateRequest SYSTEM "http://www.shipwire.com/exec/download/RateRequest.dtd">
112
- <RateRequest>
113
- <EmailAddress><![CDATA[' . $account_email . ']]></EmailAddress>
114
- <Password><![CDATA[' . $account_password . ']]></Password>
115
- <Source>Magento Rating Module 1.2.2</Source>
116
- <Order id="quote123">
117
- <Warehouse>00</Warehouse>
118
- <AddressInfo type="ship">
119
- <Address1><![CDATA[' . $address_street1 . ']]></Address1>
120
- <Address2><![CDATA[' . $address_street2 . ']]></Address2>
121
- <City><![CDATA[' . $address_city . ']]></City>
122
- <State><![CDATA[' . $address_region . ']]></State>
123
- <Country><![CDATA[' . $address_country . ']]></Country>
124
- <Zip><![CDATA[' . $address_postcode . ']]></Zip>
125
- </AddressInfo>
126
- ' . $item_xml . '
127
- </Order>
128
- </RateRequest>';
129
-
130
- $xml_request_encoded = "RateRequestXML=" . urlencode($xml);
131
-
132
- $xml_submit_url = "https://api.shipwire.com/exec/RateServices.php";
133
-
134
- $session = curl_init();
135
- curl_setopt($session, CURLOPT_URL, $xml_submit_url);
136
- curl_setopt($session, CURLOPT_POST, true);
137
- curl_setopt($session, CURLOPT_HTTPHEADER, array("Content-type","application/x-www-form-urlencoded"));
138
- curl_setopt($session, CURLOPT_POSTFIELDS, $xml_request_encoded);
139
- curl_setopt($session, CURLOPT_HEADER, false);
140
- curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
141
- curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);
142
- curl_setopt($session, CURLOPT_TIMEOUT, 360);
143
- $response = curl_exec($session);
144
- /*
145
- $client = new Varien_Http_Client('https://api.shipwire.com/exec/RateServices.php');
146
- $client->setMethod(Zend_Http_Client::POST);
147
- $client->setParameterPost('RateRequestXML', $xml);
148
- $response = $client->request();
149
- */
150
- $rateResult = array();
151
- if (FALSE === $response) {
152
- $rateResult;
153
- }
154
-
155
- $parser = xml_parser_create();
156
-
157
- xml_parse_into_struct($parser, $response, $xmlVals, $xmlIndex);
158
-
159
- xml_parser_free($parser);
160
-
161
- foreach($xmlVals as $key){
162
- if($key['tag'] == "STATUS"){
163
- if($key['value'] != "OK"){
164
- return $rateResult;
165
- }
166
-
167
- }
168
- }
169
-
170
- $code = array();
171
- $method = array();
172
- $cost = array();
173
- $supportedServices = explode(",", $available_services);
174
-
175
- foreach($xmlVals as $key){
176
- if($key['tag'] == "QUOTE" && $key['type'] == "open" && $key['level'] == 4) {
177
- $code[] = $key['attributes']['METHOD'];
178
- }
179
- if($key['tag'] == "SERVICE" && $key['type'] == "complete" && $key['level'] == 5) {
180
- $method[] = $key['value'];
181
- }
182
- if($key['tag'] == "COST" && $key['type'] == "complete" && $key['level'] == 5) {
183
- $cost[] = $key['value'];
184
- }
185
- }
186
-
187
- $la = count($code);
188
- $lb = count($method);
189
- $lc = count($cost);
190
-
191
- if($la == $lb && $lb == $lc && $la == $lc) {
192
- foreach($code as $index => $value){
193
- if (in_array($value, $supportedServices)) {
194
- $rateResult[] = array("code" => $code[$index],
195
- "title" => $method[$index],
196
- "amount" =>$cost[$index]) ;
197
- }
198
- }
199
- }
200
- return $rateResult;
201
-
202
- }
203
-
204
- protected function _formatResponse($response) {
205
- $values = array();
206
- $index = array();
207
-
208
- $p = xml_parser_create();
209
- xml_parse_into_struct($p, $response->getBody(), $values, $index);
210
- xml_parser_free($p);
211
-
212
- //print_r($values);
213
- //print_r($index);
214
- $exceptions = array();
215
- $warnings = array();
216
- }
217
-
218
- protected function _xmlEntities($str) {
219
- if (function_exists('mb_convert_encoding')) {
220
- $text = mb_convert_encoding($str, 'HTML-ENTITIES', 'auto');
221
- } else {
222
- $text = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
223
- }
224
-
225
- return $text;
226
- }
227
-
228
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Our test shipping method module adapter
5
+ */
6
+
7
+ class Shipwire_Shipping_Model_Carrier_ShippingMethod extends Mage_Shipping_Model_Carrier_Abstract
8
+ {
9
+
10
+ /**
11
+ * unique internal shipping method identifier
12
+ *
13
+ * @var string [a-z0-9_]
14
+ */
15
+
16
+ protected $_code = 'shipwire_shipping';
17
+
18
+ /**
19
+ * Collect rates for this shipping method based on information in $request
20
+ *
21
+ * @param Mage_Shipping_Model_Rate_Request $data
22
+ * @return Mage_Shipping_Model_Rate_Result
23
+ */
24
+ public function collectRates(Mage_Shipping_Model_Rate_Request $request)
25
+ {
26
+ // skip if not enabled
27
+ if (!Mage::getStoreConfig('carriers/'.$this->_code.'/active')) {
28
+ return false;
29
+ }
30
+
31
+ /**
32
+ * here we are retrieving shipping rates from external service
33
+ * or using internal logic to calculate the rate from $request
34
+ * you can see an example in Mage_Usa_Model_Shipping_Carrier_Ups::setRequest()
35
+ */
36
+ // get necessary configuration values
37
+ $response = $this->_submitRequest($request);
38
+ //$handling = Mage::getStoreConfig('carriers/'.$this->_code.'/handling');
39
+
40
+ // this object will be returned as result of this method
41
+ // containing all the shipping rates of this method
42
+ $result = Mage::getModel('shipping/rate_result');
43
+ // $response is an array that we have
44
+ foreach ($response as $rMethod) {
45
+ // create new instance of method rate
46
+ $method = Mage::getModel('shipping/rate_result_method');
47
+ // record carrier information
48
+ $method->setCarrier($this->_code);
49
+ $method->setCarrierTitle(Mage::getStoreConfig('carriers/'.$this->_code.'/title'));
50
+ // record method information
51
+ $method->setMethod($rMethod['code']);
52
+ $method->setMethodTitle($rMethod['title']);
53
+
54
+ // rate cost is optional property to record how much it costs to vendor to ship
55
+ $method->setCost($rMethod['amount']);
56
+
57
+ // in our example handling is fixed amount that is added to cost
58
+ // to receive price the customer will pay for shipping method.
59
+ // it could be as well percentage:
60
+ /// $method->setPrice($rMethod['amount']*$handling/100);
61
+ $method->setPrice($rMethod['amount']);
62
+
63
+ // add this rate to the result
64
+ $result->append($method);
65
+ }
66
+
67
+ return $result;
68
+ }
69
+
70
+
71
+ public function getAllowedMethods()
72
+ {
73
+ return array('shipwire_shipping'=>$this->getConfigData('name'));
74
+ }
75
+
76
+ private function _submitRequest($requestVar)
77
+ {
78
+
79
+ $account_email = Mage::getStoreConfig('carriers/shipwire_shipping/shipwire_email');
80
+ $account_password = Mage::getStoreConfig('carriers/shipwire_shipping/shipwire_password');
81
+ $available_services = Mage::getStoreConfig('carriers/shipwire_shipping/availableservices');
82
+
83
+ $address_street1 = $requestVar->dest_street;
84
+ $address_street2 = '';
85
+ $address_city = $requestVar->dest_city;
86
+ $address_region = $requestVar->dest_region_code;
87
+ $address_country = $requestVar->dest_country_id;
88
+ $address_postcode =
89
+ !empty($requestVar->dest_postcode)
90
+ ? $requestVar->dest_postcode
91
+ : (!empty($requestVar->dest_zip)
92
+ ? $requestVar->dest_zip
93
+ : $requestVar->getDestPostcode());
94
+
95
+ $items = $requestVar->all_items;
96
+
97
+ $item_xml = '';
98
+ $num = 1;
99
+ if (count($items) > 0) {
100
+ $itemIncluded = array();
101
+ $index = 0;
102
+ // First match up Configurable's with likely simples, mark off the items as included or not included. Any simple types left over will be included
103
+ foreach ($items as $item) {
104
+ if (!array_key_exists( $itemIncluded[$index] ) && $item->product_type == 'configurable') { // See if we have a configurable SKU
105
+ // Next see if the next item is the same SKU, simple, and with quantity 1
106
+ if( array_key_exists( $index+1, $items) &&
107
+ $items[$index+1]->product_type == 'simple' &&
108
+ $items[$index+1]->sku == $item->sku &&
109
+ $items[$index+1]->qty == 1) {
110
+ $itemIncluded[$index] = 1; // Include the configurable
111
+ $itemIncluded[$index+1] = 0; // Don't include the following simple
112
+ }
113
+ else {
114
+ $foundSimple = 0;
115
+ // If we can't find a simple one after then see if we have and matching simple that is not already used.
116
+ for( $i = 0; $i < count($items); $i++) {
117
+ if( $items[$i]->product_type == 'simple' &&
118
+ !array_key_exists( $i, $itemIncluded )&& // Only consider items that are otherwise not yet evaluated
119
+ $items[$i]->sku == $item->sku &&
120
+ $items[$i]->qty == 1) {
121
+ $itemIncluded[$index] = 1; // Include configurable
122
+ $itemIncluded[$i] = 0; // Don't include matching simple
123
+ $foundSimple = 1;
124
+ break;
125
+ }
126
+ }
127
+ if( !$foundSimple ){ // If we can't find a matching simple then don't consider the configurable
128
+ $itemIncluded[$index] = 0; // Don't include this configurable
129
+ }
130
+ }
131
+
132
+ }
133
+ $index++;
134
+ }
135
+ // Now spin throught again using the $itemIncluded array to determin what goes into rating
136
+ $index = 0;
137
+ foreach ($items as $item) {
138
+ if (!array_key_exists( $index, $itemIncluded ) || $itemIncluded[$index] == 1 ) { // We need detached singles (no array key, or included items
139
+ $item_xml .= '<Item num="' . $num++ . '">';
140
+ $item_xml .= '<Code>' . $item->sku . '</Code>';
141
+ $item_xml .= '<Quantity>' . $item->qty . '</Quantity>';
142
+ $item_xml .= '</Item>';
143
+ }
144
+ $index++;
145
+
146
+ }
147
+ }
148
+ $xml = '
149
+
150
+ <?xml version="1.0" encoding="utf-8"?>
151
+ <!DOCTYPE RateRequest SYSTEM "http://www.shipwire.com/exec/download/RateRequest.dtd">
152
+ <RateRequest currency="USD">
153
+ <EmailAddress><![CDATA[' . $account_email . ']]></EmailAddress>
154
+ <Password><![CDATA[' . $account_password . ']]></Password>
155
+ <Source>Magento Rating Module 1.2.4</Source>
156
+ <Order id="quote123">
157
+ <Warehouse>00</Warehouse>
158
+ <AddressInfo type="ship">
159
+ <Address1><![CDATA[' . $address_street1 . ']]></Address1>
160
+ <Address2><![CDATA[' . $address_street2 . ']]></Address2>
161
+ <City><![CDATA[' . $address_city . ']]></City>
162
+ <State><![CDATA[' . $address_region . ']]></State>
163
+ <Country><![CDATA[' . $address_country . ']]></Country>
164
+ <Zip><![CDATA[' . $address_postcode . ']]></Zip>
165
+ </AddressInfo>
166
+ ' . $item_xml . '
167
+ </Order>
168
+ </RateRequest>';
169
+
170
+ $xml_request_encoded = "RateRequestXML=" . urlencode($xml);
171
+
172
+ $xml_submit_url = "https://api.shipwire.com/exec/RateServices.php";
173
+
174
+ $session = curl_init();
175
+ curl_setopt($session, CURLOPT_URL, $xml_submit_url);
176
+ curl_setopt($session, CURLOPT_POST, true);
177
+ curl_setopt($session, CURLOPT_HTTPHEADER, array("Content-type","application/x-www-form-urlencoded"));
178
+ curl_setopt($session, CURLOPT_POSTFIELDS, $xml_request_encoded);
179
+ curl_setopt($session, CURLOPT_HEADER, false);
180
+ curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
181
+ curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);
182
+ curl_setopt($session, CURLOPT_TIMEOUT, 360);
183
+ $response = curl_exec($session);
184
+ /*
185
+ $client = new Varien_Http_Client('https://api.shipwire.com/exec/RateServices.php');
186
+ $client->setMethod(Zend_Http_Client::POST);
187
+ $client->setParameterPost('RateRequestXML', $xml);
188
+ $response = $client->request();
189
+ */
190
+ $rateResult = array();
191
+ if (FALSE === $response) {
192
+ $rateResult;
193
+ }
194
+
195
+ $parser = xml_parser_create();
196
+
197
+ xml_parse_into_struct($parser, $response, $xmlVals, $xmlIndex);
198
+
199
+ xml_parser_free($parser);
200
+
201
+ foreach($xmlVals as $key){
202
+ if($key['tag'] == "STATUS"){
203
+ if($key['value'] != "OK"){
204
+ return $rateResult;
205
+ }
206
+
207
+ }
208
+ }
209
+
210
+ $code = array();
211
+ $method = array();
212
+ $cost = array();
213
+ $supportedServices = explode(",", $available_services);
214
+
215
+ foreach($xmlVals as $key){
216
+ if($key['tag'] == "QUOTE" && $key['type'] == "open" && $key['level'] == 4) {
217
+ $code[] = $key['attributes']['METHOD'];
218
+ }
219
+ if($key['tag'] == "SERVICE" && $key['type'] == "complete" && $key['level'] == 5) {
220
+ $method[] = $key['value'];
221
+ }
222
+ if($key['tag'] == "COST" && $key['type'] == "complete" && $key['level'] == 5) {
223
+ $cost[] = $key['value'];
224
+ }
225
+ }
226
+
227
+ $la = count($code);
228
+ $lb = count($method);
229
+ $lc = count($cost);
230
+
231
+ if($la == $lb && $lb == $lc && $la == $lc) {
232
+ foreach($code as $index => $value){
233
+ if (in_array($value, $supportedServices)) {
234
+ $rateResult[] = array("code" => $code[$index],
235
+ "title" => $method[$index],
236
+ "amount" =>$cost[$index]) ;
237
+ }
238
+ }
239
+ }
240
+ return $rateResult;
241
+
242
+ }
243
+
244
+ protected function _formatResponse($response) {
245
+ $values = array();
246
+ $index = array();
247
+
248
+ $p = xml_parser_create();
249
+ xml_parse_into_struct($p, $response->getBody(), $values, $index);
250
+ xml_parser_free($p);
251
+
252
+ //print_r($values);
253
+ //print_r($index);
254
+ $exceptions = array();
255
+ $warnings = array();
256
+ }
257
+
258
+ protected function _xmlEntities($str) {
259
+ if (function_exists('mb_convert_encoding')) {
260
+ $text = mb_convert_encoding($str, 'HTML-ENTITIES', 'auto');
261
+ } else {
262
+ $text = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
263
+ }
264
+
265
+ return $text;
266
+ }
267
+
268
+ }
package.xml CHANGED
@@ -1,24 +1,26 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Mage_Shipwire</name>
4
- <version>1.2.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Shipwire Extension</summary>
10
  <description>Shipwire Rating API shipping method</description>
11
- <notes>Shipwire Shipping Rating API integrated
12
-
13
- 1.2.2
14
- - Fixed issue with encoding of rate request
15
-
16
- 1.2.1
 
 
17
  - Fixed issue with ship-to postcode not passing</notes>
18
  <authors><author><name>Shipwire</name><user>auto-converted</user><email>magento-dev@shipwire.com</email></author></authors>
19
- <date>2011-01-31</date>
20
- <time>07:17:04</time>
21
- <contents><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Shipwire_Shipping.xml" hash="89ae766499a54d75ac436f50efc2496c"/></dir></dir></dir></target><target name="magelocal"><dir name="Shipwire"><dir name="Shipping"><dir name="etc"><file name="config.xml" hash="1f073aae242b24b08032b22abf6c98c4"/><file name="system.xml" hash="0e5b1aafaa66a8d9a855078c76906568"/></dir><dir name="Model"><dir name="Carrier"><file name="Service.php" hash="aaceaced3d084b1130dc7d97c22ba140"/><file name="ShippingMethod.php" hash="9501ccd014daf97c1b1dba52b958380c"/></dir></dir></dir></dir></target></contents>
22
  <compatible/>
23
  <dependencies/>
24
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Mage_Shipwire</name>
4
+ <version>1.2.4</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Shipwire Extension</summary>
10
  <description>Shipwire Rating API shipping method</description>
11
+ <notes>Shipwire Shipping Rating API integrated&#xD;
12
+ &#xD;
13
+ 1.2.4 Added multiple Intl support&#xD;
14
+ &#xD;
15
+ 1.2.2&#xD;
16
+ - Fixed issue with encoding of rate request&#xD;
17
+ &#xD;
18
+ 1.2.1&#xD;
19
  - Fixed issue with ship-to postcode not passing</notes>
20
  <authors><author><name>Shipwire</name><user>auto-converted</user><email>magento-dev@shipwire.com</email></author></authors>
21
+ <date>2011-12-02</date>
22
+ <time>19:29:55</time>
23
+ <contents><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Shipwire_Shipping.xml" hash="89ae766499a54d75ac436f50efc2496c"/></dir></dir></dir></target><target name="magelocal"><dir name="Shipwire"><dir name="Shipping"><dir name="Model"><dir name="Carrier"><file name="Service.php" hash="1499ae366ebd44d49356230248fea53e"/><file name="ShippingMethod.php" hash="a1089c17461e0a7dec601f6fe90eb376"/></dir></dir><dir name="etc"><file name="config.xml" hash="1f073aae242b24b08032b22abf6c98c4"/><file name="system.xml" hash="0e5b1aafaa66a8d9a855078c76906568"/></dir></dir></dir></target></contents>
24
  <compatible/>
25
  <dependencies/>
26
  </package>