aftership - Version 0.3.1

Version Notes

Added upgrade note

Download this release

Release Info

Developer aftership
Extension aftership
Version 0.3.1
Comparing to
See all releases


Code changes from version 0.3.0 to 0.3.1

app/code/community/Aftership/Track/Model/Observer.php CHANGED
@@ -1,13 +1,11 @@
1
  <?php
2
 
3
- class Aftership_Track_Model_Observer
4
- {
5
  const ENDPOINT_TRACKING = 'https://api.aftership.com/v1/trackings';
6
  const ENDPOINT_CONFIG = 'https://api.aftership.com/v1/users/authenticate';
7
 
8
 
9
- public function salesOrderShipmentTrackSaveAfter(Varien_Event_Observer $observer)
10
- {
11
  ob_start();
12
 
13
  $track = $observer->getEvent()->getTrack();
@@ -16,8 +14,12 @@ class Aftership_Track_Model_Observer
16
 
17
  $website_id = Mage::getModel('core/store')->load($order_data['store_id'])->getWebsiteId();
18
 
19
- //$config = Mage::getStoreConfig('aftership_options/messages');
20
- $config = Mage::app()->getWebsite($website_id)->getConfig('aftership_options/messages');
 
 
 
 
21
 
22
  $shipping_address_data = $track->getShipment()->getOrder()->getShippingAddress()->getData();
23
  if (strlen(trim($track_data["track_number"])) > 0) {
@@ -69,24 +71,8 @@ class Aftership_Track_Model_Observer
69
  $track->save();
70
  }
71
 
72
- /*
73
-
74
- $scope = "websites";
75
- $score_id = (int)Mage::getConfig()->getNode('websites/'.Mage::app()->getWebsite($website_id)->getCode().'/system/website/id');
76
-
77
- var_dump($website_id);
78
- var_dump($score_id);
79
-
80
- $config = Mage::app()->getWebsite($website_id)->getConfig('aftership_options/messages');
81
- echo '<pre>';
82
- var_dump($config);
83
- echo '</pre>';
84
-
85
- die();
86
-
87
- */
88
-
89
  if (array_key_exists("status", $config) && $config["status"]) {
 
90
  $api_key = $config["api_key"];
91
 
92
  $post_tracks = Mage::getModel('track/track')
@@ -107,7 +93,6 @@ class Aftership_Track_Model_Observer
107
  $url_params["customer_name"] = $shipping_address_data["firstname"] . " " . $shipping_address_data['lastname'];
108
  $url_params["source"] = "magento";
109
 
110
-
111
  $url_params = http_build_query($url_params);
112
 
113
  $ch = curl_init();
@@ -118,8 +103,10 @@ class Aftership_Track_Model_Observer
118
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
119
  //curl_setopt($ch, CURLOPT_HEADER, 0);
120
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
121
- //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //the SSL is not correct
122
- //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //the SSL is not correct
 
 
123
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($url_params)));
124
 
125
  $response = curl_exec($ch);
@@ -127,10 +114,11 @@ class Aftership_Track_Model_Observer
127
  $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
128
  $error = curl_error($ch);
129
  curl_close($ch);
 
130
  $response_obj = json_decode($response, true);
131
 
132
- if ($http_status == "201" || $http_status == "422") //422: repeated
133
- {
134
  $track_obj = Mage::getModel('track/track');
135
  $track_obj->load($track["track_id"]);
136
  $track_obj->setPosted(1);
@@ -174,6 +162,9 @@ class Aftership_Track_Model_Observer
174
  curl_setopt($ch, CURLOPT_HEADER, 0);
175
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
176
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
 
 
177
 
178
  $response = curl_exec($ch);
179
  $error = curl_error($ch);
@@ -182,38 +173,30 @@ class Aftership_Track_Model_Observer
182
  $response_obj = json_decode($response, true);
183
 
184
  if ($http_status != "200" && $http_status != "401") {
185
- //Mage::getModel('core/config')->saveConfig('aftership_options/messages/status', 0);
186
- /*Mage::getModel('core/config_data')
187
- ->setScope($scope)
188
- ->setScopeId($score_id)
189
- ->setPath('aftership_options/messages/status')
190
- ->setValue(0)
191
- ->save();*/
192
  Mage::throwException(Mage::helper('adminhtml')->__("Connection error, please try again later."));
193
  } else {
194
- if (!$response_obj["success"]) //error
195
- {
196
- //Mage::getModel('core/config')->saveConfig('aftership_options/messages/status', 0);
197
- /*Mage::getModel('core/config_data')
198
- ->setScope($scope)
199
- ->setScopeId($score_id)
200
- ->setPath('aftership_options/messages/status')
201
- ->setValue(0)
202
- ->save();*/
203
  Mage::throwException(Mage::helper('adminhtml')->__("Incorrect API Key"));
204
  }
205
  }
206
  }
207
  }
