diff options
Diffstat (limited to 'plugins/event_tracer')
-rw-r--r-- | plugins/event_tracer/index.php | 90 | ||||
-rw-r--r-- | plugins/event_tracer/tracer_admin.php | 23 | ||||
-rw-r--r-- | plugins/event_tracer/tracer_admin.tpl | 22 |
3 files changed, 135 insertions, 0 deletions
diff --git a/plugins/event_tracer/index.php b/plugins/event_tracer/index.php new file mode 100644 index 000000000..cc9130b67 --- /dev/null +++ b/plugins/event_tracer/index.php @@ -0,0 +1,90 @@ +<?php +/* +Plugin Name: Event tracer +Version: 1.0 +Description: For developers. Shows all calls to trigger_event. +Plugin URI: http://www.phpwebgallery.net +*/ +if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); + +class EventTracer +{ + var $me_working; + var $my_config; + + function EventTracer() + { + $this->me_working=0; + } + + function load_config() + { + $x = @file_get_contents( dirname(__FILE__).'/tracer.dat' ); + if ($x!==false) + { + $c = unserialize($x); + // do some more tests here + $this->my_config = $c; + } + if ( !isset($this->my_config) + or empty($this->my_config['filters']) ) + { + $this->my_config['filters'] = array( '.*' ); + $this->my_config['show_args'] = false; + $this->save_config(); + } + } + + function save_config() + { + $file = fopen( dirname(__FILE__).'/tracer.dat', 'w' ); + fwrite($file, serialize($this->my_config) ); + fclose( $file ); + } + + function pre_trigger_event($event_info) + { + if (!$this->me_working) + { + foreach( $this->my_config['filters'] as $filter) + { + if ( preg_match( '/'.$filter.'/', $event_info['event'] ) ) + { + if ($this->my_config['show_args']) + $s = var_export( $event_info['data'], true ); + else + $s = ''; + pwg_debug('begin trigger_event "'.$event_info['event'].'" '.htmlspecialchars($s) ); + break; + } + } + } + } + + /*function post_trigger_event($filter_info) + { + if (!$this->me_working) + { + $s = var_export( $filter_info['data'], true ); + pwg_debug('end trigger_event '.$filter_info['event'].' '.$s ); + } + }*/ + + function plugin_admin_menu() + { + add_plugin_admin_menu( "Event Tracer", array(&$this, 'do_admin') ); + } + + function do_admin($my_url) + { + include( dirname(__FILE__).'/tracer_admin.php' ); + } + +} + +$eventTracer = new EventTracer(); +$eventTracer->load_config(); + +add_event_handler('plugin_admin_menu', array(&$eventTracer, 'plugin_admin_menu') ); +add_event_handler('pre_trigger_event', array(&$eventTracer, 'pre_trigger_event') ); +?>
\ No newline at end of file diff --git a/plugins/event_tracer/tracer_admin.php b/plugins/event_tracer/tracer_admin.php new file mode 100644 index 000000000..9231638b1 --- /dev/null +++ b/plugins/event_tracer/tracer_admin.php @@ -0,0 +1,23 @@ +<?php +if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); + +global $template; +$template->set_filenames( array('plugin_admin_content' => dirname(__FILE__).'/tracer_admin.tpl') ); + +if ( isset($_POST['eventTracer_filters']) ) +{ + $v = $_POST['eventTracer_filters']; + $v = str_replace( "\r\n", "\n", $v ); + $v = str_replace( "\n\n", "\n", $v ); + $this->my_config['filters'] = explode("\n", $v); + $this->my_config['show_args'] = isset($_POST['eventTracer_show_args']); + $this->save_config(); + global $page; + array_push($page['infos'], 'event tracer options saved'); +} +$template->assign_var('EVENT_TRACER_FILTERS', implode("\n", $this->my_config['filters'] ) ); +$template->assign_var('EVENT_TRACER_SHOW_ARGS', $this->my_config['show_args'] ? 'checked="checked"' : '' ); +$template->assign_var('EVENT_TRACER_F_ACTION', $my_url); + +$template->assign_var_from_handle( 'PLUGIN_ADMIN_CONTENT', 'plugin_admin_content'); +?>
\ No newline at end of file diff --git a/plugins/event_tracer/tracer_admin.tpl b/plugins/event_tracer/tracer_admin.tpl new file mode 100644 index 000000000..38fbd2796 --- /dev/null +++ b/plugins/event_tracer/tracer_admin.tpl @@ -0,0 +1,22 @@ +<p> +The event tracer is a developer tool that logs in the footer of the window all calls to trigger_event method. +You can use this plugin to see what events is PhpWebGallery calling. +<b>Note that $conf['show_queries'] must be true.</b> +</p> +<form method="post" action="{EVENT_TRACER_F_ACTION}" class="general"> +<fieldset> + <legend>Event Tracer</legend> + +<label>Show event argument + <input type="checkbox" name="eventTracer_show_args" value="{EVENT_TRACER_SHOW_ARGS}" /> +</label> +<br/> +<label>Fill below a list of regular expressions (one per line). +An event will be logged if its name matches at least one expression in the list. + <textarea name="eventTracer_filters" id="eventTracer_filters"rows="10" cols="80">{EVENT_TRACER_FILTERS}</textarea> +</label> + +</fieldset> + +<p><input type="submit" value="Submit" /></p> +</form> |