mobile_assistant_connector - Version 1.2.1

Version Notes

Added:
- 'Previous quarter' stats on dashboard
- security level has been changed and improved
- ability to download and print PDF invoice

*Works only with release of app (2.6.1) and higher

Download this release

Release Info

Developer eMagicOne
Extension mobile_assistant_connector
Version 1.2.1
Comparing to
See all releases


Code changes from version 1.2.0.1 to 1.2.1

app/code/community/Emagicone/Mobassistantconnector/Helper/Access.php CHANGED
@@ -19,7 +19,7 @@
19
  class Emagicone_Mobassistantconnector_Helper_Access extends Mage_Core_Helper_Abstract
20
  {
21
  const HASH_ALGORITHM = 'sha256';
22
- const MAX_LIFETIME = 86400; /* 24 hours */
23
  // const TABLE_SESSION_KEYS = 'emagicone_mobassistantconnector_sessions';
24
  // const TABLE_FAILED_ATTEMPTS = 'emagicone_mobassistantconnector_failed_login';
25
 
@@ -46,6 +46,23 @@ class Emagicone_Mobassistantconnector_Helper_Access extends Mage_Core_Helper_Abs
46
  }
47
  }
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  public static function getSessionKey($hash)
50
  {
51
  $login = Mage::getStoreConfig('mobassistantconnectorinfosec/emoaccess/login');
19
  class Emagicone_Mobassistantconnector_Helper_Access extends Mage_Core_Helper_Abstract
20
  {
21
  const HASH_ALGORITHM = 'sha256';
22
+ const MAX_LIFETIME = 43200; /* 12 hours */
23
  // const TABLE_SESSION_KEYS = 'emagicone_mobassistantconnector_sessions';
24
  // const TABLE_FAILED_ATTEMPTS = 'emagicone_mobassistantconnector_failed_login';
25
 
46
  }
47
  }
48
 
49
+ public static function clearAllData()
50
+ {
51
+ $timestamp = time();
52
+
53
+ $sessions = Mage::getModel("emagicone_mobassistantconnector/sessions")->getCollection();
54
+ foreach ($sessions as $session) {
55
+ $session->delete();
56
+ }
57
+
58
+ $attempts = Mage::getModel("emagicone_mobassistantconnector/failed")->getCollection();
59
+ foreach ($attempts as $attempt) {
60
+ $attempt->delete();
61
+ }
62
+
63
+ Mage::getModel('core/config')->saveConfig('mobassistantconnectorinfosec/access/cl_date', $timestamp );
64
+ }
65
+
66
  public static function getSessionKey($hash)
