Merge pull request #1784 from nickvergessen/ticket/11924

[Ticket/11924] Add a script to export the events in wiki format
This commit is contained in:
Nils Adermann 2013-10-28 14:53:59 -07:00
commit ed94e3c576
6 changed files with 378 additions and 19 deletions

View file

@ -0,0 +1,307 @@
<?php
/**
*
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
if (php_sapi_name() != 'cli')
{
die("This program must be run from the command line.\n");
}
$phpEx = substr(strrchr(__FILE__, '.'), 1);
$phpbb_root_path = __DIR__ . '/../';
function usage()
{
echo "Usage: export_events_for_wiki.php COMMAND\n";
echo "\n";
echo "acp:\n";
echo " Export all events for files in the acp style.\n";
echo "\n";
echo "styles:\n";
echo " Export all events for files in the prosilver and subsilver2 styles.\n";
echo "\n";
echo "php:\n";
echo " Export all events for php-files.\n";
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 = 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/'));
}
}
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;
if ($found_trigger_event = strpos($lines[$i], "phpbb_dispatcher->trigger_event('"))
{
$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, "'"));
// 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 . '"');
}
}
else if ($found_trigger_event = strpos($lines[$i], "phpbb_dispatcher->dispatch('"))
{
$event_line = $i;
$event_name = $lines[$event_line];
$event_name = substr($event_name, $found_trigger_event + 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 ($file_info->getExtension() == 'php')
{
$files[] = $file_info->getFilename();
}
}
return $files;
}
function validate_argument_count($arguments, $count)
{
if ($arguments <= $count)
{
usage();
}
}
validate_argument_count($argc, 1);
$action = $argv[1];
switch ($action)
{
case 'acp':
export_from_eventsmd($phpbb_root_path, 'acp');
break;
case 'styles':
export_from_eventsmd($phpbb_root_path, 'styles');
break;
case 'php':
export_from_php($phpbb_root_path);
break;
default:
usage();
}

View file

@ -1,41 +1,49 @@
acp_forums_normal_settings_append acp_forums_normal_settings_append
=== ===
* Location: adm/style/acp_forums.html * Location: adm/style/acp_forums.html
* Since: 3.1.0-a1
* Purpose: Add settings to forums * Purpose: Add settings to forums
acp_main_actions_append acp_main_actions_append
=== ===
* Location: adm/style/acp_main.html * Location: adm/style/acp_main.html
* Since: 3.1.0-a1
* Purpose: Add actions to the ACP main page below the cache purge action * Purpose: Add actions to the ACP main page below the cache purge action
acp_main_notice_after acp_main_notice_after
=== ===
* Location: adm/style/acp_main.html * Location: adm/style/acp_main.html
* Since: 3.1.0-a1
* Purpose: Add notices or other blocks in the ACP below other configuration notices * Purpose: Add notices or other blocks in the ACP below other configuration notices
acp_overall_footer_after acp_overall_footer_after
=== ===
* Location: adm/style/overall_footer.html * Location: adm/style/overall_footer.html
* Since: 3.1.0-a1
* Purpose: Add content below the footer in the ACP * Purpose: Add content below the footer in the ACP
acp_overall_header_head_append acp_overall_header_head_append
=== ===
* Location: adm/style/overall_header.html * Location: adm/style/overall_header.html
* Add assets within the `<head>` tags in the ACP * Since: 3.1.0-a1
* Purpose: Add assets within the `<head>` tags in the ACP
acp_simple_footer_after acp_simple_footer_after
=== ===
* Location: adm/style/simple_footer.html * Location: adm/style/simple_footer.html
* Since: 3.1.0-a1
* Purpose: Add content below the simple footer in the ACP * Purpose: Add content below the simple footer in the ACP
acp_simple_header_head_append acp_simple_header_head_append
=== ===
* Location: adm/style/overall_header.html * Location: adm/style/overall_header.html
* Add assets within the `<head>` tags in the simple header of the ACP * Since: 3.1.0-a1
* Purpose: Add assets within the `<head>` tags in the simple header of the ACP
acp_users_overview_options_append acp_users_overview_options_append
=== ===
* Location: adm/style/acp_users.html * Location: adm/style/acp_users.html
* Since: 3.1.0-a1
* Purpose: Add options and settings on user overview page * Purpose: Add options and settings on user overview page
forumlist_body_last_post_title_prepend forumlist_body_last_post_title_prepend
@ -43,6 +51,7 @@ forumlist_body_last_post_title_prepend
* Locations: * Locations:
+ styles/prosilver/template/forumlist_body.html + styles/prosilver/template/forumlist_body.html
+ styles/subsilver2/template/forumlist_body.html + styles/subsilver2/template/forumlist_body.html
* Since: 3.1.0-a1
* Purpose: Add content before the post title of the latest post in a forum on the forum list. * Purpose: Add content before the post title of the latest post in a forum on the forum list.
index_body_stat_blocks_before index_body_stat_blocks_before
@ -50,6 +59,7 @@ index_body_stat_blocks_before
* Locations: * Locations:
+ styles/prosilver/template/index_body.html + styles/prosilver/template/index_body.html
+ styles/subsilver2/template/index_body.html + styles/subsilver2/template/index_body.html
* Since: 3.1.0-a1
* Purpose: Add new statistic blocks above the Who Is Online and Board Statistics blocks * Purpose: Add new statistic blocks above the Who Is Online and Board Statistics blocks
memberlist_body_username_append memberlist_body_username_append
@ -57,6 +67,7 @@ memberlist_body_username_append
* Locations: * Locations:
+ styles/prosilver/template/memberlist_body.html + styles/prosilver/template/memberlist_body.html
+ styles/subsilver2/template/memberlist_body.html + styles/subsilver2/template/memberlist_body.html
* Since: 3.1.0-a1
* Purpose: Add information after every username in the memberlist. Works in * Purpose: Add information after every username in the memberlist. Works in
all display modes (leader, group and normal memberlist). all display modes (leader, group and normal memberlist).
@ -65,6 +76,7 @@ memberlist_body_username_prepend
* Locations: * Locations:
+ styles/prosilver/template/memberlist_body.html + styles/prosilver/template/memberlist_body.html
+ styles/subsilver2/template/memberlist_body.html + styles/subsilver2/template/memberlist_body.html
* Since: 3.1.0-a1
* Purpose: Add information before every username in the memberlist. Works in * Purpose: Add information before every username in the memberlist. Works in
all display modes (leader, group and normal memberlist). all display modes (leader, group and normal memberlist).
@ -73,6 +85,7 @@ memberlist_view_user_statistics_after
* Locations: * Locations:
+ styles/prosilver/template/memberlist_view.html + styles/prosilver/template/memberlist_view.html
+ styles/subsilver2/template/memberlist_view.html + styles/subsilver2/template/memberlist_view.html
* Since: 3.1.0-a1
* Purpose: Add entries after the user statistics part of any user profile * Purpose: Add entries after the user statistics part of any user profile
memberlist_view_user_statistics_before memberlist_view_user_statistics_before
@ -80,6 +93,7 @@ memberlist_view_user_statistics_before
* Locations: * Locations:
+ styles/prosilver/template/memberlist_view.html + styles/prosilver/template/memberlist_view.html
+ styles/subsilver2/template/memberlist_view.html + styles/subsilver2/template/memberlist_view.html
* Since: 3.1.0-a1
* Purpose: Add entries before the user statistics part of any user profile * Purpose: Add entries before the user statistics part of any user profile
overall_footer_after overall_footer_after
@ -87,11 +101,14 @@ overall_footer_after
* Locations: * Locations:
+ styles/prosilver/template/overall_footer.html + styles/prosilver/template/overall_footer.html
+ styles/subsilver2/template/overall_footer.html + styles/subsilver2/template/overall_footer.html
* Since: 3.1.0-a1
* Purpose: Add content at the end of the file, directly prior to the `</body>` tag * Purpose: Add content at the end of the file, directly prior to the `</body>` tag
overall_footer_breadcrumb_append overall_footer_breadcrumb_append
=== ===
* Location: styles/prosilver/template/overall_footer.html * Locations:
+ styles/prosilver/template/overall_footer.html
* Since: 3.1.0-a1
* Purpose: Add links to the list of breadcrumbs in the footer * Purpose: Add links to the list of breadcrumbs in the footer
overall_footer_copyright_append overall_footer_copyright_append
@ -99,6 +116,7 @@ overall_footer_copyright_append
* Locations: * Locations:
+ styles/prosilver/template/overall_footer.html + styles/prosilver/template/overall_footer.html
+ styles/subsilver2/template/overall_footer.html + styles/subsilver2/template/overall_footer.html
* Since: 3.1.0-a1
* Purpose: Add content after the copyright line (no new line by default), before the ACP link * Purpose: Add content after the copyright line (no new line by default), before the ACP link
overall_footer_copyright_prepend overall_footer_copyright_prepend
@ -106,6 +124,7 @@ overall_footer_copyright_prepend
* Locations: * Locations:
+ styles/prosilver/template/overall_footer.html + styles/prosilver/template/overall_footer.html
+ styles/subsilver2/template/overall_footer.html + styles/subsilver2/template/overall_footer.html
* Since: 3.1.0-a1
* Purpose: Add content before the copyright line * Purpose: Add content before the copyright line
overall_header_breadcrumb_append overall_header_breadcrumb_append
@ -113,6 +132,7 @@ overall_header_breadcrumb_append
* Locations: * Locations:
+ styles/prosilver/template/overall_header.html + styles/prosilver/template/overall_header.html
+ styles/subsilver2/template/breadcrumbs.html + styles/subsilver2/template/breadcrumbs.html
* Since: 3.1.0-a1
* Purpose: Add links to the list of breadcrumbs in the header * Purpose: Add links to the list of breadcrumbs in the header
overall_header_head_append overall_header_head_append
@ -120,16 +140,21 @@ overall_header_head_append
* Locations: * Locations:
+ styles/prosilver/template/overall_header.html + styles/prosilver/template/overall_header.html
+ styles/subsilver2/template/overall_header.html + styles/subsilver2/template/overall_header.html
* Since: 3.1.0-a1
* Purpose: Add asset calls directly before the `</head>` tag * Purpose: Add asset calls directly before the `</head>` tag
overall_header_navigation_append overall_header_navigation_append
=== ===
* Location: styles/prosilver/template/overall_header.html * Locations:
+ styles/prosilver/template/overall_header.html
* Since: 3.1.0-a1
* Purpose: Add links after the navigation links in the header * Purpose: Add links after the navigation links in the header
overall_header_navigation_prepend overall_header_navigation_prepend
=== ===
* Location: styles/prosilver/template/overall_header.html * Locations:
+ styles/prosilver/template/overall_header.html
* Since: 3.1.0-a1
* Purpose: Add links before the navigation links in the header * Purpose: Add links before the navigation links in the header
posting_editor_options_prepend posting_editor_options_prepend
@ -137,11 +162,14 @@ posting_editor_options_prepend
* Locations: * Locations:
+ styles/prosilver/template/posting_editor.html + styles/prosilver/template/posting_editor.html
+ styles/prosilver/template/posting_body.html + styles/prosilver/template/posting_body.html
* Since: 3.1.0-a1
* Purpose: Add posting options on the posting screen * Purpose: Add posting options on the posting screen
simple_footer_after simple_footer_after
=== ===
* Location: styles/prosilver/template/simple_footer.html * Locations:
+ styles/prosilver/template/simple_footer.html
* Since: 3.1.0-a1
* Purpose: Add content directly prior to the `</body>` tag of the simple footer * Purpose: Add content directly prior to the `</body>` tag of the simple footer
topiclist_row_prepend topiclist_row_prepend
@ -151,6 +179,7 @@ topiclist_row_prepend
+ styles/prosilver/template/viewforum_body.html + styles/prosilver/template/viewforum_body.html
+ styles/subsilver2/template/search_results.html + styles/subsilver2/template/search_results.html
+ styles/subsilver2/template/viewforum_body.html + styles/subsilver2/template/viewforum_body.html
* Since: 3.1.0-a1
* Purpose: Add content into topic rows (inside the elements containing topic titles) * Purpose: Add content into topic rows (inside the elements containing topic titles)
topiclist_row_append topiclist_row_append
@ -160,23 +189,30 @@ topiclist_row_append
+ styles/prosilver/template/viewforum_body.html + styles/prosilver/template/viewforum_body.html
+ styles/subsilver2/template/search_results.html + styles/subsilver2/template/search_results.html
+ styles/subsilver2/template/viewforum_body.html + styles/subsilver2/template/viewforum_body.html
* Since: 3.1.0-a1
* Purpose: Add content into topic rows (inside the elements containing topic titles) * Purpose: Add content into topic rows (inside the elements containing topic titles)
ucp_pm_viewmessage_custom_fields_after ucp_pm_viewmessage_custom_fields_after
=== ===
* Location: styles/prosilver/template/ucp_pm_viewmessage.html * Locations:
+ styles/prosilver/template/ucp_pm_viewmessage.html
* Since: 3.1.0-a1
* Purpose: Add data after the custom fields on the user profile when viewing * Purpose: Add data after the custom fields on the user profile when viewing
a private message a private message
ucp_pm_viewmessage_custom_fields_before ucp_pm_viewmessage_custom_fields_before
=== ===
* Location: styles/prosilver/template/ucp_pm_viewmessage.html * Locations:
+ styles/prosilver/template/ucp_pm_viewmessage.html
* Since: 3.1.0-a1
* Purpose: Add data before the custom fields on the user profile when viewing * Purpose: Add data before the custom fields on the user profile when viewing
a private message a private message
ucp_pm_viewmessage_print_head_append ucp_pm_viewmessage_print_head_append
=== ===
* Location: styles/prosilver/template/ucp_pm_viewmessage_print.html * Locations:
+ styles/prosilver/template/ucp_pm_viewmessage_print.html
* Since: 3.1.0-a1
* Purpose: Add asset calls directly before the `</head>` tag of the Print PM screen * Purpose: Add asset calls directly before the `</head>` tag of the Print PM screen
ucp_prefs_personal_prepend ucp_prefs_personal_prepend
@ -184,6 +220,7 @@ ucp_prefs_personal_prepend
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_personal.html + styles/prosilver/template/ucp_prefs_personal.html
+ styles/subsilver2/template/ucp_prefs_personal.html + styles/subsilver2/template/ucp_prefs_personal.html
* Since: 3.1.0-a1
* Purpose: Add user options to the top of the Edit Global Settings block * Purpose: Add user options to the top of the Edit Global Settings block
ucp_prefs_personal_append ucp_prefs_personal_append
@ -191,6 +228,7 @@ ucp_prefs_personal_append
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_personal.html + styles/prosilver/template/ucp_prefs_personal.html
+ styles/subsilver2/template/ucp_prefs_personal.html + styles/subsilver2/template/ucp_prefs_personal.html
* Since: 3.1.0-a1
* Purpose: Add user options to the bottom of the Edit Global Settings block * Purpose: Add user options to the bottom of the Edit Global Settings block
ucp_prefs_post_prepend ucp_prefs_post_prepend
@ -198,6 +236,7 @@ ucp_prefs_post_prepend
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_post.html + styles/prosilver/template/ucp_prefs_post.html
+ styles/subsilver2/template/ucp_prefs_post.html + styles/subsilver2/template/ucp_prefs_post.html
* Since: 3.1.0-a1
* Purpose: Add user options to the top of the Edit Posting Defaults block * Purpose: Add user options to the top of the Edit Posting Defaults block
ucp_prefs_post_append ucp_prefs_post_append
@ -205,6 +244,7 @@ ucp_prefs_post_append
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_post.html + styles/prosilver/template/ucp_prefs_post.html
+ styles/subsilver2/template/ucp_prefs_post.html + styles/subsilver2/template/ucp_prefs_post.html
* Since: 3.1.0-a1
* Purpose: Add user options to the bottom of the Edit Posting Defaults block * Purpose: Add user options to the bottom of the Edit Posting Defaults block
ucp_prefs_view_radio_buttons_prepend ucp_prefs_view_radio_buttons_prepend
@ -212,6 +252,7 @@ ucp_prefs_view_radio_buttons_prepend
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_view.html + styles/prosilver/template/ucp_prefs_view.html
+ styles/subsilver2/template/ucp_prefs_view.html + styles/subsilver2/template/ucp_prefs_view.html
* Since: 3.1.0-a1
* Purpose: Add options to the top of the radio buttons block of the Edit * Purpose: Add options to the top of the radio buttons block of the Edit
Display Options screen Display Options screen
@ -220,6 +261,7 @@ ucp_prefs_view_radio_buttons_append
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_view.html + styles/prosilver/template/ucp_prefs_view.html
+ styles/subsilver2/template/ucp_prefs_view.html + styles/subsilver2/template/ucp_prefs_view.html
* Since: 3.1.0-a1
* Purpose: Add options to the bottom of the radio buttons block of the Edit * Purpose: Add options to the bottom of the radio buttons block of the Edit
Display Options screen Display Options screen
@ -228,6 +270,7 @@ ucp_prefs_view_select_menu_prepend
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_view.html + styles/prosilver/template/ucp_prefs_view.html
+ styles/subsilver2/template/ucp_prefs_view.html + styles/subsilver2/template/ucp_prefs_view.html
* Since: 3.1.0-a1
* Purpose: Add options to the top of the drop-down lists block of the Edit * Purpose: Add options to the top of the drop-down lists block of the Edit
Display Options screen Display Options screen
@ -236,12 +279,15 @@ ucp_prefs_view_select_menu_append
* Locations: * Locations:
+ styles/prosilver/template/ucp_prefs_view.html + styles/prosilver/template/ucp_prefs_view.html
+ styles/subsilver2/template/ucp_prefs_view.html + styles/subsilver2/template/ucp_prefs_view.html
* Since: 3.1.0-a1
* Purpose: Add options to the bottom of the drop-down lists block of the Edit * Purpose: Add options to the bottom of the drop-down lists block of the Edit
Display Options screen Display Options screen
viewtopic_print_head_append viewtopic_print_head_append
=== ===
* Location: styles/prosilver/template/viewtopic_print.html * Locations:
+ styles/prosilver/template/viewtopic_print.html
* Since: 3.1.0-a1
* Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen * Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
viewtopic_body_footer_before viewtopic_body_footer_before
@ -249,6 +295,7 @@ viewtopic_body_footer_before
* Locations: * Locations:
+ styles/prosilver/template/viewtopic_body.html + styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/template/viewtopic_body.html + styles/subsilver2/template/viewtopic_body.html
* Since: 3.1.0-a1
* Purpose: Add content to the bottom of the View topic screen below the posts * Purpose: Add content to the bottom of the View topic screen below the posts
and quick reply, directly before the jumpbox in Prosilver, breadcrumbs in and quick reply, directly before the jumpbox in Prosilver, breadcrumbs in
Subsilver2. Subsilver2.
@ -258,6 +305,7 @@ viewtopic_body_post_buttons_after
* Locations: * Locations:
+ styles/prosilver/template/viewtopic_body.html + styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/template/viewtopic_body.html + styles/subsilver2/template/viewtopic_body.html
* Since: 3.1.0-a1
* Purpose: Add post button to posts (next to edit, quote etc), at the end of * Purpose: Add post button to posts (next to edit, quote etc), at the end of
the list. the list.
@ -266,6 +314,7 @@ viewtopic_body_post_buttons_before
* Locations: * Locations:
+ styles/prosilver/template/viewtopic_body.html + styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/template/viewtopic_body.html + styles/subsilver2/template/viewtopic_body.html
* Since: 3.1.0-a1
* Purpose: Add post button to posts (next to edit, quote etc), at the start of * Purpose: Add post button to posts (next to edit, quote etc), at the start of
the list. the list.
@ -274,6 +323,7 @@ viewtopic_body_postrow_custom_fields_after
* Locations: * Locations:
+ styles/prosilver/template/viewtopic_body.html + styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/template/viewtopic_body.html + styles/subsilver2/template/viewtopic_body.html
* Since: 3.1.0-a1
* Purpose: Add data after the custom fields on the user profile when viewing * Purpose: Add data after the custom fields on the user profile when viewing
a post a post
@ -282,6 +332,7 @@ viewtopic_body_postrow_custom_fields_before
* Locations: * Locations:
+ styles/prosilver/template/viewtopic_body.html + styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/template/viewtopic_body.html + styles/subsilver2/template/viewtopic_body.html
* Since: 3.1.0-a1
* Purpose: Add data before the custom fields on the user profile when viewing * Purpose: Add data before the custom fields on the user profile when viewing
a post a post
@ -290,4 +341,5 @@ viewtopic_topic_title_prepend
* Locations: * Locations:
+ styles/prosilver/template/viewtopic_body.html + styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/template/viewtopic_body.html + styles/subsilver2/template/viewtopic_body.html
* Since: 3.1.0-a1
* Purpose: Add content directly before the topic title link on the View topic screen * Purpose: Add content directly before the topic title link on the View topic screen

View file

@ -1470,7 +1470,7 @@ class acp_forums
/** /**
* Event when we move content from one forum to another * Event when we move content from one forum to another
* *
* @event core.acp_manage_forums_move_children * @event core.acp_manage_forums_move_content
* @var int from_id If of the current parent forum * @var int from_id If of the current parent forum
* @var int to_id If of the new parent forum * @var int to_id If of the new parent forum
* @var bool sync Shall we sync the "to"-forum's data * @var bool sync Shall we sync the "to"-forum's data

View file

@ -5597,14 +5597,14 @@ function garbage_collection()
global $cache, $db; global $cache, $db;
global $phpbb_dispatcher; global $phpbb_dispatcher;
if (!empty($phpbb_dispatcher))
{
/** /**
* Unload some objects, to free some memory, before we finish our task * Unload some objects, to free some memory, before we finish our task
* *
* @event core.garbage_collection * @event core.garbage_collection
* @since 3.1-A1 * @since 3.1-A1
*/ */
if (!empty($phpbb_dispatcher))
{
$phpbb_dispatcher->dispatch('core.garbage_collection'); $phpbb_dispatcher->dispatch('core.garbage_collection');
} }

View file

@ -64,7 +64,7 @@ class ucp_zebra
* @var array user_ids User ids we remove * @var array user_ids User ids we remove
* @since 3.1-A1 * @since 3.1-A1
*/ */
$vars = array('user_ids'); $vars = array('mode', 'user_ids');
extract($phpbb_dispatcher->trigger_event('core.ucp_remove_zebra', compact($vars))); extract($phpbb_dispatcher->trigger_event('core.ucp_remove_zebra', compact($vars)));
$sql = 'DELETE FROM ' . ZEBRA_TABLE . ' $sql = 'DELETE FROM ' . ZEBRA_TABLE . '

View file

@ -1525,7 +1525,7 @@ $template->assign_vars(array(
* @event core.posting_modify_template_vars * @event core.posting_modify_template_vars
* @since 3.1-A1 * @since 3.1-A1
*/ */
$phpbb_dispatcher->trigger_event('core.posting_modify_template_vars'); $phpbb_dispatcher->dispatch('core.posting_modify_template_vars');
// Build custom bbcodes array // Build custom bbcodes array
display_custom_bbcodes(); display_custom_bbcodes();