]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
added logging of events and plugin hooks
authorcash <cash.costello@gmail.com>
Sun, 3 Jul 2011 03:16:59 +0000 (23:16 -0400)
committercash <cash.costello@gmail.com>
Sun, 3 Jul 2011 03:16:59 +0000 (23:16 -0400)
mod/developers/actions/developers/settings.php
mod/developers/languages/en.php
mod/developers/start.php
mod/developers/views/default/admin/developers/settings.php

index f7caf859db5c70e689c1c54ab812e39e92326897..811fd22c00950f2ba061f5f9aa04a441853091f4 100644 (file)
@@ -24,7 +24,8 @@ if ($debug) {
        unset_config('debug', $site->getGUID());
 }
 
-$simple_settings = array('display_errors', 'screen_log', 'show_strings', 'wrap_views');
+$simple_settings = array('display_errors', 'screen_log', 'show_strings',
+       'wrap_views', 'log_events',);
 foreach ($simple_settings as $setting) {
        elgg_set_plugin_setting($setting, get_input($setting), 'developers');
 }
index a20241effb4610e9fab1c85e6315160bffcd1f2e..42df52134c8a05ac27004cfbe7b70f97b98ab6fd 100644 (file)
@@ -27,6 +27,8 @@ $english = array(
        'developers:help:show_strings' => "This displays the translation strings used by elgg_echo().",
        'developers:label:wrap_views' => "Wrap views",
        'developers:help:wrap_views' => "This wraps almost every view with HTML comments. Useful for finding the view creating particular HTML.",
+       'developers:label:log_events' => "Log events and plugin hooks",
+       'developers:help:log_events' => "Write events and plugin hooks to the log. Warning: there are many of these per page.",
 
        'developers:debug:off' => 'Off',
        'developers:debug:error' => 'Error',
@@ -36,6 +38,9 @@ $english = array(
        // inspection
        'developers:inspect:help' => 'Inspect configuration of the Elgg framework.',
 
+       // event logging
+       'developers:event_log_msg' => "%s: '%s, %s' in %s",
+
        // theme preview
        'theme_preview:general' => 'Introduction',
        'theme_preview:breakout' => 'Break out of iframe',
index 27a14b336f0bdde8037106ef1eb647b2284cfc9c..d9e1141e005909bb1a7bbc75107c679d1c8d45ee 100644 (file)
@@ -48,7 +48,12 @@ function developers_process_settings() {
        }
 
        if (elgg_get_plugin_setting('wrap_views', 'developers') == 1) {
-               register_plugin_hook('view', 'all', 'developers_wrap_views');
+               elgg_register_plugin_hook_handler('view', 'all', 'developers_wrap_views');
+       }
+
+       if (elgg_get_plugin_setting('log_events', 'developers') == 1) {
+               elgg_register_event_handler('all', 'all', 'developers_log_events', 1);
+               elgg_register_plugin_hook_handler('all', 'all', 'developers_log_events', 1);
        }
 }
 
@@ -105,6 +110,41 @@ function developers_wrap_views($hook, $type, $result, $params) {
        return $result;
 }
 
+/**
+* Log the events and plugin hooks
+*/
+function developers_log_events($name, $type) {
+
+       // filter out some very common events
+       if ($name == 'view' || $name == 'display' || $name == 'log' || $name == 'debug') {
+               return;
+       }
+       if ($name == 'session:get' || $name == 'validate') {
+               return;
+       }
+
+       $stack = debug_backtrace();
+       if ($stack[2]['function'] == 'elgg_trigger_event') {
+               $event_type = 'Event';
+       } else {
+               $event_type = 'Plugin hook';
+       }
+       $function = $stack[3]['function'] . '()';
+       if ($function == 'require_once' || $function == 'include_once') {
+               $function = $stack[3]['file'];
+       }
+
+       $msg = elgg_echo('developers:event_log_msg', array(
+               $event_type,
+               $name,
+               $type,
+               $function,
+       ));
+       elgg_dump($msg, false, 'WARNING');
+
+       unset($stack);
+}
+
 /**
  * Serve the theme preview pages
  *
index d463955b6523d2ecb7d3d1d211b212ef2dd848e9..287f4d99e8e5bb7518ac92b4a115725afc3b8b22 100644 (file)
@@ -50,6 +50,12 @@ $data = array(
                'value' => 1,
                'checked' => elgg_get_plugin_setting('wrap_views', 'developers') == 1,
        ),
+
+       'log_events' => array(
+               'type' => 'checkbox',
+               'value' => 1,
+               'checked' => elgg_get_plugin_setting('log_events', 'developers') == 1,
+       ),
 );
 
 $form_vars = array('id' => 'developer-settings-form');