aboutsummaryrefslogtreecommitdiffstats
path: root/BSF/plugins/event_tracer/event_list.php
blob: ae617fe872acb00699312fc8613df7eb59b7191a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?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( 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) ),
  ) );

$template->assign('events', array());
foreach ($events as $e)
{
  $template->append( 'events', 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');
?>