aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/event_tracer
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/event_tracer')
-rw-r--r--plugins/event_tracer/index.php90
-rw-r--r--plugins/event_tracer/tracer_admin.php23
-rw-r--r--plugins/event_tracer/tracer_admin.tpl22
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>