Ordermonitor_Agent - Version 1.2.0

Version Notes

Updated to get status of cron jobs. Other minor updates and tweaks.

Download this release

Release Info

Developer Adam Levenson
Extension Ordermonitor_Agent
Version 1.2.0
Comparing to
See all releases


Code changes from version 1.1.9 to 1.2.0

app/code/community/Ordermonitor/Agent/Exception.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
- * @copyright Copyright (C) 2014 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Exception extends Mage_Core_Exception
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
+ * @copyright Copyright (C) 2015 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Exception extends Mage_Core_Exception
app/code/community/Ordermonitor/Agent/Helper/Data.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
- * @copyright Copyright (C) 2014 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Helper_Data extends Mage_Core_Helper_Abstract
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
+ * @copyright Copyright (C) 2015 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Helper_Data extends Mage_Core_Helper_Abstract
app/code/community/Ordermonitor/Agent/Model/Cron.php ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Order Monitor
4
+ *
5
+ * @category Ordermonitor
6
+ * @package Ordermonitor_Agent
7
+ * @author Digital Operative <codemaster@digitaloperative.com>
8
+ * @copyright Copyright (C) 2015 Digital Operative
9
+ * @license http://www.ordermonitor.com/license
10
+ */
11
+ class Ordermonitor_Agent_Model_Cron extends Mage_Core_Model_Abstract
12
+ {
13
+
14
+ /**
15
+ * Get the cron status for all jobs run in the last x days
16
+ *
17
+ * @param int $days
18
+ * @return array list of jobs and status for each
19
+ */
20
+ public function getCronStatus($days = 3)
21
+ {
22
+ $window = 60 * 60 * 24 * (int) $days;
23
+ $now = time();
24
+
25
+ $results = array(
26
+ 'lookBackWindow' => $window,
27
+ 'lastComplete' => $window,
28
+ 'jobsList' => array(),
29
+ 'jobs' => array()
30
+ );
31
+
32
+ $results['jobsList'] = $this->_getJobsList($window);
33
+ $results['lastComplete'] = $this->_getLastCompleted($now, $window);
34
+
35
+ foreach ($results['jobsList'] as $job) {
36
+ $results['jobs'][$job] = $this->_getJobStatus($job, $now, $window);
37
+ }
38
+
39
+ return $results;
40
+ }
41
+
42
+ /**
43
+ * Get the status and details for a cron kob
44
+ *
45
+ * @param $jobCode job code name
46
+ * @return array array of jobs and status and times
47
+ */
48
+ private function _getJobStatus($jobCode, $time, $maxTime)
49
+ {
50
+ $results = array(
51
+ 'status' => '',
52
+ 'scheduled' => $maxTime,
53
+ 'executed' => $maxTime,
54
+ 'finished' => $maxTime,
55
+ );
56
+
57
+ $items = Mage::getModel('cron/schedule')
58
+ ->getCollection()
59
+ ->addFieldToFilter('job_code', array('eq' => $jobCode))
60
+ ->addFieldToFilter('scheduled_at', array('lteq' => strftime('%Y-%m-%d %H:%M:00', $time)))
61
+ ->setOrder('executed_at', 'DESC');
62
+
63
+ $items->getSelect()
64
+ ->reset(Zend_Db_Select::COLUMNS)
65
+ ->columns(array('status', 'scheduled_at', 'executed_at', 'finished_at'))
66
+ ->limit(1);
67
+
68
+ $jobInfo = $items->getFirstItem()->toArray();
69
+
70
+ if (count($jobInfo) > 0) {
71
+ $results['status'] = $jobInfo['status'];
72
+ $results['scheduled'] = $time - strtotime($jobInfo['scheduled_at']);
73
+ $results['executed'] = (is_null($jobInfo['executed_at']) ? $maxTime : $time - strtotime($jobInfo['executed_at']));
74
+ $results['finished'] = (is_null($jobInfo['finished_at']) ? $maxTime : $time - strtotime($jobInfo['finished_at']));
75
+ }
76
+
77
+ return $results;
78
+ }
79
+
80
+ /**
81
+ * Gets a list of all the jobs that have been scheduled in the last x days
82
+ *
83
+ * @param $window number of days to look for jobs
84
+ * @param int $limit max number of jobs to pull
85
+ * @return array of job codes
86
+ */
87
+ private function _getJobsList($window, $limit = 50)
88
+ {
89
+ $results = array();
90
+
91
+ $items = Mage::getModel('cron/schedule')->getCollection()
92
+ ->addFieldToFilter('scheduled_at', array('gt' => strftime('%Y-%m-%d %H:%M:00', time() - $window)));
93
+
94
+ $items->getSelect()
95
+ ->reset(Zend_Db_Select::COLUMNS)
96
+ ->columns(array('job_code'))
97
+ ->group('job_code')
98
+ ->limit($limit);
99
+
100
+ $jobs = $items->toArray();
101
+
102
+ foreach ($jobs['items'] as $job) {
103
+ $results[] = $job['job_code'];
104
+ }
105
+
106
+ return $results;
107
+ }
108
+
109
+ /**
110
+ * Gets the number of seconds since a job ran successfully
111
+ *
112
+ * @param $time current time
113
+ * @return string number of seconds
114
+ */
115
+ private function _getLastCompleted($time, $maxTime)
116
+ {
117
+ $items = Mage::getModel('cron/schedule')
118
+ ->getCollection()
119
+ ->addFieldToFilter('executed_at', array('lteq' => strftime('%Y-%m-%d %H:%M:00', $time)))
120
+ ->addFieldToFilter('finished_at', array('neq' => 'NULL'))
121
+ ->setOrder('finished_at', 'DESC');
122
+
123
+ $items->getSelect()
124
+ ->reset(Zend_Db_Select::COLUMNS)
125
+ ->columns(array('status', 'scheduled_at', 'executed_at', 'finished_at'))
126
+ ->limit(1);
127
+
128
+ $jobInfo = $items->getFirstItem()->toArray();
129
+
130
+ return (!isset($jobInfo['finished_at']) || is_null($jobInfo['finished_at'] ) ? $maxTime : $time - strtotime($jobInfo['finished_at']));
131
+ }
132
+ }
app/code/community/Ordermonitor/Agent/Model/Inventory.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
- * @copyright Copyright (C) 2014 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Model_Inventory extends Mage_Core_Model_Abstract
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
+ * @copyright Copyright (C) 2015 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Model_Inventory extends Mage_Core_Model_Abstract
app/code/community/Ordermonitor/Agent/Model/Monitor.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
- * @copyright Copyright (C) 2014 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Model_Monitor extends Mage_Core_Model_Abstract
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
+ * @copyright Copyright (C) 2015 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_Model_Monitor extends Mage_Core_Model_Abstract
app/code/community/Ordermonitor/Agent/Model/Secure.php ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Order Monitor
4
+ *
5
+ * @category Ordermonitor
6
+ * @package Ordermonitor_Agent
7
+ * @author Digital Operative <codemaster@digitaloperative.com>
8
+ * @copyright Copyright (C) 2015 Digital Operative
9
+ * @license http://www.ordermonitor.com/license
10
+ */
11
+ class Ordermonitor_Agent_Model_Secure extends Mage_Core_Model_Abstract
12
+ {
13
+
14
+ /**
15
+ * Gets information about the security settings for Magento
16
+ *
17
+ * @return array security check data
18
+ */
19
+ public function getSecureInfo()
20
+ {
21
+ $results = array();
22
+
23
+ /*
24
+ admin/security/use_form_key 1
25
+ admin/security/session_cookie_lifetime 3600
26
+ admin/security/lockout_failures 6
27
+ admin/security/lockout_threshold 30
28
+ admin/security/password_lifetime 90
29
+ admin/security/password_is_forced 1
30
+ */
31
+
32
+ $results['captchaEnabled'] = Mage::getStoreConfig('admin/captcha/enable');
33
+ $results['adminHttps'] = Mage::getStoreConfig('web/secure/use_in_adminhtml');
34
+
35
+ //CASE SENSATIVE - password is always case, used for username
36
+ $results['loginCaseSensitive'] = Mage::getStoreConfig('admin/security/use_case_sensitive_login');
37
+ $results['adminPathOk'] = $this->_checkAdminUrlPath();
38
+ $results['localXmlSecured'] = $this->_checkLocalXmlPublic();
39
+
40
+ $results['adminUsername'] = $this->_checkAdminUsernames();
41
+
42
+ $passwordUsers = $this->_checkAdminPasswords();
43
+
44
+ if (count($passwordUsers) > 0) {
45
+ $results['passwordsOk'] = 0;
46
+ } else {
47
+ $results['passwordsOk'] = 1;
48
+ }
49
+
50
+ $results['badPasswords'] = array('numUsers' => count($passwordUsers), 'usernames' => $passwordUsers);
51
+
52
+ return $results;
53
+ }
54
+
55
+
56
+ private function _checkAdminUrlPath()
57
+ {
58
+ $badPaths = array('admin');
59
+ $adminUrlPath = Mage::getConfig()->getNode('admin/routers/adminhtml/args/frontName');
60
+
61
+ if(Mage::getStoreConfig('admin/url/use_custom_path') === 1) {
62
+ $adminUrlPath = Mage::getStoreConfig('admin/url/custom_path');
63
+ }
64
+
65
+ if (in_array($adminUrlPath, $badPaths)) {
66
+ return 0;
67
+ }
68
+
69
+ return 1;
70
+ }
71
+
72
+
73
+ private function _checkAdminUsernames()
74
+ {
75
+ $badUsernames = array('admin');
76
+
77
+ $admin = Mage::getModel("admin/user");
78
+ $admins = $admin->getCollection()
79
+ ->addFieldToFilter('username', array('in' => $badUsernames));
80
+
81
+ $adminUsers = $admins->load()->toArray();
82
+
83
+ return $adminUsers['totalRecords'];
84
+ }
85
+
86
+ private function _checkAdminPasswords()
87
+ {
88
+ $badPasswords = array(
89
+ '123456789',
90
+ '12345678',
91
+ '1234567',
92
+ '69696969',
93
+ '123123123',
94
+ 'password',
95
+ 'trustno1',
96
+ 'adminadmin',
97
+ 'admin123',
98
+ 'magento',
99
+ 'abc1234',
100
+ 'iloveyou',
101
+ 'football',
102
+ 'baseball',
103
+ 'superman',
104
+ 'letmein'
105
+ );
106
+
107
+ $badUsers = array();
108
+
109
+ $admin = Mage::getModel("admin/user");
110
+ $admins = $admin->getCollection()
111
+ ->addFieldToFilter('is_active', array('eq' => 1));
112
+
113
+ $adminUsers = $admins->load();
114
+
115
+ foreach ($adminUsers as $user) {
116
+ foreach ($badPasswords as $password) {
117
+ if ($admin->authenticate($user->username, $password) == true) {
118
+ $badUsers[] = $user->username;
119
+ }
120
+ }
121
+ }
122
+
123
+ return $badUsers;
124
+ }
125
+
126
+
127
+ private function _checkLocalXmlPublic()
128
+ {
129
+ $url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB) . 'app/etc/local.xml';
130
+
131
+ $client = new Varien_Http_Client();
132
+ $client->setUri($url)
133
+ ->setMethod('GET')
134
+ ->setConfig(
135
+ array(
136
+ 'maxredirects' => 1,
137
+ 'timeout' => 15,
138
+ ));
139
+
140
+ try {
141
+ $response = $client->request();
142
+ $statusCode = $response->getStatus();
143
+ } catch (Exception $e) {
144
+ $statusCode = 0;
145
+ }
146
+
147
+ if ($statusCode === 403) {
148
+ return 1;
149
+ }
150
+
151
+ return 0;
152
+ }
153
+
154
+ }
app/code/community/Ordermonitor/Agent/controllers/AgentController.php CHANGED
@@ -5,7 +5,7 @@
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
- * @copyright Copyright (C) 2014 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_AgentController extends Mage_Core_Controller_Front_Action
@@ -47,6 +47,7 @@ class Ordermonitor_Agent_AgentController extends Mage_Core_Controller_Front_Acti
47
  $getMinMaxPrices = (bool)$request->getParam('maxMinPrices', 0);
