MocoInsight_Mocoauto - Version 1.3.5

Version Notes

1.3.5

Faster uncovertedcarts

-------------------------------------------------------
1.3.4

log_all_joined

---------------------------------------------------------
1.3.3

Added rulesAction - for details on coupon and shopping carts rule.

-------------------------------------------------------
1.3.2

Exception handles for uncoverted carts.
Changed catalogue tax rate processing.

--------------------------------------------------------
1.3.1

Added graceful exception handling for installations that have misconfigured product attributes

---------------------------------------------------------
1.3.0

Check direct SQL methods defined
exproducts
exstats
report version of php

----------------------------------------------------------
1.2.9

Default tax rate fro products returned with producAction
---------------------------------------------------------
1.2.8

storesAction now returns store config data
----------------------------------------------------------
1.2.7

log stats function calculates using direct SQL

1.2.6

StatsAction now returns size of log files

------------------------------------------------------------
1.2.5

Speed up stocklevelAction, now only returns non zero inventory

WishlistAction now includes wishListItemId

-------------------------------------------------------------
1.2.4

Added wishlistsAction
Added unconvertedcartsAction

Fix - log actions now check if table exists

----------------------------------------------------------------
1.2.3

Fix to Observer.php
-------------------------------------------------------------
1.2.2

Added subscribersAction
Added storesAction

--------------------------------------------------------------
1.2.1

ordersAction - now uses billing address as some products (Virtual) won't have a delivery address and checks that object exists

---------------------------------------------------------------
1.2.0

ordersAction - added shpping address
productsAction - added end of record marker

stocklevelsAction - New

Added log_ actions

----------------------------------------------------------------
1.1.7

Added malformed error

Returns API version number with failed calls
----------------------------------------------------------------
1.1.6

Changed API header name to work with sites that use additional authorisation now:

mocoapi: apikey= THE API KEY

----------------------------------------------------------------
1.1.5
Updated stats API now includes:

Version of magento
System date/time
added success true for succesful requests
changed product category to moco_category

Download this release

Release Info

Developer Rob Davies
Extension MocoInsight_Mocoauto
Version 1.3.5
Comparing to
See all releases


Code changes from version 1.3.3 to 1.3.5

app/code/community/MocoInsight/Mocoauto/controllers/ApiController.php CHANGED
@@ -15,15 +15,17 @@
15
  // stocklevelsAction
16
  // log_urlAction
17
  // log_url_infoAction
 
18
  // log_visitorAction
19
  // log_visitor_infoAction
 
20
  // log_customerAction
21
  // subscribersAction
22
  // storesAction
23
  // unconvertedcartsAction
24
  // wishlistsAction
25
  // installinfoAction
26
- //
27
  //
28
 
29
 
@@ -84,6 +86,8 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
84
  return $this;
85
  }
86
 
 
 
87
  $currentSystemTime = date('Y-m-d H:i:s', time());
88
  $sections = explode('/', trim($this->getRequest()->getPathInfo(), '/'));
89
  $since = $this->getRequest()->getParam('since','All');
@@ -122,12 +126,21 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
122
  $_cartsCol = Mage::getResourceModel('sales/quote_collection')->addFieldToFilter('is_active', '1');
123
  if($since != 'All'){
124
  $_cartsCol->addFieldToFilter('updated_at', array('gteq' =>$since));
125
- }
 
 
 
 
126
  $cartscount = $_cartsCol->getSize();
127
 
128
  $_subscriberCol = Mage::getModel('newsletter/subscriber')-> getCollection();
129
 
130
  $subscribercount = $_subscriberCol->getSize();
 
 
 
 
 
131
  //
132
  // Check size of log files
133
  // 1. Check if isTableExists method is defined (It appears Magento v1.5.0.1 defines it differently)
@@ -215,6 +228,7 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
215
  'Wish lists' => $wishlistcount,
216
  'Unconverted carts' => $cartscount,
217
  'Subscribers' => $subscribercount,
 
218
  'log_url' => $log_urlcount,
219
  'log_url_info' => $log_url_infocount,
220
  'log_visitor' => $log_visitorcount,
@@ -223,7 +237,8 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
223
  'System Date Time' => $currentSystemTime,
