- added plugin action loc_end_picture

- enhanced the event tracer plugin to show a list of all events and actions trigered by pwg
- small reorganization in picture.php

git-svn-id: http://piwigo.org/svn/trunk@1793 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rvelices
2007-02-09 01:41:49 +00:00
parent 5b038de717
commit 0333119b79
5 changed files with 135 additions and 34 deletions
+89
View File
@@ -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');
?>
+16
View File
@@ -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>
+3 -1
View File
@@ -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');
?>
?>
+2
View File
@@ -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>