From 6c57edf3a3f9ff260ef0b1d5dbe7db004dd9a51d Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 17 Apr 2014 15:03:48 +0200 Subject: [ticket/12273] Use the new class PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 280 +------------------------------ 1 file changed, 5 insertions(+), 275 deletions(-) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index 3021b64e05..0c4f14a4b4 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -13,6 +13,7 @@ if (php_sapi_name() != 'cli') $phpEx = substr(strrchr(__FILE__, '.'), 1); $phpbb_root_path = __DIR__ . '/../'; +require __DIR__ . '/event_exporter.' . $phpEx; function usage() { @@ -29,278 +30,6 @@ function usage() exit(2); } -function export_from_eventsmd($phpbb_root_path, $filter) -{ - $file_content = file_get_contents($phpbb_root_path . 'docs/events.md'); - - $events = explode("\n\n", $file_content); - foreach ($events as $event) - { - // Last row of the file - if (strpos($event, "\n===\n") === false) continue; - - list($event_name, $details) = explode("\n===\n", $event); - - if ($filter == 'acp' && strpos($event_name, 'acp_') !== 0) continue; - if ($filter == 'styles' && strpos($event_name, 'acp_') === 0) continue; - - list($file_details, $details) = explode("\n* Since: ", $details); - list($version, $explanition) = explode("\n* Purpose: ", $details); - - echo "|- id=\"{$event_name}\"\n"; - echo "| [[#{$event_name}|{$event_name}]] || "; - - if (strpos($file_details, "* Locations:\n + ") === 0) - { - $file_details = substr($file_details, strlen("* Locations:\n + ")); - $files = explode("\n + ", $file_details); - $prosilver = $subsilver2 = $adm = array(); - foreach ($files as $file) - { - if (strpos($file, 'styles/prosilver/template/') === 0) - { - $prosilver[] = substr($file, strlen('styles/prosilver/template/')); - } - if (strpos($file, 'styles/subsilver2/template/') === 0) - { - $subsilver2[] = substr($file, strlen('styles/subsilver2/template/')); - } - if (strpos($file, 'adm/style/') === 0) - { - $adm[] = substr($file, strlen('adm/style/')); - } - } - if ($filter == 'acp') - { - echo implode(', ', $adm); - } - else - { - echo implode(', ', $prosilver) . ' || ' . implode(', ', $subsilver2); - } - } - else if ($filter == 'acp') - { - echo substr($file_details, strlen("* Location: adm/style/")); - } - echo " || {$version} || " . str_replace("\n", ' ', $explanition) . "\n"; - - } -} - -function export_from_php($phpbb_root_path) -{ - $files = get_file_list($phpbb_root_path); - $events = array(); - foreach ($files as $file) - { - $file_events = check_for_events($phpbb_root_path, $file); - if (!empty($file_events)) - { - $events = array_merge($events, $file_events); - } - } - - ksort($events); - - foreach ($events as $event) - { - echo '|- id="' . $event['event'] . '"' . "\n"; - echo '| [[#' . $event['event'] . '|' . $event['event'] . ']] || ' . $event['file'] . ' || ' . implode(', ', $event['arguments']) . ' || ' . $event['since'] . ' || ' . $event['description'] . "\n"; - } -} - -function check_for_events($phpbb_root_path, $file) -{ - $events = array(); - $content = file_get_contents($phpbb_root_path . $file); - - if (strpos($content, "phpbb_dispatcher->trigger_event('") || strpos($content, "phpbb_dispatcher->dispatch('")) - { - $lines = explode("\n", $content); - for ($i = 0, $num_lines = sizeof($lines); $i < $num_lines; $i++) - { - $event_line = 0; - $found_trigger_event = strpos($lines[$i], "phpbb_dispatcher->trigger_event('"); - if ($found_trigger_event !== false) - { - $event_line = $i; - $event_name = $lines[$event_line]; - $event_name = substr($event_name, $found_trigger_event + strlen("phpbb_dispatcher->trigger_event('")); - $event_name = substr($event_name, 0, strpos($event_name, "'")); - - $current_line = trim($lines[$event_line]); - $arguments = array(); - $found_inline_array = strpos($current_line, "', compact(array('"); - if ($found_inline_array !== false) - { - $varsarray = substr($current_line, $found_inline_array + strlen("', compact(array('"), -6); - $arguments = explode("', '", $varsarray); - } - - if (empty($arguments)) - { - // Find $vars array lines - $find_varsarray_line = 1; - while (strpos($lines[$event_line - $find_varsarray_line], "vars = array('") === false) - { - $find_varsarray_line++; - - if ($find_varsarray_line > min(50, $event_line)) - { - throw new LogicException('Can not find "$vars = array()"-line for event "' . $event_name . '" in file "' . $file . '"'); - } - } - $varsarray = substr(trim($lines[$event_line - $find_varsarray_line]), strlen("\$vars = array('"), -3); - $arguments = explode("', '", $varsarray); - } - - // Validate $vars array with @var - $find_vars_line = 3; - $doc_vars = array(); - while (strpos(trim($lines[$event_line - $find_vars_line]), '*') === 0) - { - $var_line = trim($lines[$event_line - $find_vars_line]); - $var_line = preg_replace('!\s+!', ' ', $var_line); - if (strpos($var_line, '* @var ') === 0) - { - $doc_line = explode(' ', $var_line); - if (isset($doc_line[3])) - { - $doc_vars[] = $doc_line[3]; - } - } - $find_vars_line++; - } - if (sizeof($arguments) !== sizeof($doc_vars) && array_intersect($arguments, $doc_vars)) - { - throw new LogicException('$vars array does not match the list of @var tags for event "' . $event_name . '" in file "' . $file . '"'); - } - } - $found_dispatch = strpos($lines[$i], "phpbb_dispatcher->dispatch('"); - if ($found_dispatch !== false) - { - $event_line = $i; - $event_name = $lines[$event_line]; - $event_name = substr($event_name, $found_dispatch + strlen("phpbb_dispatcher->dispatch('")); - $event_name = substr($event_name, 0, strpos($event_name, "'")); - $arguments = array(); - } - - if ($event_line) - { - // Validate @event name - $find_event_line = 1; - while (strpos($lines[$event_line - $find_event_line], '* @event ') === false) - { - $find_event_line++; - - if ($find_event_line > min(50, $event_line)) - { - throw new LogicException('Can not find @event tag for event "' . $event_name . '" in file "' . $file . '"'); - } - } - $event_name_tag = substr(trim($lines[$event_line - $find_event_line]), strlen('* @event ')); - if ($event_name_tag !== $event_name) - { - throw new LogicException('Event name does not match @event tag for event "' . $event_name . '" in file "' . $file . '"'); - } - - // Find @since - $find_since_line = 1; - while (strpos($lines[$event_line - $find_since_line], '* @since ') === false) - { - $find_since_line++; - - if ($find_since_line > min(50, $event_line)) - { - throw new LogicException('Can not find @since tag for event "' . $event_name . '" in file "' . $file . '"'); - } - } - $since = substr(trim($lines[$event_line - $find_since_line]), strlen('* @since ')); - $since = ($since == '3.1-A1') ? '3.1.0-a1' : $since; - - // Find event description line - $find_description_line = 3; - while (strpos(trim($lines[$event_line - $find_description_line]), '*') === 0) - { - $find_description_line++; - - if ($find_description_line > min(50, $event_line)) - { - throw new LogicException('Can not find description-line for event "' . $event_name . '" in file "' . $file . '"'); - } - } - $description = substr(trim($lines[$event_line - $find_description_line + 1]), strlen('* ')); - - $events[$event_name] = array( - 'event' => $event_name, - 'file' => $file, - 'arguments' => $arguments, - 'since' => $since, - 'description' => $description, - ); - } - } - } - - return $events; -} - -/** -* Returns a list of files in that directory -* -* Works recursive with any depth -* -* @param string $dir Directory to go through -* @return array List of files (including directories from within $dir -*/ -function get_file_list($dir, $path = '') -{ - try - { - $iterator = new \DirectoryIterator($dir); - } - catch (Exception $e) - { - return array(); - } - - $files = array(); - foreach ($iterator as $file_info) - { - if ($file_info->isDot()) - { - continue; - } - - // Do not scan some directories - if ($file_info->isDir() && ( - ($path == '' && in_array($file_info->getFilename(), array('cache', 'develop', 'ext', 'files', 'language', 'store', 'vendor'))) - || ($path == '/includes' && in_array($file_info->getFilename(), array('utf'))) - || ($path == '/phpbb/db/migration' && in_array($file_info->getFilename(), array('data'))) - || ($path == '/phpbb' && in_array($file_info->getFilename(), array('event'))) - )) - { - continue; - } - else if ($file_info->isDir()) - { - $sub_dir = get_file_list($file_info->getPath() . '/' . $file_info->getFilename(), $path . '/' . $file_info->getFilename()); - foreach ($sub_dir as $file) - { - $files[] = $file_info->getFilename() . '/' . $file; - } - } - else if (substr($file_info->getFilename(), -4) == '.php') - { - $files[] = $file_info->getFilename(); - } - } - - return $files; -} - function validate_argument_count($arguments, $count) { if ($arguments <= $count) @@ -312,19 +41,20 @@ function validate_argument_count($arguments, $count) validate_argument_count($argc, 1); $action = $argv[1]; +$exporter = new \event_exporter($phpbb_root_path); switch ($action) { case 'acp': - export_from_eventsmd($phpbb_root_path, 'acp'); + $exporter->export_from_eventsmd('acp'); break; case 'styles': - export_from_eventsmd($phpbb_root_path, 'styles'); + $exporter->export_from_eventsmd('styles'); break; case 'php': - export_from_php($phpbb_root_path); + $exporter->export_from_php(); break; default: -- cgit v1.2.1 From d213e09a40cb0ee9c94c35b3aecb1814d740184a Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 18 Apr 2014 11:06:04 +0200 Subject: [ticket/12273] Crawl the phpBB directory for events PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index 0c4f14a4b4..0019fbaa44 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -54,7 +54,8 @@ switch ($action) break; case 'php': - $exporter->export_from_php(); + $exporter->crawl_phpbb_directory_php(); + echo $exporter->export_php_events_for_wiki(); break; default: -- cgit v1.2.1 From 3352d9fd344c14172bd690f20ee50a912032db7f Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 18 Apr 2014 11:13:02 +0200 Subject: [ticket/12273] Move event exporter to namespace PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index 0019fbaa44..ff64dc493e 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -13,7 +13,7 @@ if (php_sapi_name() != 'cli') $phpEx = substr(strrchr(__FILE__, '.'), 1); $phpbb_root_path = __DIR__ . '/../'; -require __DIR__ . '/event_exporter.' . $phpEx; +require __DIR__ . '/../phpbb/event/exporter.' . $phpEx; function usage() { @@ -41,7 +41,7 @@ function validate_argument_count($arguments, $count) validate_argument_count($argc, 1); $action = $argv[1]; -$exporter = new \event_exporter($phpbb_root_path); +$exporter = new \phpbb\event\exporter($phpbb_root_path); switch ($action) { -- cgit v1.2.1 From 3566325874a7d6da00ec7cd0e95543db34e1e811 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 18 Apr 2014 12:51:45 +0200 Subject: [ticket/12273] Fix export script PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 59 ++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 15 deletions(-) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index ff64dc493e..69b09ff136 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -13,20 +13,23 @@ if (php_sapi_name() != 'cli') $phpEx = substr(strrchr(__FILE__, '.'), 1); $phpbb_root_path = __DIR__ . '/../'; -require __DIR__ . '/../phpbb/event/exporter.' . $phpEx; function usage() { echo "Usage: export_events_for_wiki.php COMMAND\n"; echo "\n"; + echo "all:\n"; + echo " Generate the complete wikipage for https://wiki.phpbb.com/Event_List\n"; + echo "\n"; + echo "php:\n"; + echo " Generate the PHP event section of Event_List\n"; + echo "\n"; echo "acp:\n"; - echo " Export all events for files in the acp style.\n"; + echo " Generate the ACP Template event section of Event_List\n"; echo "\n"; echo "styles:\n"; - echo " Export all events for files in the prosilver and subsilver2 styles.\n"; + echo " Generate the Styles Template event section of Event_List\n"; echo "\n"; - echo "php:\n"; - echo " Export all events for php-files.\n"; exit(2); } @@ -41,22 +44,48 @@ function validate_argument_count($arguments, $count) validate_argument_count($argc, 1); $action = $argv[1]; -$exporter = new \phpbb\event\exporter($phpbb_root_path); +require __DIR__ . '/../phpbb/event/php_exporter.' . $phpEx; +require __DIR__ . '/../phpbb/event/md_exporter.' . $phpEx; switch ($action) { - case 'acp': - $exporter->export_from_eventsmd('acp'); - break; - - case 'styles': - $exporter->export_from_eventsmd('styles'); - break; + case 'all': + echo '__FORCETOC__' . "\n"; case 'php': + $exporter = new \phpbb\event\php_exporter($phpbb_root_path); $exporter->crawl_phpbb_directory_php(); - echo $exporter->export_php_events_for_wiki(); - break; + echo $exporter->export_events_for_wiki(); + + if ($action === 'php') + { + break; + } + echo "\n"; + // no break; + + case 'styles': + $exporter = new \phpbb\event\md_exporter($phpbb_root_path); + $exporter->crawl_eventsmd('docs/events.md', 'styles'); + echo $exporter->export_events_for_wiki(); + + if ($action === 'styles') + { + break; + } + echo "\n"; + // no break; + + case 'adm': + $exporter = new \phpbb\event\md_exporter($phpbb_root_path); + $exporter->crawl_eventsmd('docs/events.md', 'adm'); + echo $exporter->export_events_for_wiki(); + + if ($action === 'all') + { + echo "\n" . '[[Category:Events and Listeners]]' . "\n"; + } + break; default: usage(); -- cgit v1.2.1 From 58892555299ad9df5bdd2c5401a854068860e68d Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sun, 20 Apr 2014 17:01:00 +0200 Subject: [ticket/12273] Test source files and compare with events.md PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index 69b09ff136..cc4aa4444f 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -24,7 +24,7 @@ function usage() echo "php:\n"; echo " Generate the PHP event section of Event_List\n"; echo "\n"; - echo "acp:\n"; + echo "adm:\n"; echo " Generate the ACP Template event section of Event_List\n"; echo "\n"; echo "styles:\n"; @@ -66,7 +66,7 @@ switch ($action) case 'styles': $exporter = new \phpbb\event\md_exporter($phpbb_root_path); - $exporter->crawl_eventsmd('docs/events.md', 'styles'); + $exporter->crawl_phpbb_directory_styles('docs/events.md'); echo $exporter->export_events_for_wiki(); if ($action === 'styles') @@ -78,7 +78,7 @@ switch ($action) case 'adm': $exporter = new \phpbb\event\md_exporter($phpbb_root_path); - $exporter->crawl_eventsmd('docs/events.md', 'adm'); + $exporter->crawl_phpbb_directory_adm('docs/events.md'); echo $exporter->export_events_for_wiki(); if ($action === 'all') -- cgit v1.2.1 From e934cefe809b91b80db509916a0be4b64a3ad2a5 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sun, 27 Apr 2014 23:50:02 +0200 Subject: [ticket/12273] Fix missing classes in export_events_for_wiki.php PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index cc4aa4444f..2a8e4533e5 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -46,6 +46,8 @@ validate_argument_count($argc, 1); $action = $argv[1]; require __DIR__ . '/../phpbb/event/php_exporter.' . $phpEx; require __DIR__ . '/../phpbb/event/md_exporter.' . $phpEx; +require __DIR__ . '/../phpbb/event/recursive_event_filter_iterator.' . $phpEx; +require __DIR__ . '/../phpbb/recursive_dot_prefix_filter_iterator.' . $phpEx; switch ($action) { -- cgit v1.2.1 From 2928effb3cd10114b71305e5c07f6c03584a4fe1 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 28 Apr 2014 21:04:36 +0200 Subject: [ticket/12273] Update exporter to allow specifying an extension PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index 2a8e4533e5..61d02059fd 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -16,19 +16,24 @@ $phpbb_root_path = __DIR__ . '/../'; function usage() { - echo "Usage: export_events_for_wiki.php COMMAND\n"; + echo "Usage: export_events_for_wiki.php COMMAND [EXTENSION]\n"; echo "\n"; - echo "all:\n"; - echo " Generate the complete wikipage for https://wiki.phpbb.com/Event_List\n"; + echo "COMMAND:\n"; + echo " all:\n"; + echo " Generate the complete wikipage for https://wiki.phpbb.com/Event_List\n"; echo "\n"; - echo "php:\n"; - echo " Generate the PHP event section of Event_List\n"; + echo " php:\n"; + echo " Generate the PHP event section of Event_List\n"; echo "\n"; - echo "adm:\n"; - echo " Generate the ACP Template event section of Event_List\n"; + echo " adm:\n"; + echo " Generate the ACP Template event section of Event_List\n"; echo "\n"; - echo "styles:\n"; - echo " Generate the Styles Template event section of Event_List\n"; + echo " styles:\n"; + echo " Generate the Styles Template event section of Event_List\n"; + echo "\n"; + echo "EXTENSION (Optional):\n"; + echo " If not given, only core events will be exported.\n"; + echo " Otherwise only events from the extension will be exported.\n"; echo "\n"; exit(2); } @@ -44,6 +49,7 @@ function validate_argument_count($arguments, $count) validate_argument_count($argc, 1); $action = $argv[1]; +$extension = isset($argv[2]) ? $argv[2] : null; require __DIR__ . '/../phpbb/event/php_exporter.' . $phpEx; require __DIR__ . '/../phpbb/event/md_exporter.' . $phpEx; require __DIR__ . '/../phpbb/event/recursive_event_filter_iterator.' . $phpEx; @@ -56,7 +62,7 @@ switch ($action) case 'php': $exporter = new \phpbb\event\php_exporter($phpbb_root_path); - $exporter->crawl_phpbb_directory_php(); + $exporter->crawl_phpbb_directory_php($extension); echo $exporter->export_events_for_wiki(); if ($action === 'php') @@ -68,7 +74,7 @@ switch ($action) case 'styles': $exporter = new \phpbb\event\md_exporter($phpbb_root_path); - $exporter->crawl_phpbb_directory_styles('docs/events.md'); + $exporter->crawl_phpbb_directory_styles('docs/events.md', $extension); echo $exporter->export_events_for_wiki(); if ($action === 'styles') @@ -80,7 +86,7 @@ switch ($action) case 'adm': $exporter = new \phpbb\event\md_exporter($phpbb_root_path); - $exporter->crawl_phpbb_directory_adm('docs/events.md'); + $exporter->crawl_phpbb_directory_adm('docs/events.md', $extension); echo $exporter->export_events_for_wiki(); if ($action === 'all') -- cgit v1.2.1 From 7f90ff70acd036a022db924bb8d0e0d3f64b8ff8 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 28 Apr 2014 23:39:37 +0200 Subject: [ticket/12273] Move $extension to constructor so the path is always set PHPBB3-12273 --- phpBB/develop/export_events_for_wiki.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'phpBB/develop/export_events_for_wiki.php') diff --git a/phpBB/develop/export_events_for_wiki.php b/phpBB/develop/export_events_for_wiki.php index 61d02059fd..f4ebb42cf4 100644 --- a/phpBB/develop/export_events_for_wiki.php +++ b/phpBB/develop/export_events_for_wiki.php @@ -61,8 +61,8 @@ switch ($action) echo '__FORCETOC__' . "\n"; case 'php': - $exporter = new \phpbb\event\php_exporter($phpbb_root_path); - $exporter->crawl_phpbb_directory_php($extension); + $exporter = new \phpbb\event\php_exporter($phpbb_root_path, $extension); + $exporter->crawl_phpbb_directory_php(); echo $exporter->export_events_for_wiki(); if ($action === 'php') @@ -73,8 +73,8 @@ switch ($action) // no break; case 'styles': - $exporter = new \phpbb\event\md_exporter($phpbb_root_path); - $exporter->crawl_phpbb_directory_styles('docs/events.md', $extension); + $exporter = new \phpbb\event\md_exporter($phpbb_root_path, $extension); + $exporter->crawl_phpbb_directory_styles('docs/events.md'); echo $exporter->export_events_for_wiki(); if ($action === 'styles') @@ -85,8 +85,8 @@ switch ($action) // no break; case 'adm': - $exporter = new \phpbb\event\md_exporter($phpbb_root_path); - $exporter->crawl_phpbb_directory_adm('docs/events.md', $extension); + $exporter = new \phpbb\event\md_exporter($phpbb_root_path, $extension); + $exporter->crawl_phpbb_directory_adm('docs/events.md'); echo $exporter->export_events_for_wiki(); if ($action === 'all') -- cgit v1.2.1