ActionLogger - Version 1.0.0

Version Notes

First stable version.

Download this release

Release Info

Developer Branko Ajzele
Extension ActionLogger
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (20) hide show
  1. app/code/community/ActiveCodeline/ActionLogger/Block/Adminhtml/List/Admin/Grid.php +104 -0
  2. app/code/community/ActiveCodeline/ActionLogger/Block/Adminhtml/List/Frontend/Grid.php +102 -0
  3. app/code/community/ActiveCodeline/ActionLogger/Block/Adminhtml/List/Renderer/Param.php +40 -0
  4. app/code/community/ActiveCodeline/ActionLogger/Helper/Data.php +68 -0
  5. app/code/community/ActiveCodeline/ActionLogger/Model/Admin.php +17 -0
  6. app/code/community/ActiveCodeline/ActionLogger/Model/Frontend.php +17 -0
  7. app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Admin.php +17 -0
  8. app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Admin/Collection.php +17 -0
  9. app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Frontend.php +17 -0
  10. app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Frontend/Collection.php +17 -0
  11. app/code/community/ActiveCodeline/ActionLogger/Model/Observer.php +84 -0
  12. app/code/community/ActiveCodeline/ActionLogger/controllers/Adminhtml/ActionLogger/Admin/GridController.php +24 -0
  13. app/code/community/ActiveCodeline/ActionLogger/controllers/Adminhtml/ActionLogger/Frontend/GridController.php +24 -0
  14. app/code/community/ActiveCodeline/ActionLogger/etc/adminhtml.xml +33 -0
  15. app/code/community/ActiveCodeline/ActionLogger/etc/config.xml +123 -0
  16. app/code/community/ActiveCodeline/ActionLogger/etc/system.xml +60 -0
  17. app/code/community/ActiveCodeline/ActionLogger/sql/activecodeline_actionlogger_setup/mysql4-install-1.0.0.php +42 -0
  18. app/etc/modules/ActiveCodeline_ActionLogger.xml +18 -0
  19. app/locale/en_US/ActiveCodeline_ActionLogger.csv +16 -0
  20. package.xml +18 -0