208
 
 
 
 
 
 
 
 
 
209
  /*
210
  *
211
  * Cron
212
  *
213
  */
214
 
215
- public function sendTracking($api_key, $tracking_number, $carrier_code, $telephone, $email, $title, $order_id, $customer_name)
216
- {
217
  //echo $tracking_number.', '.$telephone.', '.$email.', '.$title.', '.$order_id.', '.$customer_name;
218
 
219
  //save to table
@@ -257,13 +240,14 @@ class Aftership_Track_Model_Observer
257
  $ch = curl_init();
258
  curl_setopt($ch, CURLOPT_URL, $url);
259
  curl_setopt($ch, CURLOPT_POST, true);
260
- curl_setopt($ch, CURLOPT_POSTFIELDS, $url_params);
261
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
262
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
263
  curl_setopt($ch, CURLOPT_HEADER, 0);
264
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
265
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //the SSL is not correct
266
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //the SSL is not correct
 
267
 
268
  $response = curl_exec($ch);
269
  $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
@@ -272,11 +256,8 @@ class Aftership_Track_Model_Observer
272
 
273
  $response_obj = json_decode($response, true);
274
 
275
- //echo ' status: '.$http_status."\n";
276
-
277
- //save
278
- if ($http_status == "201" || $http_status == "422") //422: repeated
279
- {
280
  Mage::getModel('track/track')
281
  ->load($track_id)
282
  ->setPosted(1)
@@ -284,8 +265,7 @@ class Aftership_Track_Model_Observer
284
  }
285
  }
286
 
287
- public function cron()
288
- {
289
 
290
  set_time_limit(0);
291
 
@@ -295,13 +275,15 @@ class Aftership_Track_Model_Observer
295
 
296
  //load website config
297
  $website_config = array();
298
- foreach (Mage::app()->getWebsites() as $website) {
299
- $website_id = $website->getId();
300
- $config = Mage::app()->getWebsite($website_id)->getConfig('aftership_options/messages');
301
- $website_config[$website_id] = $config;
302
- }
303
 
304
- //ob_start();
 
 
 
 
 
 
 
305
 
306
  $from = '';
307
  $to = '';
@@ -332,10 +314,9 @@ class Aftership_Track_Model_Observer
332
 
333
  $store_id = $order_shipment->getStoreId();
334
 
 
335
  if (isset($website_config[$store_id]['status']) && $website_config[$store_id]['status'] == 1 &&
336
- isset($website_config[$store_id]['cron_job_enable']) && $website_config[$store_id]['cron_job_enable'] == 1
337
- ) //if website enabled
338
- {
339
  //check with existing as_track table and see if sent
340
  $post_tracks = Mage::getModel('track/track')
341
  ->getCollection()
@@ -343,8 +324,8 @@ class Aftership_Track_Model_Observer
343
  ->addFieldToFilter('tracking_number', array('eq' => $track->getTrackNumber()))
344
  ->getData();
345
 
346
- if (count($post_tracks) == 0) //if not sent
347
- {
348
  $order = $order_shipment->getOrder();
349
  $shipping_address = $order->getShippingAddress();
350
 
@@ -361,8 +342,6 @@ class Aftership_Track_Model_Observer
361
  }
362
  }
363
 
364
- //Mage::log(ob_get_clean());
365
-
366
  //update time ONLY if success
367
  Mage::getModel('core/config')->saveConfig('aftership_options/messages/last_update', time());
368
 
@@ -377,7 +356,19 @@ class Aftership_Track_Model_Observer
377
  ->setPath('aftership_options/messages/last_update')
378
  ->setValue(time())
379
  ->save();
380
-
381
  }
382
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
383
  }
1
  <?php
2
 