224
  'Magento Version' => $magentoVersion,
225
  'MocoAPI Version' => $apiversion,
226
- 'PHP Version' => $phpversion
 
227
  );
228
 
229
  $this->getResponse()
@@ -275,6 +290,7 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
275
  $wishlistcount = $_wishlistCol->getSize();
276
 
277
  $_cartsCol = Mage::getResourceModel('sales/quote_collection')->addFieldToFilter('is_active', '1');
 
278
  if($since != 'All'){
279
  $_cartsCol->addFieldToFilter('updated_at', array('gteq' =>$since));
280
  }
@@ -553,6 +569,7 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
553
  $products[] = array('moco_category' => $category->getID());
554
  }
555
 
 
556
  // if type is configurable get simple product children
557
 
558
  if($_product->getTypeID() == 'configurable'){
@@ -640,8 +657,6 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
640
 
641
  // if type is configurable get simple product children
642
 
643
-
644
-
645
  if($_product->getTypeID() == 'configurable'){
646
  $assocProductIDs = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$_product);
647
 
@@ -755,6 +770,97 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
755
 
756
  }
757
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
758
  public function log_visitorAction()
759
  {
760
  $tablename = 'log_visitor'; // Set the table name here
@@ -818,6 +924,50 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
818
  }
819
 
820
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
821
  public function log_customerAction()
822
  {
823
  $tablename = 'log_customer'; // Set the table name here
@@ -838,7 +988,14 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
838
  $readresults=array($tablename ." table does not exist");
839
  }
840
  else{
841
- $query = 'select * from ' . $tablename . ' limit ' . $offset . ',' . $page_size;
 
 
 
 
 
 
 
842
  $readresults = $_read->fetchAll($query);
843
  }
844
 
@@ -907,7 +1064,7 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
907
  return $this;
908
  }
909
 
910
- public function unconvertedcartsAction()
911
  {
912
  if(!$this->_authorise()) {
913
  return $this;
@@ -923,9 +1080,12 @@ class MocoInsight_Mocoauto_ApiController extends Mage_Core_Controller_Front_Acti
923
  $_cartsCol->getSelect()->limit($page_size, ($offset * $page_size))->order('updated_at');
924
 
925
  if($since != 'All'){
926
- $_cartsCol->addFieldToFilter('updated_at', array('gteq' =>$since));
927
  }
928
-
 
 
 
929
  $carts = array();
930
 
931
  foreach($_cartsCol as $_cart) {
15
  // stocklevelsAction
16
  // log_urlAction
17
  // log_url_infoAction
18
+ // log_url_joinedAction
19
  // log_visitorAction
20
  // log_visitor_infoAction
21
+ // log_visitor_joinedAction
22
  // log_customerAction
23
  // subscribersAction
24
  // storesAction
25
  // unconvertedcartsAction
26
  // wishlistsAction
27
  // installinfoAction
28
+ // rulesAction
29
  //
30
 
31
 
86
  return $this;
87
  }
88
 
89
+ $time_start = microtime(true);
90
+
91
  $currentSystemTime = date('Y-m-d H:i:s', time());
92
  $sections = explode('/', trim($this->getRequest()->getPathInfo(), '/'));
93
  $since = $this->getRequest()->getParam('since','All');
126
  $_cartsCol = Mage::getResourceModel('sales/quote_collection')->addFieldToFilter('is_active', '1');
127
  if($since != 'All'){
128
  $_cartsCol->addFieldToFilter('updated_at', array('gteq' =>$since));
129
+ }
130
+ else{
131
+ $_cartsCol->addFieldToFilter('items_count', array('neq' => 0));
132
+ }
133
+
134
  $cartscount = $_cartsCol->getSize();
135
 
136
  $_subscriberCol = Mage::getModel('newsletter/subscriber')-> getCollection();
137
 
138
  $subscribercount = $_subscriberCol->getSize();
139
+
140
+ $_rulesCol = Mage::getModel('salesrule/rule')->getCollection();
141
+
142
+ $rulescount = $_rulesCol->getSize();
143
+
144
  //
145
  // Check size of log files
146
  // 1. Check if isTableExists method is defined (It appears Magento v1.5.0.1 defines it differently)
228
  'Wish lists' => $wishlistcount,
229
  'Unconverted carts' => $cartscount,
230
  'Subscribers' => $subscribercount,
231
+ 'Cart and Coupon rules' => $rulescount,
232
  'log_url' => $log_urlcount,
233
  'log_url_info' => $log_url_infocount,
234
  'log_visitor' => $log_visitorcount,
237
  'System Date Time' => $currentSystemTime,
238
  'Magento Version' => $magentoVersion,
239
  'MocoAPI Version' => $apiversion,
240
+ 'PHP Version' => $phpversion,
241
+ 'API processing time' => (microtime(true) - $time_start)
242
  );
243
 
244
  $this->getResponse()
290
  $wishlistcount = $_wishlistCol->getSize();
291
 
292
  $_cartsCol = Mage::getResourceModel('sales/quote_collection')->addFieldToFilter('is_active', '1');
293
+
294
  if($since != 'All'){
295
  $_cartsCol->addFieldToFilter('updated_at', array('gteq' =>$since));
296
  }
569
  $products[] = array('moco_category' => $category->getID());
570
  }
