aboutsummaryrefslogtreecommitdiffstats
path: root/BSF/plugins/event_tracer/main.inc.php
diff options
context:
space:
mode:
authorvdigital <vdigital@piwigo.org>2008-05-23 21:05:41 +0000
committervdigital <vdigital@piwigo.org>2008-05-23 21:05:41 +0000
commit77fd1f51a3c5f5a52f72ef8a299fe368228e2285 (patch)
treea67ede42904657ccf3349ecdaef1cec8b8e36ff8 /BSF/plugins/event_tracer/main.inc.php
parent553727dffacc48e8337c1d141f2a25af359e74b1 (diff)
git-svn-id: http://piwigo.org/svn/trunk@2357 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'BSF/plugins/event_tracer/main.inc.php')
-rw-r--r--BSF/plugins/event_tracer/main.inc.php137
1 files changed, 137 insertions, 0 deletions
diff --git a/BSF/plugins/event_tracer/main.inc.php b/BSF/plugins/event_tracer/main.inc.php
new file mode 100644
index 000000000..dcf282146
--- /dev/null
+++ b/BSF/plugins/event_tracer/main.inc.php
@@ -0,0 +1,137 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | Piwigo - a PHP based picture gallery |
+// +-----------------------------------------------------------------------+
+// | Copyright(C) 2008 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2003-2008 Piwigo team http://phpwebgallery.net |
+// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU General Public License |
+// | along with this program; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+/*
+Plugin Name: Event tracer
+Version: 1.8.a
+Description: For developers. Shows all calls to trigger_event.
+Plugin URI: http://piwigo.org
+Author: Piwigo team
+Author URI: http://piwigo.org
+*/
+
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+class EventTracer
+{
+ var $me_working;
+ var $my_config;
+
+ function EventTracer()
+ {
+ $this->me_working=0;
+ }
+
+ function get_config_file_dir()
+ {
+ global $conf;
+ return $conf['local_data_dir'].'/plugins/';
+ }
+
+ function get_config_file_name()
+ {
+ return basename(dirname(__FILE__)).'.dat';
+ }
+
+ function load_config()
+ {
+ $x = @file_get_contents( $this->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->save_config();
+ }
+ }
+
+ function save_config()
+ {
+ $dir = $this->get_config_file_dir();
+ @mkdir($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->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);
+?>