3
+ class Aftership_Track_Model_Observer {
 
4
  const ENDPOINT_TRACKING = 'https://api.aftership.com/v1/trackings';
5
  const ENDPOINT_CONFIG = 'https://api.aftership.com/v1/users/authenticate';
6
 
7
 
8
+ public function salesOrderShipmentTrackSaveAfter(Varien_Event_Observer $observer) {
 
9
  ob_start();
10
 
11
  $track = $observer->getEvent()->getTrack();
14
 
15
  $website_id = Mage::getModel('core/store')->load($order_data['store_id'])->getWebsiteId();
16
 
17
+ //if only 1 store, get the default
18
+ if (count(Mage::app()->getWebsites()) == 1) {
19
+ $config = $this->getDefaultConfig();
20
+ } else {
21
+ $config = $this->getConfigByWebsiteId($website_id);
22
+ }
23
 
24
  $shipping_address_data = $track->getShipment()->getOrder()->getShippingAddress()->getData();
25
  if (strlen(trim($track_data["track_number"])) > 0) {
71
  $track->save();
72
  }
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  if (array_key_exists("status", $config) && $config["status"]) {
75
+
76
  $api_key = $config["api_key"];
77
 
78
  $post_tracks = Mage::getModel('track/track')
93
  $url_params["customer_name"] = $shipping_address_data["firstname"] . " " . $shipping_address_data['lastname'];
94
  $url_params["source"] = "magento";
95
 
 
96
  $url_params = http_build_query($url_params);
97
 
98
  $ch = curl_init();
103
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
104
  //curl_setopt($ch, CURLOPT_HEADER, 0);
105
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
106
+
107
+ //handle SSL certificate problem: unable to get local issuer certificate issue
108
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //the SSL is not correct
109
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //the SSL is not correct
110
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($url_params)));
111
 
112
  $response = curl_exec($ch);
114
  $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
115
  $error = curl_error($ch);
116
  curl_close($ch);
117
+
118
  $response_obj = json_decode($response, true);
119
 
120
+ //422: repeated
121
+ if ($http_status == "201" || $http_status == "422") {
122
  $track_obj = Mage::getModel('track/track');
123
  $track_obj->load($track["track_id"]);
124
  $track_obj->setPosted(1);
162
  curl_setopt($ch, CURLOPT_HEADER, 0);
163
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
164
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
165
+ //handle SSL certificate problem: unable to get local issuer certificate issue
166
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //the SSL is not correct
167
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //the SSL is not correct
168
 
169
  $response = curl_exec($ch);
170
  $error = curl_error($ch);
173
  $response_obj = json_decode($response, true);
174
 
175
  if ($http_status != "200" && $http_status != "401") {
 
 
 
 
 
 
 
176
  Mage::throwException(Mage::helper('adminhtml')->__("Connection error, please try again later."));
177
  } else {
178
+ if (!$response_obj["success"]) {
 
 
 
 
 
 
 
 
179
  Mage::throwException(Mage::helper('adminhtml')->__("Incorrect API Key"));
180
  }
181
  }
182
  }
183
  }
184
 
185
+ /*Mage::getModel('core/config')->saveConfig('aftership_options/messages/status', 0);
186
+ Mage::getModel('core/config_data')
187
+ ->setScope($scope)
188
+ ->setScopeId($score_id)
189
+ ->setPath('aftership_options/messages/status')
190
+ ->setValue(0)
191
+ ->save();*/
192
+
193
  /*
194
  *
195
  * Cron
196
  *
197
  */
198
 
199
+ public function sendTracking($api_key, $tracking_number, $carrier_code, $telephone, $email, $title, $order_id, $customer_name) {
 
200
  //echo $tracking_number.', '.$telephone.', '.$email.', '.$title.', '.$order_id.', '.$customer_name;
201
 
202
  //save to table
240
  $ch = curl_init();
241
  curl_setopt($ch, CURLOPT_URL, $url);
242
  curl_setopt($ch, CURLOPT_POST, true);
243
+ curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($url_params));
244
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
245
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
246
  curl_setopt($ch, CURLOPT_HEADER, 0);
247
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
248
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //the SSL is not correct
249
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //the SSL is not correct
250
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($url_params)));
251
 
252
  $response = curl_exec($ch);
253
  $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
256
 
257
  $response_obj = json_decode($response, true);
258
 
259
+ //save, 422: repeated
260
+ if ($http_status == "201" || $http_status == "422") {
 
 
 
261
  Mage::getModel('track/track')
262
  ->load($track_id)
263
  ->setPosted(1)
265
  }