48
  $checkStock = (bool)$request->getParam('checkStock', 0);
49
  $getCustomerTotals = (bool)$request->getParam('customerTotals', 0);
 
50
  $stockAlertSkus = json_decode($request->getParam('stockSkus', '[]'));
51
  $stockMinQty = (int)$request->getParam('stockMinQty', 0);
52
  $limit = (int)$request->getParam('limit', 100);
@@ -104,6 +105,11 @@ class Ordermonitor_Agent_AgentController extends Mage_Core_Controller_Front_Acti
104
  $results['info']['runTime'] += $customerTotals['runTime'];
105
  $results['info']['runTimes']['customerTotals'] = $customerTotals['runTime'];
106
  }
 
 
 
 
 
107
 
108
  } else {
109
  $results['error']['code'] = '1';
@@ -139,5 +145,17 @@ class Ordermonitor_Agent_AgentController extends Mage_Core_Controller_Front_Acti
139
  $this->getResponse()->setHeader('Content-type', 'application/json');
140
  $this->getResponse()->setBody($json);
141
  }
 
 
 
 
 
 
 
 
 
 
 
 
142
 
143
  }
5
  * @category Ordermonitor
6
  * @package Ordermonitor_Agent
7
  * @author Digital Operative <codemaster@digitaloperative.com>