app/code/community/ActiveCodeline/ActionLogger/Block/Adminhtml/List/Admin/Grid.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Adminhtml_Admin_GridController
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Block_Adminhtml_List_Admin_Grid extends Mage_Adminhtml_Block_Widget_Grid
12
+ {
13
+ protected function _construct()
14
+ {
15
+ parent::_construct();
16
+
17
+ $this->setId('activecodeline_actionlogger_list_admin');
18
+
19
+ $this->setUseAjax(true);
20
+ $this->setSaveParametersInSession(true);
21
+ }
22
+
23
+ protected function _prepareCollection()
24
+ {
25
+ $collection = Mage::getResourceModel('activecodeline_actionlogger/admin_collection');
26
+
27
+ $this->setCollection($collection);
28
+ return parent::_prepareCollection();
29
+ }
30
+
31
+ protected function _prepareColumns()
32
+ {
33
+ $this->addColumn('id', array(
34
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Entry#'),
35
+ 'width' => '80px',
36
+ 'type' => 'text',
37
+ 'index' => 'id'
38
+ ));
39
+
40
+ $this->addColumn('created', array(
41
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Created'),
42
+ 'width' => '80px',
43
+ 'type' => 'text',
44
+ 'index' => 'created'
45
+ ));
46
+
47
+ $this->addColumn('action_name', array(
48
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Action name'),
49
+ 'width' => '80px',
50
+ 'type' => 'text',
51
+ 'index' => 'action_name'
52
+ ));
53
+
54
+ $this->addColumn('controller_name', array(
55
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Controller name'),
56
+ 'width' => '80px',
57
+ 'type' => 'text',
58
+ 'index' => 'controller_name'
59
+ ));
60
+
61
+ $this->addColumn('client_ip', array(
62
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Client IP'),
63
+ 'width' => '80px',
64
+ 'type' => 'text',
65
+ 'index' => 'client_ip'
66
+ ));
67
+
68
+ $this->addColumn('controller_module', array(
69
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Controller module'),
70
+ 'width' => '80px',
71
+ 'type' => 'text',
72
+ 'index' => 'controller_module'
73
+ ));
74
+
75
+ $this->addColumn('user_id', array(
76
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('User#'),
77
+ 'width' => '80px',
78
+ 'type' => 'text',
79
+ 'index' => 'user_id'
80
+ ));
81
+
82
+ if (Mage::helper('activecodeline_actionlogger')->_canViewLoggedRequestParams()) {
83
+ $this->addColumn('params', array(
84
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Params#'),
85
+ 'width' => '80px',
86
+ 'type' => 'text',
87
+ 'index' => 'params',
88
+ 'renderer' => 'activecodeline_actionlogger/adminhtml_list_renderer_param',
89
+ ));
90
+ }
91
+
92
+ return parent::_prepareColumns();
93
+ }
94
+
95
+ /**
96
+ * Return Grid URL for AJAX query
97
+ *
98
+ * @return string
99
+ */
100
+ public function getGridUrl()
101
+ {
102
+ return $this->getUrl('*/actionlogger_admin_grid/grid', array('_current'=>true));
103
+ }
104
+ }
app/code/community/ActiveCodeline/ActionLogger/Block/Adminhtml/List/Frontend/Grid.php ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Adminhtml_Admin_GridController
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Block_Adminhtml_List_Frontend_Grid extends Mage_Adminhtml_Block_Widget_Grid
12
+ {
13
+ protected function _construct()
14
+ {
15
+ parent::_construct();
16
+
17
+ $this->setId('activecodeline_actionlogger_list_frontend');
18
+ $this->setUseAjax(true);
19
+ $this->setSaveParametersInSession(true);
20
+ }
21
+
22
+ protected function _prepareCollection()
23
+ {
24
+ $collection = Mage::getResourceModel('activecodeline_actionlogger/frontend_collection');
25
+ $this->setCollection($collection);
26
+ return parent::_prepareCollection();
27
+ }
28
+
29
+ protected function _prepareColumns()
30
+ {
31
+ $this->addColumn('id', array(
32
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Entry#'),
33
+ 'width' => '80px',
34
+ 'type' => 'text',
35
+ 'index' => 'id'
36
+ ));
37
+
38
+ $this->addColumn('created', array(
39
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Created'),
40
+ 'width' => '80px',
41
+ 'type' => 'text',
42
+ 'index' => 'created'
43
+ ));
44
+
45
+ $this->addColumn('action_name', array(
46
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Action name'),
47
+ 'width' => '80px',
48
+ 'type' => 'text',
49
+ 'index' => 'action_name'
50
+ ));
51
+
52
+ $this->addColumn('controller_name', array(
53
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Controller name'),
54
+ 'width' => '80px',
55
+ 'type' => 'text',
56
+ 'index' => 'controller_name'
57
+ ));
58
+
59
+ $this->addColumn('client_ip', array(
60
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Client IP'),
61
+ 'width' => '80px',
62
+ 'type' => 'text',
63
+ 'index' => 'client_ip'
64
+ ));
65
+
66
+ $this->addColumn('controller_module', array(
67
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Controller module'),
68
+ 'width' => '80px',
69
+ 'type' => 'text',
70
+ 'index' => 'controller_module'
71
+ ));
72
+
73
+ $this->addColumn('customer_id', array(
74
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Customer#'),
75
+ 'width' => '80px',
76
+ 'type' => 'text',
77
+ 'index' => 'customer_id'
78
+ ));
79
+
80
+ if (Mage::helper('activecodeline_actionlogger')->_canViewLoggedRequestParams()) {
81
+ $this->addColumn('params', array(
82
+ 'header'=> Mage::helper('activecodeline_actionlogger')->__('Params#'),
83
+ 'width' => '80px',
84
+ 'type' => 'text',
85
+ 'index' => 'params',
86
+ 'renderer' => 'activecodeline_actionlogger/adminhtml_list_renderer_param',
87
+ ));
88
+ }
89
+
90
+ return parent::_prepareColumns();
91
+ }
92
+
93
+ /**
94
+ * Return Grid URL for AJAX query
95
+ *
96
+ * @return string
97
+ */
98
+ public function getGridUrl()
99
+ {
100
+ return $this->getUrl('*/actionlogger_admin_grid/grid', array('_current'=>true));
101
+ }
102
+ }
app/code/community/ActiveCodeline/ActionLogger/Block/Adminhtml/List/Renderer/Param.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Block_Adminhtml_List_Renderer_Param
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Block_Adminhtml_List_Renderer_Param extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
12
+ {
13
+ public function render(Varien_Object $row)
14
+ {
15
+ $params = array();
16
+ $p = '';
17
+
18
+ if ($_params = $row->getParams()) {
19
+ $params = unserialize(Mage::helper('core')->decrypt($_params));
20
+ }
21
+
22
+ $total = count($params); $i = 0;
23
+
24
+ foreach ($params as $k => $v) {
25
+ $i++;
26
+ //Simple array to string, no fancy sub-array output
27
+ $p .= $k.': '.((is_array($v) ? implode(' ', $v) : $v)).(($i != $total) ? ', ' : '');
28
+ }
29
+
30
+ $params = implode(', ', $params);
31
+
32
+ if ($p) {
33
+ return '
34
+ <a href="#" onclick="alert(\''.$p.'\');">'.Mage::helper('activecodeline_actionlogger')->__('Check values').'</a>
35
+ ';
36
+ } else {
37
+ return Mage::helper('activecodeline_actionlogger')->__('N/A');
38
+ }
39
+ }
40
+ }
app/code/community/ActiveCodeline/ActionLogger/Helper/Data.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Helper_Data
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Helper_Data extends Mage_Core_Helper_Abstract
12
+ {
13
+ public function _canLogRequestParams()
14
+ {
15
+ $storeConfig = Mage::getStoreConfig('dev');
16
+ $logRequestParams = false;
17
+
18
+ if (isset($storeConfig['activecodeline_actionlogger']['log_request_params'])) {
19
+ if ($storeConfig['activecodeline_actionlogger']['log_request_params'] == "1") {
20
+ $logRequestParams = true;
21
+ }
22
+ }
23
+
24
+ return $logRequestParams;
25
+ }
26
+
27
+ public function _canLogFrontendActions()
28
+ {
29
+ $storeConfig = Mage::getStoreConfig('dev');
30
+ $logFrontendActions = false;
31
+
32
+ if (isset($storeConfig['activecodeline_actionlogger']['log_frontend_actions'])) {
33
+ if ($storeConfig['activecodeline_actionlogger']['log_frontend_actions'] == "1") {
34
+ $logFrontendActions = true;
35
+ }
36
+ }
37
+
38
+ return $logFrontendActions;
39
+ }
40
+
41
+ public function _canLogAdminActions()
42
+ {
43
+ $storeConfig = Mage::getStoreConfig('dev');
44
+ $logAdminActions = false;
45
+
46
+ if (isset($storeConfig['activecodeline_actionlogger']['log_admin_actions'])) {
47
+ if ($storeConfig['activecodeline_actionlogger']['log_admin_actions'] == "1") {
48
+ $logAdminActions = true;
49
+ }
50
+ }
51
+
52
+ return $logAdminActions;
53
+ }
54
+
55
+ public function _canViewLoggedRequestParams()
56
+ {
57
+ $storeConfig = Mage::getStoreConfig('dev');
58
+ $viewLoggedRequestParams = false;
59
+
60
+ if (isset($storeConfig['activecodeline_actionlogger']['view_logged_request_params'])) {
61
+ if ($storeConfig['activecodeline_actionlogger']['view_logged_request_params'] == "1") {
62
+ $viewLoggedRequestParams = true;
63
+ }
64
+ }
65
+
66
+ return $viewLoggedRequestParams;
67
+ }
68
+ }
app/code/community/ActiveCodeline/ActionLogger/Model/Admin.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Model_Admin
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Model_Admin extends Mage_Core_Model_Abstract
12
+ {
13
+ protected function _construct()
14
+ {
15
+ $this->_init('activecodeline_actionlogger/admin');
16
+ }
17
+ }
app/code/community/ActiveCodeline/ActionLogger/Model/Frontend.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Model_Frontend
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Model_Frontend extends Mage_Core_Model_Abstract
12
+ {
13
+ protected function _construct()
14
+ {
15
+ $this->_init('activecodeline_actionlogger/frontend');
16
+ }
17
+ }
app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Admin.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Model_Mysql4_Admin
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_Admin2
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Model_Mysql4_Admin extends Mage_Core_Model_Mysql4_Abstract
12
+ {
13
+ protected function _construct()
14
+ {
15
+ $this->_init('activecodeline_actionlogger/admin', 'id');
16
+ }
17
+ }
app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Admin/Collection.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Model_Model_Mysql4_Admin_Collection
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Model_Mysql4_Admin_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
12
+ {
13
+ protected function _construct()
14
+ {
15
+ $this->_init('activecodeline_actionlogger/admin');
16
+ }
17
+ }
app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Frontend.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Model_Mysql4_Frontend
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_Admin2
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Model_Mysql4_Frontend extends Mage_Core_Model_Mysql4_Abstract
12
+ {
13
+ protected function _construct()
14
+ {
15
+ $this->_init('activecodeline_actionlogger/frontend', 'id');
16
+ }
17
+ }
app/code/community/ActiveCodeline/ActionLogger/Model/Mysql4/Frontend/Collection.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Model_Model_Mysql4_Frontend_Collection
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_Admin2
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Model_Mysql4_Frontend_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
12
+ {
13
+ protected function _construct()
14
+ {
15
+ $this->_init('activecodeline_actionlogger/frontend');
16
+ }
17
+ }
app/code/community/ActiveCodeline/ActionLogger/Model/Observer.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Model_Observer
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Model_Observer
12
+ {
13
+
14
+
15
+ public function hookToAdminhtmlControllerActionPredispatch($observer = null)
16
+ {
17
+ if (!Mage::helper('activecodeline_actionlogger')->_canLogAdminActions()) {
18
+ return;
19
+ }
20
+
21
+ $log = Mage::getModel('activecodeline_actionlogger/admin');
22
+
23
+ if ('actionlogger_admin_grid' != Mage::app()->getRequest()->getControllerName()
24
+ && 'actionlogger_frontend_grid' != Mage::app()->getRequest()->getControllerName())
25
+ {
26
+ $log->setActionName(Mage::app()->getRequest()->getActionName());
27
+ $log->setControllerName(Mage::app()->getRequest()->getControllerName());
28
+
29
+ if (Mage::helper('activecodeline_actionlogger')->_canLogRequestParams()) {
30
+ if($params = Mage::app()->getRequest()->getParams()) {
31
+ $log->setParams(Mage::helper('core')->encrypt(serialize($params)));
32
+ }
33
+ }
34
+
35
+ $log->setClientIp(Mage::app()->getRequest()->getClientIp());
36
+ $log->setControllerModule(Mage::app()->getRequest()->getControllerModule());
37
+
38
+ if ($user = Mage::getSingleton('admin/session')->getUser()) {
39
+ $log->setUserId($user->getId());
40
+ } else {
41
+ $log->setUserId(0);
42
+ }
43
+
44
+ try {
45
+ $log->save();
46
+ } catch (Exception $e) {
47
+ Mage::log('file: '.__FILE__.', line: '.__LINE__, 'msg: '.$e->getMessage());
48
+ }
49
+ }
50
+ }
51
+
52
+ public function hookToFrontendControllerActionPredispatch($observer = null)
53
+ {
54
+ if (!Mage::helper('activecodeline_actionlogger')->_canLogFrontendActions()) {
55
+ return;
56
+ }
57
+
58
+ $log = Mage::getModel('activecodeline_actionlogger/frontend');
59
+
60
+ $log->setActionName(Mage::app()->getRequest()->getActionName());
61
+ $log->setControllerName(Mage::app()->getRequest()->getControllerName());
62
+
63
+ if (Mage::helper('activecodeline_actionlogger')->_canLogRequestParams()) {
64
+ if($params = Mage::app()->getRequest()->getParams()) {
65
+ $log->setParams(Mage::helper('core')->encrypt(serialize($params)));
66
+ }
67
+ }
68
+
69
+ $log->setClientIp(Mage::app()->getRequest()->getClientIp());
70
+ $log->setControllerModule(Mage::app()->getRequest()->getControllerModule());
71
+
72
+ if ($customer = Mage::getSingleton('customer/session')->getCustomer()) {
73
+ $log->setCustomerId($customer->getId());
74
+ } else {
75
+ $log->setCustomerId(0);
76
+ }
77
+
78
+ try {
79
+ $log->save();
80
+ } catch (Exception $e) {
81
+ Mage::log('file: '.__FILE__.', line: '.__LINE__, 'msg: '.$e->getMessage());
82
+ }
83
+ }
84
+ }
app/code/community/ActiveCodeline/ActionLogger/controllers/Adminhtml/ActionLogger/Admin/GridController.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Adminhtml_Admin_GridController
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Adminhtml_ActionLogger_Admin_GridController extends Mage_Adminhtml_Controller_Action
12
+ {
13
+ public function indexAction()
14
+ {
15
+ $this->loadLayout();
16
+ $this->_addContent($this->getLayout()->createBlock('activecodeline_actionlogger/adminhtml_list_admin_grid'));
17
+ $this->renderLayout();
18
+ }
19
+
20
+ public function gridAction()
21
+ {
22
+ $this->getResponse()->setBody($this->getLayout()->createBlock('activecodeline_actionlogger/adminhtml_list_admin_grid')->toHtml());
23
+ }
24
+ }
app/code/community/ActiveCodeline/ActionLogger/controllers/Adminhtml/ActionLogger/Frontend/GridController.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ActiveCodeline_ActionLogger_Adminhtml_Frontend_GridController
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+ class ActiveCodeline_ActionLogger_Adminhtml_ActionLogger_Frontend_GridController extends Mage_Adminhtml_Controller_Action
12
+ {
13
+ public function indexAction()
14
+ {
15
+ $this->loadLayout();
16
+ $this->_addContent($this->getLayout()->createBlock('activecodeline_actionlogger/adminhtml_list_frontend_grid'));
17
+ $this->renderLayout();
18
+ }
19
+
20
+ public function gridAction()
21
+ {
22
+ $this->getResponse()->setBody($this->getLayout()->createBlock('activecodeline_actionlogger/adminhtml_list_frontend_grid')->toHtml());
23
+ }
24
+ }
app/code/community/ActiveCodeline/ActionLogger/etc/adminhtml.xml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category ActiveCodeline
5
+ * @package ActiveCodeline_ActionLogger
6
+ * @author Branko Ajzele (http://activecodeline.net)
7
+ * @copyright Copyright (c) Branko Ajzele
8
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
9
+ */
10
+ -->
11
+ <config>
12
+ <menu>
13
+ <system>
14
+ <children>
15
+ <activecodeline_actionlogger translate="title" module="activecodeline_actionlogger">
16
+ <title>Action Logger</title>
17
+ <children>
18
+ <admin_logs translate="title" module="activecodeline_actionlogger">
19
+ <title>Check logs for recorded Admin actions</title>
20
+ <sort_order>5</sort_order>
21
+ <action>adminhtml/actionlogger_admin_grid/index</action>
22
+ </admin_logs>
23
+ <frontend_logs translate="title" module="activecodeline_actionlogger">
24
+ <title>Check logs for recorded Frontend actions</title>
25
+ <sort_order>5</sort_order>
26
+ <action>adminhtml/actionlogger_frontend_grid/index</action>
27
+ </frontend_logs>
28
+ </children>
29
+ </activecodeline_actionlogger>
30
+ </children>
31
+ </system>
32
+ </menu>
33
+ </config>
app/code/community/ActiveCodeline/ActionLogger/etc/config.xml ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category ActiveCodeline
5
+ * @package ActiveCodeline_ActionLogger
6
+ * @author Branko Ajzele (http://activecodeline.net)
7
+ * @copyright Copyright (c) Branko Ajzele
8
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
9
+ */
10
+ -->
11
+ <config>
12
+ <modules>
13
+ <ActiveCodeline_ActionLogger>
14
+ <version>1.0.0</version>
15
+ </ActiveCodeline_ActionLogger>
16
+ </modules>
17
+
18
+ <global>
19
+ <models>
20
+ <activecodeline_actionlogger>
21
+ <class>ActiveCodeline_ActionLogger_Model</class>
22
+ <resourceModel>activecodeline_actionlogger_mysql4</resourceModel>
23
+ </activecodeline_actionlogger>
24
+
25
+ <activecodeline_actionlogger_mysql4>
26
+ <class>ActiveCodeline_ActionLogger_Model_Mysql4</class>
27
+ <entities>
28
+ <frontend>
29
+ <table>activecodeline_actionlogger_frontend</table>
30
+ </frontend>
31
+ <admin>
32
+ <table>activecodeline_actionlogger_admin</table>
33
+ </admin>
34
+ </entities>
35
+ </activecodeline_actionlogger_mysql4>
36
+ </models>
37
+ <resources>
38
+ <activecodeline_actionlogger_setup>
39
+ <setup>
40
+ <module>ActiveCodeline_ActionLogger</module>
41
+ </setup>
42
+ </activecodeline_actionlogger_setup>
43
+ </resources>
44
+ <blocks>
45
+ <activecodeline_actionlogger><class>ActiveCodeline_ActionLogger_Block</class></activecodeline_actionlogger>
46
+ </blocks>
47
+ <helpers>
48
+ <activecodeline_actionlogger>
49
+ <class>ActiveCodeline_ActionLogger_Helper</class>
50
+ </activecodeline_actionlogger>
51
+ </helpers>
52
+ </global>
53
+
54
+ <admin>
55
+ <routers>
56
+ <adminhtml>
57
+ <args>
58
+ <modules>
59
+ <activecodeline_actionlogger before="Mage_Adminhtml">ActiveCodeline_ActionLogger_Adminhtml</activecodeline_actionlogger>
60
+ </modules>
61
+ </args>
62
+ </adminhtml>
63
+ </routers>
64
+ </admin>
65
+
66
+ <adminhtml>
67
+ <events>
68
+ <controller_action_predispatch>
69
+ <observers>
70
+ <activecodeline_actionlogger_controller_action_predispatch>
71
+ <class>activecodeline_actionlogger/observer</class>
72
+ <method>hookToAdminhtmlControllerActionPredispatch</method>
73
+ </activecodeline_actionlogger_controller_action_predispatch>
74
+ </observers>
75
+ </controller_action_predispatch>
76
+ </events>
77
+ <acl>
78
+ <resources>
79
+ <admin>
80
+ <children>
81
+ <system>
82
+ <children>
83
+ <activecodeline_actionlogger>
84
+ <title>Action Logger</title>
85
+ <children>
86
+ <admin_logs>
87
+ <title>Check logs for recorded Admin actions</title>
88
+ </admin_logs>
89
+ <frontend_logs>
90
+ <title>Check logs for recorded Frontend actions</title>
91
+ </frontend_logs>
92
+ </children>
93
+ </activecodeline_actionlogger>
94
+ </children>
95
+ </system>
96
+ </children>
97
+ </admin>
98
+ </resources>
99
+ </acl>
100
+ <translate>
101
+ <modules>
102
+ <ActiveCodeline_ActionLogger>
103
+ <files>
104
+ <default>ActiveCodeline_ActionLogger.csv</default>
105
+ </files>
106
+ </ActiveCodeline_ActionLogger>
107
+ </modules>
108
+ </translate>
109
+ </adminhtml>
110
+
111
+ <frontend>
112
+ <events>
113
+ <controller_action_predispatch>
114
+ <observers>
115
+ <activecodeline_actionlogger_controller_action_predispatch>
116
+ <class>activecodeline_actionlogger/observer</class>
117
+ <method>hookToFrontendControllerActionPredispatch</method>
118
+ </activecodeline_actionlogger_controller_action_predispatch>
119
+ </observers>
120
+ </controller_action_predispatch>
121
+ </events>
122
+ </frontend>
123
+ </config>
app/code/community/ActiveCodeline/ActionLogger/etc/system.xml ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category ActiveCodeline
5
+ * @package ActiveCodeline_ActionLogger
6
+ * @author Branko Ajzele (http://activecodeline.net)
7
+ * @copyright Copyright (c) Branko Ajzele
8
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
9
+ */
10
+ -->
11
+ <config>
12
+ <sections>
13
+ <dev>
14
+ <groups>
15
+ <activecodeline_actionlogger translate="label">
16
+ <label>ActionLogger</label>
17
+ <frontend_type>text</frontend_type>
18
+ <sort_order>40</sort_order>
19
+ <show_in_default>1</show_in_default>
20
+ <show_in_website>1</show_in_website>
21
+ <show_in_store>1</show_in_store>
22
+ <fields>
23
+ <log_frontend_actions translate="label">
24
+ <label>Log frontend actions</label>
25
+ <frontend_type>select</frontend_type>
26
+ <source_model>adminhtml/system_config_source_yesno</source_model>
27
+ <sort_order>1</sort_order>
28
+ <show_in_default>1</show_in_default>
29
+ <comment>Logs the frontend related actions, actions triggered by controller_action_predispatch event on frontend area.</comment>
30
+ </log_frontend_actions>
31
+ <log_admin_actions translate="label">
32
+ <label>Log admin actions</label>
33
+ <frontend_type>select</frontend_type>
34
+ <source_model>adminhtml/system_config_source_yesno</source_model>
35
+ <sort_order>2</sort_order>
36
+ <show_in_default>1</show_in_default>
37
+ <comment>Logs the admin related actions, actions triggered by controller_action_predispatch event on admin area.</comment>
38
+ </log_admin_actions>
39
+ <log_request_params translate="label">
40
+ <label>Log request params</label>
41
+ <frontend_type>select</frontend_type>
42
+ <source_model>adminhtml/system_config_source_yesno</source_model>
43
+ <sort_order>3</sort_order>
44
+ <show_in_default>1</show_in_default>
45
+ <comment>Logs the full request parameters. Please note that this option should be used only in development environment. Do not set this option to Yes in production site. For example, if you select Yes, you will be able to see usernames, passwords, etc. shown in the listing grid. This is to be used just for debugging/testing/development.</comment>
46
+ </log_request_params>
47
+ <view_logged_request_params translate="label">
48
+ <label>View logged request params</label>
49
+ <frontend_type>select</frontend_type>
50
+ <source_model>adminhtml/system_config_source_yesno</source_model>
51
+ <sort_order>4</sort_order>
52
+ <show_in_default>1</show_in_default>
53
+ <comment>Show parameters column in the list grid. Note, parameters are stored encrypted in database, and are decrypted once page is to be served.</comment>
54
+ </view_logged_request_params>
55
+ </fields>
56
+ </activecodeline_actionlogger>
57
+ </groups>
58
+ </dev>
59
+ </sections>
60
+ </config>
app/code/community/ActiveCodeline/ActionLogger/sql/activecodeline_actionlogger_setup/mysql4-install-1.0.0.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * mysql4-install-1.0.0
4
+ *
5
+ * @category ActiveCodeline
6
+ * @package ActiveCodeline_ActionLogger
7
+ * @author Branko Ajzele (http://activecodeline.net)
8
+ * @copyright Copyright (c) Branko Ajzele
9
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
10
+ */
11
+
12
+ $this->startSetup();
13
+
14
+ $this->run("
15
+ CREATE TABLE {$this->getTable('activecodeline_actionlogger_frontend')} (
16
+ `id` INT(11) NOT NULL AUTO_INCREMENT ,
17
+ `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
18
+ `action_name` VARCHAR(255),
19
+ `controller_name` VARCHAR(255),
20
+ `params` TEXT NULL,
21
+ `client_ip` VARCHAR(255),
22
+ `controller_module` VARCHAR(255),
23
+ `customer_id` INT(11) NOT NULL ,
24
+ PRIMARY KEY (`id`)
25
+ ) ENGINE = MYISAM ;
26
+ ");
27
+
28
+ $this->run("
29
+ CREATE TABLE {$this->getTable('activecodeline_actionlogger_admin')} (
30
+ `id` INT(11) NOT NULL AUTO_INCREMENT ,
31
+ `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
32
+ `action_name` VARCHAR(255),
33
+ `controller_name` VARCHAR(255),
34
+ `params` TEXT NULL,
35
+ `client_ip` VARCHAR(255),
36
+ `controller_module` VARCHAR(255),
37
+ `user_id` INT(11) NOT NULL ,
38
+ PRIMARY KEY (`id`)
39
+ ) ENGINE = MYISAM ;
40
+ ");
41
+
42
+ $this->endSetup();
app/etc/modules/ActiveCodeline_ActionLogger.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category ActiveCodeline
5
+ * @package ActiveCodeline_ActionLogger
6
+ * @author Branko Ajzele (http://activecodeline.net)
7
+ * @copyright Copyright (c) Branko Ajzele
8
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
9
+ */
10
+ -->
11
+ <config>
12
+ <modules>
13
+ <ActiveCodeline_ActionLogger>
14
+ <active>true</active>
15
+ <codePool>community</codePool>
16
+ </ActiveCodeline_ActionLogger>
17
+ </modules>
18
+ </config>
app/locale/en_US/ActiveCodeline_ActionLogger.csv ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "Entry#", "Entry#"
2
+ "Created", "Created"
3
+ "Action name", "Action name"
4
+ "Controller name", "Controller name"
5
+ "Client IP", "Client IP"
6
+ "Controller module", "Controller module"
7
+ "Customer#", "Customer#"
8
+ "Action Logger", "Action Logger"
9
+ "Check logs for recorded Admin actions", "Check logs for recorded Admin actions"
10
+ "Check logs for recorded Frontend actions", "Check logs for recorded Frontend actions"
11
+ "Params#", "Params#"
12
+ "N/A", "N/A"
13
+ "Log frontend actions", "Log frontend actions"
14
+ "Log admin actions", "Log admin actions"
15
+ "Log request params", "Log request params"
16
+ "View logged request params", "View logged request params"
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>ActionLogger</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>My community version of "Logging of Administrator Actions" feature available in Magento Enterprise . Plus, this module enables you to log frontend actions as well.</summary>
10
+ <description>This extension is inspired, to some extent, by "Logging of Administrator Actions" feature available in Magento Enterprise. Extension has several configurable parameters to set its behavior. It supports localization, via ActiveCodeline_ActionLogger.csv file. </description>
11
+ <notes>First stable version.</notes>
12
+ <authors><author><name>Branko Ajzele</name><user>brankoa</user><email>ajzele@gmail.com</email></author></authors>
13
+ <date>2011-02-17</date>
14
+ <time>15:31:01</time>
15
+ <contents><target name="magecommunity"><dir name="ActiveCodeline"><dir name="ActionLogger"><dir name="Block"><dir name="Adminhtml"><dir name="List"><dir name="Admin"><file name="Grid.php" hash="8062ab8c65627e62a291e79158cf67d0"/></dir><dir name="Frontend"><file name="Grid.php" hash="64369eb1f1f2164288433a09c0edcb3a"/></dir><dir name="Renderer"><file name="Param.php" hash="18d7d0c55b948112348eefa370eff40e"/></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="5786dbb70993b61e0b4b30062cd71806"/></dir><dir name="Model"><file name="Admin.php" hash="97bc0d1abedc0ba9d49ea5ca7d8aa811"/><file name="Frontend.php" hash="bb3c11adf75dcb8ad3d16719d5b24c35"/><dir name="Mysql4"><dir name="Admin"><file name="Collection.php" hash="5d2704b7792499377e709c0c80263261"/></dir><file name="Admin.php" hash="b20cf82f97457e265123ef8dfade51df"/><dir name="Frontend"><file name="Collection.php" hash="53c8b81d7438b575b9ed211d76f82385"/></dir><file name="Frontend.php" hash="71236e7158dc7d42a09a21858cd97b7f"/></dir><file name="Observer.php" hash="dfd15e2676b9e05b390f10de2e44073b"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="ActionLogger"><dir name="Admin"><file name="GridController.php" hash="04fed13b304bc912dff51bff5e368830"/></dir><dir name="Frontend"><file name="GridController.php" hash="c3e62c75e7fd41870d0c3e758cca3375"/></dir></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="96112f0269d85c2807c19080851596e5"/><file name="config.xml" hash="373a0b02e9feafe2de77299691d89215"/><file name="system.xml" hash="511ad9f53d32ba2fd328cd3e7ae4e550"/></dir><dir name="sql"><dir name="activecodeline_actionlogger_setup"><file name="mysql4-install-1.0.0.php" hash="6a2d5a4ba81922bd9abbd6efde738a73"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="ActiveCodeline_ActionLogger.csv" hash="e098d88a3713d6f6a466e340587af5b0"/></dir></target><target name="mageetc"><dir name="modules"><file name="ActiveCodeline_ActionLogger.xml" hash="276359fcf9f52f645861c8d0abb3791f"/></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>