266
  }
267
 
268
+ public function cron() {
 
269
 
270
  set_time_limit(0);
271
 
275
 
276
  //load website config
277
  $website_config = array();
 
 
 
 
 
278
 
279
+ //if there if only 1 store
280
+ if (count(Mage::app()->getWebsites()) == 1) {
281
+ $website_config[1] = $this->getDefaultConfig();
282
+ } else {
283
+ foreach (Mage::app()->getWebsites() as $website) {
284
+ $website_config[$website->getId()] = $this->getConfigByWebsiteId($website->getId());
285
+ }
286
+ }
287
 
288
  $from = '';
289
  $to = '';
314
 
315
  $store_id = $order_shipment->getStoreId();
316
 
317
+ //if website enabled
318
  if (isset($website_config[$store_id]['status']) && $website_config[$store_id]['status'] == 1 &&
319
+ isset($website_config[$store_id]['cron_job_enable']) && $website_config[$store_id]['cron_job_enable'] == 1) {
 
 
320
  //check with existing as_track table and see if sent
321
  $post_tracks = Mage::getModel('track/track')
322
  ->getCollection()
324
  ->addFieldToFilter('tracking_number', array('eq' => $track->getTrackNumber()))
325
  ->getData();
326
 
327
+ //if not sent
328
+ if (count($post_tracks) == 0) {
329
  $order = $order_shipment->getOrder();
330
  $shipping_address = $order->getShippingAddress();
331
 
342
  }
343
  }
344
 
 
 
345
  //update time ONLY if success
346
  Mage::getModel('core/config')->saveConfig('aftership_options/messages/last_update', time());
347
 
356
  ->setPath('aftership_options/messages/last_update')
357
  ->setValue(time())
358
  ->save();
 
359
  }
360
  }
361
+
362
+ private function getDefaultConfig() {
363
+ return Mage::getStoreConfig('aftership_options/messages');
364
+ }
365
+
366
+ private function getConfigByWebsiteId($website_id) {
367
+ $config_obj = Mage::app()->getWebsite($website_id)->getConfig('aftership_options');
368
+ $config = array();
369
+ $config['api_key'] = $config_obj['messages']->api_key.'';
370
+ $config['status'] = $config_obj['messages']->status.'';
371
+ $config['cron_job_enable'] = $config_obj['messages']->cron_job_enable.'';
372
+ return $config;
373
+ }
374
  }
app/code/community/Aftership/Track/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Aftership_Track>
5
- <version>0.3.0</version>
6
  </Aftership_Track>
7
  </modules>
8
 
2
  <config>
3
  <modules>
4
  <Aftership_Track>
5
+ <version>0.3.1</version>
6
  </Aftership_Track>
7
  </modules>
8
 
app/code/community/Aftership/Track/etc/system.xml CHANGED
@@ -25,7 +25,7 @@
25
  <show_in_store>1</show_in_store>
26
  <fields>
27
  <api_key>
28
- <label>API key</label>
29
  <frontend_type>text</frontend_type>
30
  <sort_order>10</sort_order>
31
  <show_in_default>1</show_in_default>
@@ -68,6 +68,40 @@
68
  <show_in_website>0</show_in_website>
69
  <show_in_store>0</show_in_store>
70
  </last_update>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  <!--<notification>
72
  <label>Notification</label>
73
  <frontend_type>Multiselect</frontend_type>
25
  <show_in_store>1</show_in_store>
26
  <fields>
27
  <api_key>
28
+ <label>AfterShip API key</label>
29
  <frontend_type>text</frontend_type>
30
  <sort_order>10</sort_order>
31
  <show_in_default>1</show_in_default>
68
  <show_in_website>0</show_in_website>
69
  <show_in_store>0</show_in_store>
70
  </last_update>