8
+ * @copyright Copyright (C) 2015 Digital Operative
9
  * @license http://www.ordermonitor.com/license
10
  */
11
  class Ordermonitor_Agent_AgentController extends Mage_Core_Controller_Front_Action
47
  $getMinMaxPrices = (bool)$request->getParam('maxMinPrices', 0);
48
  $checkStock = (bool)$request->getParam('checkStock', 0);
49
  $getCustomerTotals = (bool)$request->getParam('customerTotals', 0);
50
+ $getCronStatus = (bool)$request->getParam('cronJobs', 1);
51
  $stockAlertSkus = json_decode($request->getParam('stockSkus', '[]'));
52
  $stockMinQty = (int)$request->getParam('stockMinQty', 0);
53
  $limit = (int)$request->getParam('limit', 100);
105
  $results['info']['runTime'] += $customerTotals['runTime'];
106
  $results['info']['runTimes']['customerTotals'] = $customerTotals['runTime'];
107
  }
108
+
109
+ if ($getCronStatus === true) {
110
+ $cron = Mage::getModel('ordermonitor_agent/cron');
111
+ $results['cron'] = $cron->getCronStatus();
112
+ }
113
 
114
  } else {
115
  $results['error']['code'] = '1';
145
  $this->getResponse()->setHeader('Content-type', 'application/json');
146
  $this->getResponse()->setBody($json);
147
  }