571
 
572
+
573
  // if type is configurable get simple product children
574
 
575
  if($_product->getTypeID() == 'configurable'){
657
 
658
  // if type is configurable get simple product children
659
 
 
 
660
  if($_product->getTypeID() == 'configurable'){
661
  $assocProductIDs = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$_product);
662
 
770
 
771
  }
772
 
773
+ public function log_url_joinedAction()
774
+ {
775
+ $tablename1 = 'log_url'; // Set the table name here
776
+ $tablename2 = 'log_url_info'; // Set the table name here
777
+
778
+ if(!$this->_authorise()) {
779
+ return $this;
780
+ }
781
+
782
+ $sections = explode('/', trim($this->getRequest()->getPathInfo(), '/'));
783
+
784
+ $offset = $this->getRequest()->getParam('offset', 0);
785
+ $page_size = $this->getRequest()->getParam('page_size', 20);
786
+ $since = $this->getRequest()->getParam('since', 'All');
787
+
788
+ $_read = Mage::getSingleton('core/resource')->getConnection('core_read');
789
+
790
+ if(!$_read ->isTableExists($tablename1)){ //Table does not exist
791
+ $readresults=array($tablename1 ." table does not exist");
792
+ }
793
+ elseif(!$_read ->isTableExists($tablename2)){ //Table does not exist
794
+ $readresults=array($tablename2 ." table does not exist");
795
+ }
796
+ else{
797
+ $query = 'select visitor_id, visit_time, url, referer from ' . $tablename1 .
798
+ ' Left join ' . $tablename2 . ' on ' . $tablename1 . '.url_id = ' . $tablename2 . '.url_id where url not like "%mocoauto%"';
799
+
800
+ if($since != 'All'){
801
+ $query = $query . ' and visit_time > "' . $since . '"';
802
+ }
803
+
804
+ $query = $query .' limit ' . $offset . ',' . $page_size;
805
+
806
+ $readresults = $_read->fetchAll($query);
807
+ }
808
+ }
809
+
810
+ public function log_all_joinedAction()
811
+ {
812
+ $tablename1 = 'log_url'; // Set the table name here
813
+ $tablename2 = 'log_url_info'; // Set the table name here
814
+ $tablename3 = 'log_visitor'; // Set the table name here
815
+ $tablename4 = 'log_visitor_info'; // Set the table name here
816
+
817
+
818
+ if(!$this->_authorise()) {
819
+ return $this;
820
+ }
821
+
822
+ $sections = explode('/', trim($this->getRequest()->getPathInfo(), '/'));
823
+
824
+ $offset = $this->getRequest()->getParam('offset', 0);
825
+ $page_size = $this->getRequest()->getParam('page_size', 20);
826
+ $since = $this->getRequest()->getParam('since', 'All');
827
+
828
+ $_read = Mage::getSingleton('core/resource')->getConnection('core_read');
829
+
830
+ if(!$_read ->isTableExists($tablename1)){ //Table does not exist
831
+ $readresults=array($tablename1 ." table does not exist");
832
+ }
833
+ elseif(!$_read ->isTableExists($tablename2)){ //Table does not exist
834
+ $readresults=array($tablename2 ." table does not exist");
835
+ }
836
+ else{
837
+ $query = 'select ';
838
+ $query = $query . $tablename1 . '.url_id, ' . $tablename1 . '.visitor_id, visit_time,'; //log_url
839
+ $query = $query . ' url, referer,'; //log_url_info
840
+ $query = $query . ' session_id, first_visit_at, last_visit_at, store_id,'; //log_visitor
841
+ $query = $query . ' http_referer, http_user_agent, server_addr, remote_addr'; //log_visitor_info
842
+ $query = $query . ' from ' . $tablename1;
843
+ $query = $query . ' Left join ' . $tablename2 . ' on ' . $tablename1 . '.url_id = ' . $tablename2 . '.url_id';
844
+ $query = $query . ' Left join ' . $tablename3 . ' on ' . $tablename1 . '.visitor_id = ' . $tablename3 . '.visitor_id';
845
+ $query = $query . ' Left join ' . $tablename4 . ' on ' . $tablename1 . '.visitor_id = ' . $tablename4 . '.visitor_id where url not like "%mocoauto%"';
846
+
847
+ if($since != 'All'){
848
+ $query = $query . ' and visit_time > "' . $since . '"';
849
+ }
850
+
851
+ $query = $query .' limit ' . $offset . ',' . $page_size;
852
+
853
+ //Mage::log('DBG SQL: '. $query);
854
+ $readresults = $_read->fetchAll($query);
855
+ }
856
+
857
+ $this->getResponse()
858
+ ->setBody(json_encode($readresults))
859
+ ->setHttpResponseCode(200)
860
+ ->setHeader('Content-type', 'application/json', true);
861
+ return $this;
862
+ }
863
+
864
  public function log_visitorAction()