71
+ <upgrade_note>
72
+ <label><![CDATA[<strong>Option 1 - Recommended</strong>]]></label>
73
+ <frontend_type>note</frontend_type>
74
+ <sort_order>0</sort_order>
75
+ <show_in_default>1</show_in_default>
76
+ <show_in_website>1</show_in_website>
77
+ <show_in_store>0</show_in_store>
78
+ <comment>
79
+ <![CDATA[
80
+
81
+ <ol>
82
+ <li style="margin-bottom:10px !important;">1. <a href="https://www.aftership.com/signup" target="_blank">Sign up AfterShip account</a> for FREE</li>
83
+ <li style="margin-bottom:10px !important;">2. Go to <a href="https://www.aftership.com/apps/magento-v2" target="_blank">“apps”</a> and add “Magento Connector v2”</li>
84
+ <li style="margin-bottom:10px !important;">3. Add a SOAP/XML-RPC web services user in Magento admin page, using a role with all resources accessible.</li>
85
+ <li style="margin-bottom:10px !important;">4. Input your Magento version, store domain, username, API key and Store ID (optional), and click connect.</li>
86
+ <li>5. AfterShip will automatically import shipments created at Magento every 3 hours.</li>
87
+ </ol>
88
+ ]]>
89
+
90
+ </comment>
91
+ </upgrade_note>
92
+ <upgrade_note2>
93
+ <label><![CDATA[<strong>Option 2</strong>]]></label>
94
+ <frontend_type>note</frontend_type>
95
+ <sort_order>1</sort_order>
96
+ <show_in_default>1</show_in_default>
97
+ <show_in_website>1</show_in_website>
98
+ <show_in_store>0</show_in_store>
99
+ <comment>
100
+ <![CDATA[
101
+ (In case Option 1 does not work)
102
+ ]]>
103
+ </comment>
104
+ </upgrade_note2>
105
  <!--<notification>
106
  <label>Notification</label>
107
  <frontend_type>Multiselect</frontend_type>
app/code/community/Aftership/Track/sql/track_setup/{mysql4-install-0.2.9.php → mysql4-install-0.3.0.php} RENAMED
File without changes
app/code/community/Aftership/Track/sql/track_setup/{mysql4-upgrade-0.2.8-0.2.9.php → mysql4-upgrade-0.2.9-0.3.0.php} RENAMED
File without changes
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>aftership</name>
4
- <version>0.3.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/gpl-license.php">GPL</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>AfterShip magento extension interface. Tracking number will be added to the aftership.com &lt;https://www.aftership.com/&gt;; account at the same time when input in magento shipment. Please go to aftership.com &lt;https://www.aftership.com/&gt; to change the notification setting and value.</summary>
10
  <description>Users can simply link their online stores to Aftership and view all packages in one place. Online stores can also automatically inform their customers of the latest delivery status through SMS, email and Twitter. All the messages are white-labeled and can be customized for any marketing opportunities. Aftership also provides online stores a reporting tool so that they can easily find out any shipping problems like delayed delivery and solve immediately. Aftership currently supports over 40 shipping companies worldwide.</description>
11
- <notes>Support AfterShip v3</notes>
12
  <authors><author><name>aftership</name><user>aftership</user><email>support@aftership.com</email></author></authors>
13
- <date>2013-07-23</date>
14
- <time>11:05:35</time>
15
- <contents><target name="magecommunity"><dir name="Aftership"><dir name="Track"><dir name="Helper"><file name="Data.php" hash="854baf793cb348f80c94703b585691b9"/></dir><dir name="Model"><file name="FrequencyWords.php" hash="91aad25bcba1c0f8433ab0f297f50614"/><file name="Methods.php" hash="ee6ccd73ab94405e8b0ab4a59990a0fa"/><dir name="Mysql4"><dir name="Track"><file name="Collection.php" hash="b359845af660063396556b37920675ad"/></dir><file name="Track.php" hash="e7799ea4fef0ff7e4217ae0d3a3ed50e"/></dir><file name="Observer.php" hash="9d7f61b2a8e7b78d593c7e8b242cad19"/><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="9a1fee597d5f7219cd3f68f38bb1ed97"/></dir></dir><file name="Track.php" hash="61bae429d01ace637296e11994203fe5"/><file name="Words.php" hash="40d412b8ea57998ae6429219b14709db"/></dir><dir name="controllers"><file name="IndexController.php" hash="7f5c1ae52f625152ca3e9ffe15a93028"/></dir><dir name="etc"><file name="adminhtml.xml" hash="cadc113478c285edf9f43c7506f6ba89"/><file name="config.xml" hash="29e1148689e9e73834ae67c3cbf028c6"/><file name="system.xml" hash="d1cb53e60df50f0bf39d5c04745482d9"/></dir><dir name="sql"><dir name="track_setup"><file name="mysql4-install-0.2.9.php" hash="7639b6303191813f78441a6d7297e0d1"/><file name="mysql4-upgrade-0.2.8-0.2.9.php" hash="7639b6303191813f78441a6d7297e0d1"/></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Aftership_Track.xml" hash="25367ce0ec0484973a73e5548199dea0"/></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="aftership"><dir name="css"><file name="style.css" hash="bd5df03e68aa767303eb392df394ce52"/></dir><dir name="images"><file name="logo.png" hash="3e8d8f9d5e1747c18fcd1a810ddc5f2a"/><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir><file name=".DS_Store" hash="e8931b980e8ec084f41ef4f99eeef0c3"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="aftership.xml" hash="263c8bb1e2ba9acbf017a2a44fb11439"/></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
- <dependencies><required><php><min>5.2.13</min><max>5.5.1</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>aftership</name>
4
+ <version>0.3.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/gpl-license.php">GPL</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>AfterShip magento extension interface. Tracking number will be added to the aftership.com &lt;https://www.aftership.com/&gt; account at the same time when input in magento shipment. Please go to aftership.com &lt;https://www.aftership.com/&gt; to change the notification setting and value.</summary>
10
  <description>Users can simply link their online stores to Aftership and view all packages in one place. Online stores can also automatically inform their customers of the latest delivery status through SMS, email and Twitter. All the messages are white-labeled and can be customized for any marketing opportunities. Aftership also provides online stores a reporting tool so that they can easily find out any shipping problems like delayed delivery and solve immediately. Aftership currently supports over 40 shipping companies worldwide.</description>