67
  {
68
  $login = Mage::getStoreConfig('mobassistantconnectorinfosec/emoaccess/login');
app/code/community/Emagicone/Mobassistantconnector/controllers/IndexController.php CHANGED
@@ -24,10 +24,11 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
24
  public $hash = false;
25
  public $def_currency;
26
  public $currency_code;
 
27
  private $hash_only;
28
  private $session_key;
29
  const GSM_URL = 'https://android.googleapis.com/gcm/send';
30
- const MB_VERSION = '85';
31
 
32
  public function indexAction()
33
  {
@@ -41,47 +42,47 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
41
 
42
  Mage::helper('mobassistantconnector/access')->clearOldData();
43
 
44
- foreach ($this->getRequest()->getParams() as $key => $value) {
45
- if (isset($key) && $key == 'callback' && isset($value) && strlen($value) > 0)
46
- $this->callback = $value;
47
- if (isset($key) && $key == 'call_function' && isset($value) && strlen($value) > 0)
48
- $this->call_function = $value;
49
- if (isset($key) && $key == 'hash' && isset($value) && strlen($value) > 0)
50
- $this->hash = $value;
51
- if (isset($key) && $key == 'key')
52
- $this->session_key = $value;
53
- if (isset($key) && $key == 'hash_only')
54
- $this->hash_only = true;
55
  }
 
 
 
 
 
 
 
56
 
 
 
 
57
  // if(!$this->check_auth()) {
58
  // $this->generate_output('auth_error');
59
  // }
60
 
61
- if ($this->call_function == 'get_version')
62
- $this->generate_output(array('module_version' => self::MB_VERSION));
 
 
63
 
64
  if ($this->hash) {
65
- if ($this->hash_only && in_array($this->call_function, array('get_stores','get_orders_statuses','test_config','get_store_title','get_currencies'))) {
66
- // If its real token
67
- if (!$this->check_auth())
68
- $this->generate_output('auth_error');
 
 
 
 
69
  } else {
70
- // Make token based on key
71
- $key = Mage::helper('mobassistantconnector/access')->getSessionKey($this->hash);
72
-
73
- if (!$key) {
74
- Mage::log(
75
- "Hash accepted ({$this->hash}) is incorrect",
76
- null,
77
- 'emagicone_mobassistantconnector.log'
78
- );
79
- $this->generate_output('auth_error');
80
- }
81
-
82
- $this->generate_output(array('session_key' => $key, 'module_version' => self::MB_VERSION));
83
  }
84
- } elseif ($this->session_key || $this->session_key == '') {
85
  if (!Mage::helper('mobassistantconnector/access')->checkSessionKey($this->session_key)) {
86
  Mage::log(
87
  "Key accepted ({$this->session_key}) is incorrect",
@@ -90,64 +91,68 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
90
  );
91
  $this->generate_output(array('bad_session_key' => true));
92
  }
 
 
 
93
  }
94
 
 
95
  $request_params = Mage::app()->getRequest()->getParams();
96
 
97
  $params = $this->validate_types($request_params, array(
98
- 'show' => 'INT',
99
- 'page' => 'INT',
100
- 'search_order_id' => 'STR',
101
- 'orders_from' => 'STR',
102
- 'orders_to' => 'STR',
103
- 'order_number' => 'STR',
104
- 'customers_from' => 'STR',
105
- 'customers_to' => 'STR',
106
- 'date_from' => 'STR',
107
- 'date_to' => 'STR',
108
- 'graph_from' => 'STR',
109
- 'graph_to' => 'STR',
110
- 'stats_from' => 'STR',
111
- 'stats_to' => 'STR',
112
- 'products_to' => 'STR',
113
- 'products_from' => 'STR',
114
- 'order_id' => 'INT',
115
- 'user_id' => 'INT',
116
- 'params' => 'STR',
117
- 'val' => 'STR',
118
- 'search_val' => 'STR',
119
- 'statuses' => 'STR',
120
- 'sort_by' => 'STR',
121
- 'last_order_id' => 'STR',
122
- 'product_id' => 'INT',
123
- 'get_statuses' => 'INT',
124
- 'cust_with_orders' => 'INT',
125
- 'data_for_widget' => 'INT',
126
- 'registration_id' => 'STR',
127
- 'registration_id_old' => 'STR',
128
- 'registration_id_new' => 'STR',
129
- 'api_key' => 'STR',
130
- 'tracking_number' => 'STR',
131
- 'tracking_title' => 'STR',
132
- 'action' => 'STR',
133
- 'carrier_code' => 'STR',
134
- 'custom_period' => 'INT',
135
- 'group_id' => 'INT',
136
- 'push_new_customer' => 'INT',
137
- 'push_new_order' => 'INT',
138
- 'push_currency_code' => 'STR',
139
- 'app_connection_id' => 'STR',
140
- 'push_store_group_id' => 'STR',
141
- 'push_order_statuses' => 'STR',
142
- 'currency_code' => 'STR',
143
- 'is_mail' => 'INT',
144
- 'store_group_id' => 'INT',
145
- 'carts_from' => 'STR',
146
- 'carts_to' => 'STR',
147
- 'cart_id' => 'STR',
148
- 'search_carts' => 'STR',
149
- 'param' => 'STR',
150
- 'new_value' => 'STR',
151
  'show_unregistered_customers' => 'INT',
152
  ));
153
 
@@ -155,6 +160,10 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
155
  $this->{$k} = $value;
156
  }
157
 
 
 
 
 
158
  if (empty($this->currency_code) || strval($this->currency_code) == 'base_currency' || strval($this->currency_code) == 'not_set') {
159
  $this->currency_code = $this->def_currency;
160
  }
@@ -228,7 +237,7 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
228
  {
229
  if (!in_array($this->call_function, array("get_order_pdf"))) {
230
  $add_bridge_version = false;
231
- if (in_array($this->call_function, array("test_config", "get_store_title", "get_store_stats", "get_data_graphs"))) {
232
  if (is_array($data) && $data != 'auth_error' && $data != 'connection_error' && $data != 'old_bridge') {
233
  $add_bridge_version = true;
234
  }
@@ -278,6 +287,80 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
278
  }
279
  }
280
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
  protected function push_notification_settings()
282
  {
283
  $result = array();
@@ -354,19 +437,31 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
354
  // Delete empty record
355
  if ((intval($this->push_new_order) == 0) && (strlen($this->push_order_statuses) == 0) && (intval($this->push_new_customer) == 0)) {
356
  foreach ($deviceIds as $settingNum => $deviceId) {
357
- if ($deviceId['push_device_id'] == $this->registration_id && (isset($deviceId['app_connection_id']) && $deviceId['app_connection_id'] == $deviceActions['app_connection_id'])) {
 
 
 
358
  unset($deviceIds[$settingNum]);
359
- } else if ($deviceId['push_device_id'] == $this->registration_id && $deviceId['push_store_group_id'] == $this->store_group_id && !isset($deviceId['app_connection_id'])) {
 
 
 
360
  unset($deviceIds[$settingNum]);
361
  }
362
  }
363
  } else {
364
  // renew old record
365
  foreach ($deviceIds as $settingNum => $deviceId) {
366
- if ($deviceId['push_device_id'] == $this->registration_id && (isset($deviceId['app_connection_id']) && $deviceId['app_connection_id'] == $deviceActions['app_connection_id'])) {
 
 
 
367
  $deviceIds[$settingNum] = $deviceActions;
368
  $matched = true;
369
- } else if ($deviceId['push_device_id'] == $this->registration_id && $deviceId['push_store_group_id'] == $deviceActions['push_store_group_id'] && !isset($deviceId['app_connection_id'])) {
 
 
 
370
  $deviceIds[$settingNum] = $deviceActions;
371
  $matched = true;
372
  }
@@ -562,7 +657,7 @@ class Emagicone_Mobassistantconnector_IndexController extends Mage_Core_Controll
562
  $first = $ordersCollection->getFirstItem();
563
 
564
  /*
565
- if(!empty($date_from) && !empty($date_to)) {
566
  $ordersCollection->addFieldToFilter('main_table.created_at',
567
  array('from' => $date_from,
568
  'to' => $date_to,
24
  public $hash = false;
25
  public $def_currency;
26
  public $currency_code;
27
+ public $store_group_id = -1;
28
  private $hash_only;
29
  private $session_key;
30
  const GSM_URL = 'https://android.googleapis.com/gcm/send';
31
+ const MB_VERSION = '86';
32
 
33
  public function indexAction()
34
  {
42
 
43
  Mage::helper('mobassistantconnector/access')->clearOldData();
44
 
45
+ if ($this->getRequest()->has('callback') && (strlen($this->getRequest()->get('callback')) > 0))
46
+ $this->callback = $this->getRequest()->get('callback');
47
+ if ($this->getRequest()->has('call_function') && (strlen($this->getRequest()->get('call_function')) > 0)) {
48
+ $this->call_function = $this->getRequest()->get('call_function');
49
+ } else {
50
+ $this->run_self_test();
 
 
 
 
 
51
  }
52
+ if ($this->getRequest()->has('hash') && (strlen($this->getRequest()->get('hash')) > 0))
53
+ $this->hash = $this->getRequest()->get('hash');
54
+ if ($this->getRequest()->has('key') && (strlen($this->getRequest()->get('key')) > 0))
55
+ $this->session_key = $this->getRequest()->get('key');
56
+ if ($this->getRequest()->has('hash_only') && (strlen($this->getRequest()->get('hash_only')) > 0))
57
+ $this->hash_only = $this->getRequest()->get('hash_only');
58
+
59
 
60
+ if ($this->hash_only) {
61
+ $this->generate_output('You should update Magento Mobile Assistant application.');
62
+ }
63
  // if(!$this->check_auth()) {
64
  // $this->generate_output('auth_error');
65
  // }
66
 
67
+ /******************************************/
68
+ if ($this->getRequest()->has('call_function') && ($this->getRequest()->get('call_function') == 'get_version')) {
69
+ $this->get_version();
70
+ }
71
 
72
  if ($this->hash) {
73
+ if (!$this->check_auth()) {
74
+ Mage::helper('mobassistantconnector/access')->addFailedAttempt();
75
+ Mage::log(
76
+ "Hash accepted ({$this->hash}) is incorrect",
77
+ null,
78
+ 'emagicone_mobassistantconnector.log'
79
+ );
80
+ $this->generate_output('auth_error');
81
  } else {
82
+ $this->session_key = Mage::helper('mobassistantconnector/access')->getSessionKey($this->hash);
83
+ $this->generate_output(array('session_key' => $this->session_key));
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
+ } elseif ($this->session_key) {
86
  if (!Mage::helper('mobassistantconnector/access')->checkSessionKey($this->session_key)) {
87
  Mage::log(
88
  "Key accepted ({$this->session_key}) is incorrect",
91
  );
92
  $this->generate_output(array('bad_session_key' => true));
93
  }
94
+ } else {
95
+ Mage::helper('mobassistantconnector/access')->addFailedAttempt();
96
+ $this->generate_output('auth_error');
97
  }
98
 
99
+
100
  $request_params = Mage::app()->getRequest()->getParams();
101
 
102
  $params = $this->validate_types($request_params, array(
103
+ 'show' => 'INT',
104
+ 'page' => 'INT',
105
+ 'search_order_id' => 'STR',
106
+ 'orders_from' => 'STR',
107
+ 'orders_to' => 'STR',
108
+ 'order_number' => 'STR',
109
+ 'customers_from' => 'STR',
110
+ 'customers_to' => 'STR',
111
+ 'date_from' => 'STR',
112
+ 'date_to' => 'STR',
113
+ 'graph_from' => 'STR',
114
+ 'graph_to' => 'STR',
115
+ 'stats_from' => 'STR',
116
+ 'stats_to' => 'STR',
117
+ 'products_to' => 'STR',
118
+ 'products_from' => 'STR',
119
+ 'order_id' => 'INT',
120
+ 'user_id' => 'INT',
121
+ 'params' => 'STR',
122
+ 'val' => 'STR',
123
+ 'search_val' => 'STR',
124
+ 'statuses' => 'STR',
125
+ 'sort_by' => 'STR',
126
+ 'last_order_id' => 'STR',
127
+ 'product_id' => 'INT',
128
+ 'get_statuses' => 'INT',
129
+ 'cust_with_orders' => 'INT',
130
+ 'data_for_widget' => 'INT',
131
+ 'registration_id' => 'STR',
132
+ 'registration_id_old' => 'STR',
133
+ 'registration_id_new' => 'STR',
134
+ 'api_key' => 'STR',
135
+ 'tracking_number' => 'STR',
136
+ 'tracking_title' => 'STR',
137
+ 'action' => 'STR',
138
+ 'carrier_code' => 'STR',
139
+ 'custom_period' => 'INT',
140
+ 'group_id' => 'INT',
141
+ 'push_new_customer' => 'INT',
142
+ 'push_new_order' => 'INT',
143
+ 'push_currency_code' => 'STR',
144
+ 'app_connection_id' => 'STR',
145
+ 'push_store_group_id' => 'STR',
146
+ 'push_order_statuses' => 'STR',
147
+ 'currency_code' => 'STR',
148
+ 'is_mail' => 'INT',
149
+ 'store_group_id' => 'INT',
150
+ 'carts_from' => 'STR',
151
+ 'carts_to' => 'STR',
152
+ 'cart_id' => 'STR',
153
+ 'search_carts' => 'STR',
154
+ 'param' => 'STR',
155
+ 'new_value' => 'STR',
156
  'show_unregistered_customers' => 'INT',
157
  ));
158
 
160
  $this->{$k} = $value;
161
  }
162
 
163
+ if (!empty($this->group_id)) {
164
+ $this->store_group_id = $this->group_id;
165
+ }
166
+
167
  if (empty($this->currency_code) || strval($this->currency_code) == 'base_currency' || strval($this->currency_code) == 'not_set') {
168
  $this->currency_code = $this->def_currency;
169
  }
237
  {
238
  if (!in_array($this->call_function, array("get_order_pdf"))) {
239
  $add_bridge_version = false;
240
+ if (in_array($this->call_function, array('test_config', 'get_store_title', 'get_store_stats', 'get_data_graphs', 'get_version'))) {
241
  if (is_array($data) && $data != 'auth_error' && $data != 'connection_error' && $data != 'old_bridge') {
242
  $add_bridge_version = true;
243
  }
287
  }
288
  }
289
 
290
+ protected function get_version()
291
+ {
292
+ if ($this->hash ) {
293
+ if ($this->check_auth()) {
294
+ if (!Mage::helper('mobassistantconnector/access')->checkSessionKey($this->session_key)) {
295
+ $this->session_key = Mage::helper('mobassistantconnector/access')->getSessionKey($this->hash);
296
+ } else {
297
+ $this->generate_output(array('session_key' => $this->session_key));
298
+ }
299
+ } else {
300
+ Mage::helper('mobassistantconnector/access')->addFailedAttempt();
301
+ $this->generate_output('auth_error');
302
+ }
303
+ } elseif ($this->session_key) {
304
+ if (!Mage::helper('mobassistantconnector/access')->checkSessionKey($this->session_key)) {
305
+ Mage::helper('mobassistantconnector/access')->addFailedAttempt();
306
+ $this->generate_output('auth_error');
307
+ } else {
308
+ $this->generate_output(array('session_key' => $this->session_key));
309
+ }
310
+ }
311
+
312
+ if (!empty($this->session_key)) {
313
+ $this->generate_output(array('session_key' => $this->session_key));
314
+ }
315
+ $this->generate_output(array());
316
+
317
+ }
318
+
319
+ protected function run_self_test()
320
+ {
321
+ $html = '<h2>Mobile Assistant Connector v.' . Mage::getConfig()->getModuleConfig("Emagicone_Mobassistantconnector")->version->__toString() . ' </h2>';
322
+
323
+ $html = $html.'</table><br/><br/>
324
+ <div style="margin-top: 15px; font-size: 13px;">Mobile Assistant Connector by <a href="http://emagicone.com" target="_blank"
325
+ style="color: #15428B">eMagicOne</a></div>';
326
+
327
+ die($html);
328
+ }
329
+
330
+ /**
331
+ * Delete push config by registration_id and app_connection_id
332
+ */
333
+ protected function delete_push_config() {
334
+ if (isset($this->app_connection_id)
335
+ && isset($this->registration_id)
336
+ && strlen($this->registration_id) > 0
337
+ && strlen($this->app_connection_id) > 0
338
+ ) {
339
+ $data_changed = false;
340
+ $deviceIds = Mage::getStoreConfig('mobassistantconnectorinfosec/access/google_ids');
341
+ if (strlen($deviceIds) > 0) {
342
+ $deviceIds = unserialize($deviceIds);
343
+ } else $deviceIds = array();
344
+
345
+ foreach ($deviceIds as $id => $deviceId) {
346
+ if ($deviceId['push_device_id'] == $this->registration_id && $deviceId['app_connection_id'] == $this->app_connection_id) {
347
+ unset($deviceIds[$id]);
348
+ $data_changed = true;
349
+ }
350
+ }
351
+
352
+ if ($data_changed) {
353
+ Mage::getModel('core/config')->saveConfig('mobassistantconnectorinfosec/access/google_ids', serialize($deviceIds));
354
+ }
355
+
356
+ $result = array('success' => 'true');
357
+ } else {
358
+ $result = array('error' => $this->__('Missing parameters'));
359
+ }
360
+
361
+ return $result;
362
+ }
363
+
364
  protected function push_notification_settings()
365
  {
366
  $result = array();
437
  // Delete empty record
438
  if ((intval($this->push_new_order) == 0) && (strlen($this->push_order_statuses) == 0) && (intval($this->push_new_customer) == 0)) {
439
  foreach ($deviceIds as $settingNum => $deviceId) {
440
+ if ($deviceId['push_device_id'] == $this->registration_id
441
+ && (isset($deviceId['app_connection_id'])
442
+ && $deviceId['app_connection_id'] == $deviceActions['app_connection_id'])
443
+ ) {
444
  unset($deviceIds[$settingNum]);
445
+ } else if ($deviceId['push_device_id'] == $this->registration_id
446
+ && $deviceId['push_store_group_id'] == $this->store_group_id
447
+ && (!isset($deviceId['app_connection_id']) || $deviceId['app_connection_id'] == -1)
448
+ ) {
449
  unset($deviceIds[$settingNum]);
450
  }
451
  }
452
  } else {
453
  // renew old record
454
  foreach ($deviceIds as $settingNum => $deviceId) {
455
+ if ($deviceId['push_device_id'] == $this->registration_id
456
+ && (isset($deviceId['app_connection_id'])
457
+ && $deviceId['app_connection_id'] == $deviceActions['app_connection_id'])
458
+ ) {
459
  $deviceIds[$settingNum] = $deviceActions;
460
  $matched = true;
461
+ } else if ($deviceId['push_device_id'] == $this->registration_id
462
+ && $deviceId['push_store_group_id'] == $deviceActions['push_store_group_id']
463
+ && !isset($deviceId['app_connection_id'])
464
+ ) {
465
  $deviceIds[$settingNum] = $deviceActions;
466
  $matched = true;
467
  }
657
  $first = $ordersCollection->getFirstItem();
658
 
659
  /*
660
+ if(!empty($date_from) && !empty($date_to)) {
661
  $ordersCollection->addFieldToFilter('main_table.created_at',
662
  array('from' => $date_from,
663
  'to' => $date_to,
app/code/community/Emagicone/Mobassistantconnector/etc/config.xml CHANGED
@@ -15,7 +15,7 @@
15
 
16
  <modules>
17
  <Emagicone_Mobassistantconnector>
18
- <version>1.2.0.1</version>
19
  </Emagicone_Mobassistantconnector>
20
  </modules>
21
  <frontend>
15
 
16
  <modules>
17
  <Emagicone_Mobassistantconnector>
18
+ <version>1.2.1</version>
19
  </Emagicone_Mobassistantconnector>
20
  </modules>
21
  <frontend>
package.xml CHANGED
@@ -1,23 +1,23 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>mobile_assistant_connector</name>
4
- <version>1.2.0.1</version>
5
- <stability>beta</stability>
6
  <license uri="http://www.gnu.org/licenses/gpl.html">GNU</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Mobile Assistant Connector</summary>
10
  <description>Mobile Assistant Connector</description>
11
  <notes>Added:&#xD;
12
- - previous quarter stats on dashboard&#xD;
13
- - changed security level&#xD;
14
- - downloading and printing PDF invoice&#xD;
15
  &#xD;
16
- Works only with beta release of app (2.6.0.1)</notes>
17
  <authors><author><name>eMagicOne</name><user>mobile</user><email>mobile@emagicone.com</email></author></authors>
18
- <date>2015-05-26</date>
19
- <time>15:26:16</time>
20
- <contents><target name="magecommunity"><dir name="Emagicone"><dir name="Mobassistantconnector"><dir name="Helper"><file name="Access.php" hash="19c6ccbaa8e82e770cc544f789cffddc"/><file name="Data.php" hash="2209bd29f7745d48d515ac68fd451e2d"/></dir><dir name="Model"><file name="Defpassword.php" hash="ab8f696fce0029f113986b83ddeb8232"/><file name="Failed.php" hash="7da654c3cf1e9a3f5a55da7f36192117"/><file name="Login.php" hash="bedbce507924854910524fbabe1c4948"/><file name="Observer.php" hash="bb18972490df3223aeb473d917a2acf4"/><file name="Order.php" hash="f3d5529e0504ea0265cb661e03f41109"/><file name="Password.php" hash="66e2050ecc7b56deb654b5476ac1746c"/><dir name="Resource"><dir name="Failed"><file name="Collection.php" hash="18980688d80660f6a663a2c4dce20f54"/></dir><file name="Failed.php" hash="a69ca1239d3400097fabc415ee02751b"/><dir name="Sessions"><file name="Collection.php" hash="397e9a6f637472b59abe42bca09ea616"/></dir><file name="Sessions.php" hash="4d9f6cdd340fd95549d287c6107285ac"/></dir><file name="Sessions.php" hash="e3a32e26446e4cd27032c99dde8d4cfa"/></dir><dir name="controllers"><file name="IndexController.php" hash="c5391d9bd16865db30039203a26a8d0d"/><dir name="adminhtml"><file name="IndexController.php" hash="ef5ca028e534cbf81b39a643885c9511"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="333ed888c7f8a1e067821b6547e34340"/><file name="config.xml" hash="5a97e58205c483005b7cd6a98c91756b"/><file name="system.xml" hash="916fe7ee643e4dcb15a5498219605896"/></dir><dir name="sql"><dir name="emagicone_mobassistantconnector_setup"><file name="install-1.0.0.php" hash="93cc0471b2386cc278cdf7ec8f1a2ae5"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Emagicone_Mobassistantconnector.xml" hash="7bb654478173d96ad294000fc9625820"/></dir></target><target name="magelocale"><dir><dir name="en_GB"><file name="Emagicone_Mobassistantconnector.csv" hash="eaf733f81ff47627c4389d487c93709f"/><file name="__Emagicone_Mobassistantconnector.csv" hash="eaf733f81ff47627c4389d487c93709f"/></dir><dir name="en_US"><file name="Emagicone_Mobassistantconnector.csv" hash="510d79a25c0bfb7a096aab57d8c5b458"/><file name="__Emagicone_Mobassistantconnector.csv" hash="510d79a25c0bfb7a096aab57d8c5b458"/></dir><dir name="es_ES"><file name="Emagicone_Mobassistantconnector.csv" hash="acc37c432dd8b4134844291931b70fbf"/><file name="__Emagicone_Mobassistantconnector.csv" hash="acc37c432dd8b4134844291931b70fbf"/></dir><dir name="fr_FR"><file name="Emagicone_Mobassistantconnector.csv" hash="76c48723a6bbd59534781fd3c7f6d86e"/><file name="__Emagicone_Mobassistantconnector.csv" hash="76c48723a6bbd59534781fd3c7f6d86e"/></dir><dir name="ru_RU"><file name="Emagicone_Mobassistantconnector.csv" hash="2346397cbe029dcc724717b953a3f38c"/><file name="__Emagicone_Mobassistantconnector.csv" hash="2346397cbe029dcc724717b953a3f38c"/></dir><dir name="uk_UA"><file name="Emagicone_Mobassistantconnector.csv" hash="cad0e0c3ec7603e6b886d815357d1766"/><file name="__Emagicone_Mobassistantconnector.csv" hash="cad0e0c3ec7603e6b886d815357d1766"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mobassistantconnector.xml" hash="b5c4d423be8de0c5d73d64783dcb9a3c"/></dir><dir name="template"><dir name="mobassistantconnector"><file name="jsinit.phtml" hash="785c82b5cf6b2a7dc94a1436d1c9115f"/></dir></dir></dir></dir></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><extension><name>curl</name><min>1.0</min><max>3.0</max></extension><extension><name>json</name><min>1.0</min><max>3.0</max></extension><extension><name>date</name><min>1.0</min><max>3.0</max></extension></required></dependencies>
23
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>mobile_assistant_connector</name>
4
+ <version>1.2.1</version>
5
+ <stability>stable</stability>
6
  <license uri="http://www.gnu.org/licenses/gpl.html">GNU</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Mobile Assistant Connector</summary>
10
  <description>Mobile Assistant Connector</description>
11
  <notes>Added:&#xD;
12
+ - 'Previous quarter' stats on dashboard&#xD;
13
+ - security level has been changed and improved&#xD;
14
+ - ability to download and print PDF invoice&#xD;
15
  &#xD;
16
+ *Works only with release of app (2.6.1) and higher</notes>
17
  <authors><author><name>eMagicOne</name><user>mobile</user><email>mobile@emagicone.com</email></author></authors>
18
+ <date>2015-07-01</date>
19
+ <time>15:16:36</time>
20
+ <contents><target name="magecommunity"><dir name="Emagicone"><dir name="Mobassistantconnector"><dir name="Helper"><file name="Access.php" hash="2aaa400c32b63a6ce62859c73153f9c0"/><file name="Data.php" hash="2209bd29f7745d48d515ac68fd451e2d"/></dir><dir name="Model"><file name="Defpassword.php" hash="ab8f696fce0029f113986b83ddeb8232"/><file name="Failed.php" hash="7da654c3cf1e9a3f5a55da7f36192117"/><file name="Login.php" hash="bedbce507924854910524fbabe1c4948"/><file name="Observer.php" hash="bb18972490df3223aeb473d917a2acf4"/><file name="Order.php" hash="f3d5529e0504ea0265cb661e03f41109"/><file name="Password.php" hash="66e2050ecc7b56deb654b5476ac1746c"/><dir name="Resource"><dir name="Failed"><file name="Collection.php" hash="18980688d80660f6a663a2c4dce20f54"/></dir><file name="Failed.php" hash="a69ca1239d3400097fabc415ee02751b"/><dir name="Sessions"><file name="Collection.php" hash="397e9a6f637472b59abe42bca09ea616"/></dir><file name="Sessions.php" hash="4d9f6cdd340fd95549d287c6107285ac"/></dir><file name="Sessions.php" hash="e3a32e26446e4cd27032c99dde8d4cfa"/></dir><dir name="controllers"><file name="IndexController.php" hash="dc32618fe8962304f258efc06f59f7db"/><dir name="adminhtml"><file name="IndexController.php" hash="ef5ca028e534cbf81b39a643885c9511"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="333ed888c7f8a1e067821b6547e34340"/><file name="config.xml" hash="db827e45192d8be190f3f4ea5205570d"/><file name="system.xml" hash="916fe7ee643e4dcb15a5498219605896"/></dir><dir name="sql"><dir name="emagicone_mobassistantconnector_setup"><file name="install-1.0.0.php" hash="93cc0471b2386cc278cdf7ec8f1a2ae5"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Emagicone_Mobassistantconnector.xml" hash="7bb654478173d96ad294000fc9625820"/></dir></target><target name="magelocale"><dir><dir name="en_GB"><file name="Emagicone_Mobassistantconnector.csv" hash="eaf733f81ff47627c4389d487c93709f"/><file name="__Emagicone_Mobassistantconnector.csv" hash="eaf733f81ff47627c4389d487c93709f"/></dir><dir name="en_US"><file name="Emagicone_Mobassistantconnector.csv" hash="510d79a25c0bfb7a096aab57d8c5b458"/><file name="__Emagicone_Mobassistantconnector.csv" hash="510d79a25c0bfb7a096aab57d8c5b458"/></dir><dir name="es_ES"><file name="Emagicone_Mobassistantconnector.csv" hash="acc37c432dd8b4134844291931b70fbf"/><file name="__Emagicone_Mobassistantconnector.csv" hash="acc37c432dd8b4134844291931b70fbf"/></dir><dir name="fr_FR"><file name="Emagicone_Mobassistantconnector.csv" hash="76c48723a6bbd59534781fd3c7f6d86e"/><file name="__Emagicone_Mobassistantconnector.csv" hash="76c48723a6bbd59534781fd3c7f6d86e"/></dir><dir name="ru_RU"><file name="Emagicone_Mobassistantconnector.csv" hash="2346397cbe029dcc724717b953a3f38c"/><file name="__Emagicone_Mobassistantconnector.csv" hash="2346397cbe029dcc724717b953a3f38c"/></dir><dir name="uk_UA"><file name="Emagicone_Mobassistantconnector.csv" hash="cad0e0c3ec7603e6b886d815357d1766"/><file name="__Emagicone_Mobassistantconnector.csv" hash="cad0e0c3ec7603e6b886d815357d1766"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mobassistantconnector.xml" hash="b5c4d423be8de0c5d73d64783dcb9a3c"/></dir><dir name="template"><dir name="mobassistantconnector"><file name="jsinit.phtml" hash="785c82b5cf6b2a7dc94a1436d1c9115f"/></dir></dir></dir></dir></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><extension><name>curl</name><min>1.0</min><max>3.0</max></extension><extension><name>json</name><min>1.0</min><max>3.0</max></extension><extension><name>date</name><min>1.0</min><max>3.0</max></extension></required></dependencies>
23
  </package>