865
  {
866
  $tablename = 'log_visitor'; // Set the table name here
924
  }
925
 
926
 
927
+ public function log_visitor_joinedAction()
928
+ {
929
+ $tablename1 = 'log_visitor'; // Set the table name here
930
+ $tablename2 = 'log_visitor_info'; // Set the table name here
931
+
932
+ if(!$this->_authorise()) {
933
+ return $this;
934
+ }
935
+
936
+ $sections = explode('/', trim($this->getRequest()->getPathInfo(), '/'));
937
+
938
+ $offset = $this->getRequest()->getParam('offset', 0);
939
+ $page_size = $this->getRequest()->getParam('page_size', 20);
940
+ $since = $this->getRequest()->getParam('since', 'All');
941
+
942
+ $_read = Mage::getSingleton('core/resource')->getConnection('core_read');
943
+
944
+ if(!$_read ->isTableExists($tablename1)){ //Table does not exist
945
+ $readresults=array($tablename1 ." table does not exist");
946
+ }
947
+ elseif(!$_read ->isTableExists($tablename2)){ //Table does not exist
948
+ $readresults=array($tablename2 ." table does not exist");
949
+ }
950
+ else{
951
+ $query = 'select ' .
952
+ $tablename1 . '.visitor_id, session_id, first_visit_at, last_visit_at, last_url_id, store_id, http_referer, http_user_agent, remote_addr from '
953
+ . $tablename1 . ' Left join ' . $tablename2 . ' on ' . $tablename1 . '.visitor_id = ' . $tablename2 . '.visitor_id';
954
+
955
+ if($since != 'All'){
956
+ $query = $query . ' where last_vist_at > "' . $since . '"';
957
+ }
958
+
959
+ $query = $query .' limit ' . $offset . ',' . $page_size;
960
+
961
+ $readresults = $_read->fetchAll($query);
962
+ }
963
+
964
+ $this->getResponse()
965
+ ->setBody(json_encode($readresults))
966
+ ->setHttpResponseCode(200)
967
+ ->setHeader('Content-type', 'application/json', true);
968
+ return $this;
969
+ }
970
+
971
  public function log_customerAction()
972
  {
973
  $tablename = 'log_customer'; // Set the table name here
988
  $readresults=array($tablename ." table does not exist");
989
  }