148
+
149
+ public function securityAction()
150
+ {
151
+ $om = Mage::getModel('ordermonitor_agent/secure');
152
+ $results = $om->getSecureInfo();
153
+
154
+ $json = json_encode($results);
155
+
156
+ $this->getResponse()->setHeader('Content-type', 'application/json');
157
+ $this->getResponse()->setBody($json);
158
+
159
+ }
160
 
161
  }
app/code/community/Ordermonitor/Agent/etc/config.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Ordermonitor
7
  * @package Ordermonitor_Agent
8
  * @author Digital Operative <codemaster@digitaloperative.com>
9
- * @copyright Copyright (C) 2014 Digital Operative
10
  * @license http://www.ordermonitor.com/license
11
  */
12
  -->
@@ -14,7 +14,7 @@
14
  <modules>
15
  <Ordermonitor_Agent>
16
  <!-- @Om - If version changes, update the default value for <om_version> at end of file -->
17
- <version>1.1.9</version>
18
  </Ordermonitor_Agent>
19
  </modules>
20
  <frontend>
@@ -69,7 +69,7 @@
69
  <default>
70
  <ordermonitor>
71
  <general_configuration>
72
- <om_version>1.1.9</om_version>
73
  <om_username/>
74
  <om_api_key/>
75
  </general_configuration>
6
  * @category Ordermonitor
7
  * @package Ordermonitor_Agent
8
  * @author Digital Operative <codemaster@digitaloperative.com>
