mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-03-28 17:42:57 +01:00
- display author and and author url (if present) on plugin admin page - uniformized versions/authors... for all plugins in svn - security fix (html escape name, version, uri, author... to avoid javascript injection which could automatically simulate click on Install) - added confirmation for install/uninstall plugins Web services: - web service explorer now caches method details in order to avoid unnecessary web calls - web service explorer can now send parameters as arrays - web service explorer uses now prototype.js version 1.5 - small improvements - added and use function bad_request (sends http status code 400) git-svn-id: http://piwigo.org/svn/trunk@1852 68402e56-0260-453c-a942-63ccdbb3a9ee
100 lines
2.4 KiB
PHP
100 lines
2.4 KiB
PHP
<?php /*
|
|
Plugin Name: Event tracer
|
|
Version: 1.0
|
|
Description: For developers. Shows all calls to trigger_event.
|
|
Plugin URI: http://www.phpwebgallery.net
|
|
Author: PhpWebGallery team
|
|
Author 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__).'/data.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__).'/data.dat', 'w' );
|
|
fwrite($file, serialize($this->my_config) );
|
|
fclose( $file );
|
|
}
|
|
|
|
function on_pre_trigger_event($event_info)
|
|
{
|
|
$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->dump('trigger_action', $event_info);
|
|
}
|
|
|
|
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 = '<pre>';
|
|
$s .= htmlspecialchars( var_export( $event_info['data'], true ) );
|
|
$s .= '</pre>';
|
|
}
|
|
else
|
|
$s = '';
|
|
pwg_debug($event.' "'.$event_info['event'].'" '.($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('trigger_action', array(&$obj, 'on_trigger_action') );
|
|
set_plugin_data($plugin['id'], $obj);
|
|
?>
|