990
  else{
991
+ $query = 'select * from ' . $tablename;
992
+
993
+ if($since != 'All'){
994
+ $query = $query . ' where login_at > "' . $since . '"';
995
+ }
996
+
997
+ $query = $query .' limit ' . $offset . ',' . $page_size;
998
+
999
  $readresults = $_read->fetchAll($query);
1000
  }
1001
 
1064
  return $this;
1065
  }
1066
 
1067
+ public function unconvertedcartsAction()//This query returns only no empty carts when no dat filter applied
1068
  {
1069
  if(!$this->_authorise()) {
1070
  return $this;
1080
  $_cartsCol->getSelect()->limit($page_size, ($offset * $page_size))->order('updated_at');
1081
 
1082
  if($since != 'All'){
1083
+ $_cartsCol->addFieldToFilter('updated_at', array('gteq' =>$since));
1084
  }
1085
+ else{
1086
+ $_cartsCol->addFieldToFilter('items_count', array('neq' => 0));
1087
+ }
1088
+
1089
  $carts = array();
1090
 
1091
  foreach($_cartsCol as $_cart) {
app/code/community/MocoInsight/Mocoauto/etc/config.xml CHANGED
@@ -4,7 +4,7 @@
4
  <config>
5
  <modules>
6
  <MocoInsight_Mocoauto>
7
- <version>1.3.3</version>
8
  </MocoInsight_Mocoauto>
9
  </modules>
10
  <global>
4
  <config>
5
  <modules>
6
  <MocoInsight_Mocoauto>
7
+ <version>1.3.5</version>
8
  </MocoInsight_Mocoauto>
9
  </modules>
10
  <global>
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>MocoInsight_Mocoauto</name>
4
- <version>1.3.3</version>
5
  <stability>stable</stability>
6
  <license>OSL v1.0.0</license>
7
  <channel>community</channel>
@@ -11,7 +11,17 @@
11
  &#xD;
12
  &#xD;
13
  </description>
14
- <notes>1.3.3&#xD;
 
 
 
 
 
 
 
 
 
 
15
  &#xD;
16
  Added rulesAction - for details on coupon and shopping carts rule.&#xD;
17
  &#xD;
@@ -121,9 +131,9 @@ System date/time&#xD;
121
  added success true for succesful requests&#xD;
122
  changed product category to moco_category</notes>
123
  <authors><author><name>Rob Davies</name><user>mocoinsight</user><email>rob.davies@mocoinsight.com</email></author></authors>
124
- <date>2014-05-06</date>
125
- <time>05:50:08</time>
126
- <contents><target name="magecommunity"><dir name="MocoInsight"><dir name="Mocoauto"><dir name="Block"><dir name="Adminhtml"><dir name="Config"><dir name="Buttons"><file name="Generate.php" hash="7690d026d99e31732279e6aa5b6b1def"/></dir></dir><file name="Menu.php" hash="1017af5f89545915f3f28be637e07a0c"/></dir></dir><dir name="Helper"><file name="Data.php" hash="4b53061397fec9446830ef218aba4055"/><file name="JWT.php" hash="6610b92191eccedb8edcf993730c3dc0"/></dir><dir name="Model"><file name="Observer.php" hash="c2cc2f396fedd682268457d17dd045b1"/><dir name="Source"><file name="Views.php" hash="c1ddaf4c7bb51c3907dd72b4e21b1897"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="MocoautoController.php" hash="6665fb22806ef20ee59e88a638ca6359"/></dir><file name="ApiController.php" hash="6d7c9d5f428f28af4f098fe07e2cbae1"/></dir><dir name="etc"><file name="config.xml" hash="29bb45820deebb199ebac2ba34629c28"/><file name="system.xml" hash="5d86b7d939b85826c7ac4d4496f80900"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mocoauto.xml" hash="7dd142354c78e773490c552bbcc3b408"/></dir><dir name="template"><dir name="mocoauto"><dir name="config"><file name="button-generate.phtml" hash="d2ff89c8f1f78e748ac998bd13e61750"/><file name="link.phtml" hash="75c61cac6bdd33ed914f8618b5698598"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="mocoauto.xml" hash="a12a0e1dc675b9ac675181373299e36a"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="MocoInsight_Mocoauto.xml" hash="1ec387f21726f6c7ea3ea216c47340d9"/></dir></target><target name="magelocale"><dir name="en_US"><file name="MocoInsight_Mocoauto.csv" hash="9b508561f871f93fa3158014baebf02b"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="mocoauto"><file name="button.png" hash="58e62edb7f4be46e3b29c0bb774c7ad7"/><file name="icon.png" hash="b5bfce535c987d1e9e604823ac4b3943"/><file name="mocoauto.css" hash="3cd28072e5c2f2b656dd04c06288165b"/></dir></dir></dir></dir></target></contents>
127
  <compatible/>
128
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
129
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>MocoInsight_Mocoauto</name>
4
+ <version>1.3.5</version>
5
  <stability>stable</stability>
6
  <license>OSL v1.0.0</license>
7
  <channel>community</channel>
11
  &#xD;
12
  &#xD;
13
  </description>
14
+ <notes>1.3.5&#xD;
15
+ &#xD;
16
+ Faster uncovertedcarts&#xD;
17
+ &#xD;
18
+ -------------------------------------------------------&#xD;
19
+ 1.3.4&#xD;
20
+ &#xD;
21
+ log_all_joined&#xD;
22
+ &#xD;
23
+ ---------------------------------------------------------&#xD;
24
+ 1.3.3&#xD;
25
  &#xD;
26
  Added rulesAction - for details on coupon and shopping carts rule.&#xD;
27
  &#xD;
131
  added success true for succesful requests&#xD;
132
  changed product category to moco_category</notes>
133
  <authors><author><name>Rob Davies</name><user>mocoinsight</user><email>rob.davies@mocoinsight.com</email></author></authors>
134
+ <date>2014-05-08</date>
135
+ <time>01:51:08</time>
136
+ <contents><target name="magecommunity"><dir name="MocoInsight"><dir name="Mocoauto"><dir name="Block"><dir name="Adminhtml"><dir name="Config"><dir name="Buttons"><file name="Generate.php" hash="7690d026d99e31732279e6aa5b6b1def"/></dir></dir><file name="Menu.php" hash="1017af5f89545915f3f28be637e07a0c"/></dir></dir><dir name="Helper"><file name="Data.php" hash="4b53061397fec9446830ef218aba4055"/><file name="JWT.php" hash="6610b92191eccedb8edcf993730c3dc0"/></dir><dir name="Model"><file name="Observer.php" hash="c2cc2f396fedd682268457d17dd045b1"/><dir name="Source"><file name="Views.php" hash="c1ddaf4c7bb51c3907dd72b4e21b1897"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="MocoautoController.php" hash="6665fb22806ef20ee59e88a638ca6359"/></dir><file name="ApiController.php" hash="bd664ed2fe8e7666de079d02e0b78964"/></dir><dir name="etc"><file name="config.xml" hash="8b9aec3e6a8ec2aef0595f3a8887e203"/><file name="system.xml" hash="5d86b7d939b85826c7ac4d4496f80900"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="mocoauto.xml" hash="7dd142354c78e773490c552bbcc3b408"/></dir><dir name="template"><dir name="mocoauto"><dir name="config"><file name="button-generate.phtml" hash="d2ff89c8f1f78e748ac998bd13e61750"/><file name="link.phtml" hash="75c61cac6bdd33ed914f8618b5698598"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="mocoauto.xml" hash="a12a0e1dc675b9ac675181373299e36a"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="MocoInsight_Mocoauto.xml" hash="1ec387f21726f6c7ea3ea216c47340d9"/></dir></target><target name="magelocale"><dir name="en_US"><file name="MocoInsight_Mocoauto.csv" hash="9b508561f871f93fa3158014baebf02b"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="mocoauto"><file name="button.png" hash="58e62edb7f4be46e3b29c0bb774c7ad7"/><file name="icon.png" hash="b5bfce535c987d1e9e604823ac4b3943"/><file name="mocoauto.css" hash="3cd28072e5c2f2b656dd04c06288165b"/></dir></dir></dir></dir></target></contents>
137
  <compatible/>
138
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
139
  </package>