11
+ <notes>Added upgrade note</notes>
12
  <authors><author><name>aftership</name><user>aftership</user><email>support@aftership.com</email></author></authors>
13
+ <date>2013-09-26</date>
14
+ <time>08:10:46</time>
15
+ <contents><target name="magecommunity"><dir name="Aftership"><dir name="Track"><dir name="Helper"><file name="Data.php" hash="854baf793cb348f80c94703b585691b9"/></dir><dir name="Model"><file name="FrequencyWords.php" hash="91aad25bcba1c0f8433ab0f297f50614"/><file name="Methods.php" hash="ee6ccd73ab94405e8b0ab4a59990a0fa"/><dir name="Mysql4"><dir name="Track"><file name="Collection.php" hash="b359845af660063396556b37920675ad"/></dir><file name="Track.php" hash="e7799ea4fef0ff7e4217ae0d3a3ed50e"/></dir><file name="Observer.php" hash="b8b756896cb8e59c449c94001b1e6aec"/><dir name="Resource"><dir name="Mysql4"><file name="Setup.php" hash="9a1fee597d5f7219cd3f68f38bb1ed97"/></dir></dir><file name="Track.php" hash="61bae429d01ace637296e11994203fe5"/><file name="Words.php" hash="40d412b8ea57998ae6429219b14709db"/></dir><dir name="controllers"><file name="IndexController.php" hash="7f5c1ae52f625152ca3e9ffe15a93028"/></dir><dir name="etc"><file name="adminhtml.xml" hash="cadc113478c285edf9f43c7506f6ba89"/><file name="config.xml" hash="cacc995b0edbc9d69bf6f64c1a0303d6"/><file name="system.xml" hash="bfd83204df3be87132971d15fbef8607"/></dir><dir name="sql"><dir name="track_setup"><file name="mysql4-install-0.3.0.php" hash="7639b6303191813f78441a6d7297e0d1"/><file name="mysql4-upgrade-0.2.9-0.3.0.php" hash="7639b6303191813f78441a6d7297e0d1"/></dir></dir></dir></dir></target><target name="mage"><dir name="app"><dir name="etc"><dir name="modules"><file name="Aftership_Track.xml" hash="25367ce0ec0484973a73e5548199dea0"/></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="aftership"><dir name="css"><file name="style.css" hash="bd5df03e68aa767303eb392df394ce52"/></dir><dir name="images"><file name="logo.png" hash="3e8d8f9d5e1747c18fcd1a810ddc5f2a"/><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir><file name=".DS_Store" hash="e8931b980e8ec084f41ef4f99eeef0c3"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="aftership.xml" hash="263c8bb1e2ba9acbf017a2a44fb11439"/></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
+ <dependencies><required><php><min>5.2.13</min><max>5.5.2</max></php></required></dependencies>
18
  </package>