9
+ * @copyright Copyright (C) 2015 Digital Operative
10
  * @license http://www.ordermonitor.com/license
11
  */
12
  -->
14
  <modules>
15
  <Ordermonitor_Agent>
16
  <!-- @Om - If version changes, update the default value for <om_version> at end of file -->
17
+ <version>1.2.0</version>
18
  </Ordermonitor_Agent>
19
  </modules>
20
  <frontend>
69
  <default>
70
  <ordermonitor>
71
  <general_configuration>
72
+ <om_version>1.2.0</om_version>
73
  <om_username/>
74
  <om_api_key/>
75
  </general_configuration>
app/code/community/Ordermonitor/Agent/etc/system.xml CHANGED
@@ -6,7 +6,7 @@
6
  * @category Ordermonitor
7
  * @package Ordermonitor_Agent
8
  * @author Digital Operative <codemaster@digitaloperative.com>
9
- * @copyright Copyright (C) 2014 Digital Operative
10
  * @license http://www.ordermonitor.com/license
11
  */
12
  -->
@@ -36,29 +36,29 @@
36
  <show_in_store>1</show_in_store>
37
  <fields>
38
  <om_username translate="label">
39
- <label>Username</label>
40
  <frontend_type>text</frontend_type>
41
  <sort_order>1</sort_order>
42
  <show_in_default>1</show_in_default>
43
- <show_in_website>0</show_in_website>
44
  <show_in_store>0</show_in_store>
45
  <comment>
46
  <![CDATA[
47
- Unique Key for displaying order totals and other sensative data.
48
  ]]>
49
  </comment>
50
  </om_username>
51
 
52
  <om_key translate="label">
53
- <label>API Key</label>
54
  <frontend_type>password</frontend_type>
55
  <sort_order>2</sort_order>
56
  <show_in_default>1</show_in_default>
57
- <show_in_website>0</show_in_website>
58
  <show_in_store>0</show_in_store>
59
  <comment>
60
  <![CDATA[
61
- Order Monitor API Key - get this from your Order Monitor Account.
62
  ]]>
63
  </comment>
64
  </om_key>
@@ -73,7 +73,7 @@
73
  <show_in_store>0</show_in_store>
74
  <comment>
75
  <![CDATA[
76
- Output additional information for debugging
77
  ]]>
78
  </comment>
79
  </om_debug>
6
  * @category Ordermonitor
7
  * @package Ordermonitor_Agent
8
  * @author Digital Operative <codemaster@digitaloperative.com>
9
+ * @copyright Copyright (C) 2015 Digital Operative
10
  * @license http://www.ordermonitor.com/license
11
  */
12
  -->
36
  <show_in_store>1</show_in_store>
37
  <fields>
38
  <om_username translate="label">
39
+ <label>Account Name</label>
40
  <frontend_type>text</frontend_type>
41
  <sort_order>1</sort_order>
42
  <show_in_default>1</show_in_default>
43
+ <show_in_website>1</show_in_website>
44
  <show_in_store>0</show_in_store>
45
  <comment>
46
  <![CDATA[
47
+ Order Monitor Account Name - created during sign up, see account page.
48
  ]]>
49
  </comment>
50
  </om_username>
51
 
52
  <om_key translate="label">
53
+ <label>Agent Key</label>
54
  <frontend_type>password</frontend_type>
55
  <sort_order>2</sort_order>
56
  <show_in_default>1</show_in_default>
57
+ <show_in_website>1</show_in_website>
58
  <show_in_store>0</show_in_store>
59
  <comment>
60
  <![CDATA[
61
+ Order Monitor Agent Key - get this from your account page.
62
  ]]>
63
  </comment>
64
  </om_key>
73
  <show_in_store>0</show_in_store>
74
  <comment>
75
  <![CDATA[
76
+ Output additional information for debugging.
77
  ]]>
78
  </comment>
79
  </om_debug>
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Ordermonitor_Agent</name>
4
- <version>1.1.9</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.ordermonitor.com/license">Commercial</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Monitor what matters; orders. Get notifications if something goes awry. Trends and forecasting give you insight into how your store is performing.</summary>
10
  <description>The Order Monitor Agent collects and aggregates data for the Order Monitor service, enabling you to setup alerts based on order volume, aov, discounts and much more. Compare your metrics to yesterday and your average to see if your trending up or down. Forecasting allows to predict the sales for the day.</description>
