aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/event_tracer
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/event_tracer')
-rw-r--r--plugins/event_tracer/event_list.php89
-rw-r--r--plugins/event_tracer/event_list.tpl16
-rw-r--r--plugins/event_tracer/tracer_admin.php4
-rw-r--r--plugins/event_tracer/tracer_admin.tpl2
4 files changed, 110 insertions, 1 deletions
diff --git a/plugins/event_tracer/event_list.php b/plugins/event_tracer/event_list.php
new file mode 100644
index 000000000..1f1969629
--- /dev/null
+++ b/plugins/event_tracer/event_list.php
@@ -0,0 +1,89 @@
+<?php
+if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+
+function get_php_files($path, $to_ignore=array(), $recursive=true )
+{
+ $files = array();
+ if (is_dir($path))
+ {
+ if ($contents = opendir($path))
+ {
+ while (($node = readdir($contents)) !== false)
+ {
+ if ($node != '.' and $node != '..' and $node != '.svn'
+ and !in_array($node, $to_ignore) )
+ {
+ if ( $recursive and is_dir($path.'/'.$node) )
+ {
+ $files = array_merge($files, get_php_files($path.'/'.$node, $to_ignore));
+
+ }
+ if ( is_file($path.'/'.$node) )
+ {
+ $files[] = $path.'/'.$node;
+ }
+ }
+ }
+ closedir($contents);
+ }
+ }
+ return $files;
+}
+
+$files = array();
+$files = array_merge( $files, get_php_files('.', array(), false) );
+$files = array_merge( $files, get_php_files('./include') );
+$files = array_merge( $files, get_php_files('./admin') );
+$files = array_unique($files);
+
+$events = array();
+foreach ($files as $file)
+{
+ $code = file_get_contents($file);
+ $code = preg_replace( '#\?'.'>.*<\?php#m', '', $code);
+ $code = preg_replace( '#\/\*.*\*\/#m', '', $code);
+ $code = preg_replace( '#\/\/.*#', '', $code);
+
+ $count = preg_match_all(
+ '#[^a-zA-Z_$-]trigger_(action|event)\s*\(\s*([^,)]+)#m',
+ $code, $matches
+ );
+
+ for ($i=0; $i<$count; $i++)
+ {
+ $type = $matches[1][$i];
+ $name = preg_replace( '#^[\'"]?([^\'"]*)[\'"]?$#', '$1', $matches[2][$i]);
+ array_push($events, array($type,$name,$file) );
+ }
+}
+
+$sort= isset($_GET['sort']) ? $_GET['sort'] : 1;
+usort(
+ $events,
+ create_function( '$a,$b', 'return $a['.$sort.']>$b['.$sort.'];' )
+ );
+
+global $template;
+
+$url = get_admin_plugin_menu_link(__FILE__);
+
+$template->assign_vars( array(
+ 'NB_EVENTS' => count($events),
+ 'U_SORT0' => add_url_params($url, array('sort'=>0) ),
+ 'U_SORT1' => add_url_params($url, array('sort'=>1) ),
+ 'U_SORT2' => add_url_params($url, array('sort'=>2) ),
+ ) );
+
+foreach ($events as $e)
+{
+ $template->assign_block_vars( 'event', array(
+ 'TYPE' => $e[0],
+ 'NAME' => $e[1],
+ 'FILE' => $e[2],
+ )
+ );
+}
+
+$template->set_filenames( array('event_list' => dirname(__FILE__).'/event_list.tpl' ) );
+$template->assign_var_from_handle( 'ADMIN_CONTENT', 'event_list');
+?>
diff --git a/plugins/event_tracer/event_list.tpl b/plugins/event_tracer/event_list.tpl
new file mode 100644
index 000000000..8ec507395
--- /dev/null
+++ b/plugins/event_tracer/event_list.tpl
@@ -0,0 +1,16 @@
+There are {NB_EVENTS} calls to triger_event or triger_action.
+
+<table width="99%" class="table2">
+<tr class="throw">
+ <th><a href="{U_SORT0}">Type</a></th>
+ <th><a href="{U_SORT1}">Name</a></th>
+ <th><a href="{U_SORT2}">File</a></th>
+</tr>
+<!-- BEGIN event -->
+<tr>
+ <td>{event.TYPE}</td>
+ <td>{event.NAME}</td>
+ <td>{event.FILE}</td>
+</tr>
+<!-- END event -->
+</table>
diff --git a/plugins/event_tracer/tracer_admin.php b/plugins/event_tracer/tracer_admin.php
index 2495c0dc0..5b405ba5a 100644
--- a/plugins/event_tracer/tracer_admin.php
+++ b/plugins/event_tracer/tracer_admin.php
@@ -23,7 +23,9 @@ if ( isset($_POST['eventTracer_filters']) )
}
$template->assign_var('EVENT_TRACER_FILTERS', implode("\n", $me->my_config['filters'] ) );
$template->assign_var('EVENT_TRACER_SHOW_ARGS', $me->my_config['show_args'] ? 'checked="checked"' : '' );
+$template->assign_var('U_LIST_EVENTS', get_admin_plugin_menu_link(dirname(__FILE__).'/event_list.php'));
+
//$template->assign_var('EVENT_TRACER_F_ACTION', $my_url);
$template->assign_var_from_handle( '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
index 93deee3b0..980799992 100644
--- a/plugins/event_tracer/tracer_admin.tpl
+++ b/plugins/event_tracer/tracer_admin.tpl
@@ -23,4 +23,6 @@ An event will be logged if its name matches at least one expression in the list.
</fieldset>
<p><input type="submit" value="Submit" /></p>
+
+<p><a href="{U_LIST_EVENTS}">Click here to see a complete list of actions and events trigered by this PWG version</a>.</p>
</form>