get_config_file_dir().$this->get_config_file_name() ); 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->my_config['show_registered'] = true; $this->save_config(); } } function save_config() { $dir = $this->get_config_file_dir(); @mkgetdir($dir); $file = fopen( $dir.$this->get_config_file_name(), 'w' ); fwrite($file, serialize($this->my_config) ); fclose( $file ); } function on_pre_trigger_event($event_info) { @$this->trigger_counts[$event_info['event']]++; $this->dump('pre_trigger_event', $event_info); } function on_post_trigger_event($event_info) { $this->dump('post_trigger_event', $event_info); } function on_trigger_action($event_info) { @$this->trigger_counts[$event_info['event']]++; $this->dump('trigger_action', $event_info); } function on_page_tail() { if (1 || @$this->my_config['show_registered']) { global $debug, $pwg_event_handlers; $out = ''; foreach ($pwg_event_handlers as $event => $prio_array) { $out .= $event.' '.intval(@$this->trigger_counts[$event])." calls\n"; foreach ($prio_array as $prio => $handlers) { foreach ($handlers as $handler) { $out .= "\t$prio "; if ( is_array($handler['function']) ) { if ( is_string($handler['function'][0]) ) $out .= $handler['function'][0].'::'; else $out .= @get_class($handler['function'][0]).'->'; $out .= $handler['function'][1]; } else $out .= $handler['function']; $out .= "\n"; } } $out .= "\n"; } $debug .= '
'.$out.''; } } function dump($event, $event_info) { foreach( $this->my_config['filters'] as $filter) { if ( preg_match( '/'.$filter.'/', $event_info['event'] ) ) { if ($this->my_config['show_args']) { $s = '
';
$s .= htmlspecialchars( var_export( $event_info['data'], true ) );
$s .= '';
}
else
$s = '';
pwg_debug($event.' "'.$event_info['event'].'" '.($this->trigger_counts[$event_info['event']]).' calls '.($s) );
break;
}
}
}
function plugin_admin_menu($menu)
{
array_push($menu,
array(
'NAME' => 'Event Tracer',
'URL' => get_admin_plugin_menu_link(dirname(__FILE__).'/tracer_admin.php')
)
);
return $menu;
}
}
$obj = new EventTracer();
$obj->load_config();
add_event_handler('get_admin_plugin_menu_links', array(&$obj, 'plugin_admin_menu') );
add_event_handler('pre_trigger_event', array(&$obj, 'on_pre_trigger_event') );
add_event_handler('post_trigger_event', array(&$obj, 'on_post_trigger_event') );
add_event_handler('loc_begin_page_tail', array(&$obj, 'on_page_tail') );
add_event_handler('trigger_action', array(&$obj, 'on_trigger_action') );
set_plugin_data($plugin['id'], $obj);
?>