11
- <notes>Initial release, including setup methods, data aggregators, cart checks and data by sku.</notes>
12
  <authors><author><name>Adam Levenson</name><user>adamdo</user><email>adam@digitaloperative.com</email></author></authors>
13
- <date>2014-07-08</date>
14
- <time>21:53:25</time>
15
- <contents><target name="mageetc"><dir name="modules"><file name="Ordermonitor_Agent.xml" hash="d801d81de66117f06637c0750e2a5931"/></dir></target><target name="magecommunity"><dir name="Ordermonitor"><dir name="Agent"><file name="Exception.php" hash="6871219a0675e29c9e39846b3cc56d3c"/><dir name="Helper"><file name="Data.php" hash="9672c179f037cfe56b9684de25b0c986"/></dir><dir name="Model"><file name="Inventory.php" hash="1498ea49a905942d8920342e63e450ff"/><file name="Monitor.php" hash="18585c0cec820f71a86b59d8b37668dc"/></dir><dir name="controllers"><file name="AgentController.php" hash="e7b82d7c4dc37bcf8d6e25944152c5e2"/></dir><dir name="etc"><file name="config.xml" hash="a8983c624280f54d2b2098ae5397599c"/><file name="system.xml" hash="e802342be7e839f09a354eacce1de01d"/></dir><file name=".DS_Store" hash="816504a148fbbe790644c6c7427a6f81"/></dir><file name=".DS_Store" hash="60238f239932c73cc1be075fbd3e96ef"/></dir></target></contents>
16
  <compatible/>
17
- <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.5.0.0</min><max>1.9.0.1</max></package></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Ordermonitor_Agent</name>
4
+ <version>1.2.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.ordermonitor.com/license">Commercial</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Monitor what matters; orders. Get notifications if something goes awry. Trends and forecasting give you insight into how your store is performing.</summary>
10
  <description>The Order Monitor Agent collects and aggregates data for the Order Monitor service, enabling you to setup alerts based on order volume, aov, discounts and much more. Compare your metrics to yesterday and your average to see if your trending up or down. Forecasting allows to predict the sales for the day.</description>
11
+ <notes>Updated to get status of cron jobs. Other minor updates and tweaks.</notes>
12
  <authors><author><name>Adam Levenson</name><user>adamdo</user><email>adam@digitaloperative.com</email></author></authors>
13
+ <date>2016-02-09</date>
14
+ <time>21:05:21</time>
15
+ <contents><target name="mageetc"><dir name="modules"><file name="Ordermonitor_Agent.xml" hash="d801d81de66117f06637c0750e2a5931"/></dir></target><target name="magecommunity"><dir name="Ordermonitor"><dir name="Agent"><file name="Exception.php" hash="43ac0dea595b3d2134a76b55e70b1d5f"/><dir name="Helper"><file name="Data.php" hash="9275cefdbaeca0062868e257c391f7e7"/></dir><dir name="Model"><file name="Cron.php" hash="f5ed277ab930a44951ac3b78487d2317"/><file name="Inventory.php" hash="937d22c671add6ae30726e0bf38c9d54"/><file name="Monitor.php" hash="6acf1b9e5336aaeeab4cadcf6e322e16"/><file name="Secure.php" hash="eb3f5601eecf3585f58d8fff4414d680"/></dir><dir name="controllers"><file name="AgentController.php" hash="1ffcdba434dcac43e1309576a6fbbae4"/></dir><dir name="etc"><file name="config.xml" hash="31cb814911264eaa2513c85f18ef9b36"/><file name="system.xml" hash="544cf6e710b8d0cc50cd04bbf1faa202"/></dir><file name=".DS_Store" hash="816504a148fbbe790644c6c7427a6f81"/></dir><file name=".DS_Store" hash="60238f239932c73cc1be075fbd3e96ef"/></dir></target></contents>
16
  <compatible/>
17
+ <dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.5.0.0</min><max>1.9.2.3</max></package></required></dependencies>
18
  </package>