mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-03-28 17:42:57 +01:00
- plugins can add now their page to the admin page
- new plugin (event_tracer) that demonstrate it and useful to see all calls to trigger_event git-svn-id: http://piwigo.org/svn/trunk@1580 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
90
plugins/event_tracer/index.php
Normal file
90
plugins/event_tracer/index.php
Normal file
@@ -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') );
|
||||
?>
|
||||
23
plugins/event_tracer/tracer_admin.php
Normal file
23
plugins/event_tracer/tracer_admin.php
Normal file
@@ -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');
|
||||
?>
|
||||
22
plugins/event_tracer/tracer_admin.tpl
Normal file
22
plugins/event_tracer/tracer_admin.tpl
Normal file
@@ -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>
|
||||
Reference in New Issue
Block a user