From 68c3a0307de19fdefd7ae716247fffea3ee30c0c Mon Sep 17 00:00:00 2001 From: rxu Date: Wed, 16 Aug 2017 21:57:11 +0700 Subject: [ticket/15324] Add more core and template events PHPBB3-15324 --- phpBB/docs/events.md | 14 ++++++++++ phpBB/includes/functions_posting.php | 20 ++++++++++++--- phpBB/includes/functions_user.php | 4 ++- phpBB/includes/message_parser.php | 30 +++++++++++++++++++++- phpBB/memberlist.php | 18 +++++++++++-- phpBB/posting.php | 21 +++++++++++++++ .../prosilver/template/posting_attach_body.html | 2 ++ phpBB/viewforum.php | 10 ++++++++ 8 files changed, 112 insertions(+), 7 deletions(-) diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 8bece6465e..930d540c89 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -1483,6 +1483,20 @@ overall_header_stylesheets_after * Purpose: Add asset calls after stylesheets within the `` tag. Note that INCLUDECSS will not work with this event. +posting_attach_body_attach_row_controls_append +=== +* Locations: + + styles/prosilver/template/posting_attach_body.html +* Since: 3.2.2-RC1 +* Purpose: Add content after attachment control elements + +posting_attach_body_attach_row_controls_prepend +=== +* Locations: + + styles/prosilver/template/posting_attach_body.html +* Since: 3.2.2-RC1 +* Purpose: Add content before attachment control elements + posting_editor_add_panel_tab === * Locations: diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index afa4bb56c4..d9f395efb3 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -712,7 +712,7 @@ function posting_gen_inline_attachments(&$attachment_data) */ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_attach_box = true) { - global $template, $config, $phpbb_root_path, $phpEx, $user; + global $template, $config, $phpbb_root_path, $phpEx, $user, $phpbb_dispatcher; // Some default template variables $template->assign_vars(array( @@ -730,6 +730,7 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a foreach ($attachment_data as $count => $attach_row) { $hidden = ''; + $attachrow_template_vars = array(); $attach_row['real_filename'] = utf8_basename($attach_row['real_filename']); foreach ($attach_row as $key => $value) @@ -739,7 +740,7 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a $download_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'mode=view&id=' . (int) $attach_row['attach_id'], true, ($attach_row['is_orphan']) ? $user->session_id : false); - $template->assign_block_vars('attach_row', array( + $attachrow_template_vars[(int) $attach_row['attach_id']] = array( 'FILENAME' => utf8_basename($attach_row['real_filename']), 'A_FILENAME' => addslashes(utf8_basename($attach_row['real_filename'])), 'FILE_COMMENT' => $attach_row['attach_comment'], @@ -749,9 +750,22 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a 'FILESIZE' => get_formatted_filesize($attach_row['filesize']), 'U_VIEW_ATTACHMENT' => $download_link, - 'S_HIDDEN' => $hidden) + 'S_HIDDEN' => $hidden, ); } + + /** + * Modify inline attachments template vars + * + * @event core.modify_inline_attachments_template_vars + * @var array attachment_data Array containing attachments data + * @var array attachrow_template_vars Array containing attachments template vars + * @since 3.2.2-RC1 + */ + $vars = array('attachment_data', 'attachrow_template_vars'); + extract($phpbb_dispatcher->trigger_event('core.modify_inline_attachments_template_vars', compact($vars))); + + $template->assign_block_vars_array('attach_row', $attachrow_template_vars); } return sizeof($attachment_data); diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 3dd4b3c2e5..c746bd0e4c 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -734,9 +734,11 @@ function user_delete($mode, $user_ids, $retain_username = true) * @var array user_ids IDs of the deleted user * @var mixed retain_username True if username should be retained * or false if not + * @var array user_rows Array containing data of the deleted users * @since 3.1.0-a1 + * @changed 3.2.2-RC1 Added user_rows */ - $vars = array('mode', 'user_ids', 'retain_username'); + $vars = array('mode', 'user_ids', 'retain_username', 'user_rows'); extract($phpbb_dispatcher->trigger_event('core.delete_user_after', compact($vars))); // Reset newest user info if appropriate diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index d6e36fec39..d397c0084e 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1530,7 +1530,7 @@ class parse_message extends bbcode_firstpass function parse_attachments($form_name, $mode, $forum_id, $submit, $preview, $refresh, $is_message = false) { global $config, $auth, $user, $phpbb_root_path, $phpEx, $db, $request; - global $phpbb_container; + global $phpbb_container, $phpbb_dispatcher; $error = array(); @@ -1598,6 +1598,20 @@ class parse_message extends bbcode_firstpass ); $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data); + + /** + * Modify attachment data on submit + * + * @event core.modify_attachment_data_on_submit + * @var array attachment_data Array containing attachment data + * @since 3.2.2-RC1 + */ + $attachment_data = $this->attachment_data; + $vars = array('attachment_data'); + extract($phpbb_dispatcher->trigger_event('core.modify_attachment_data_on_submit', compact($vars))); + $this->attachment_data = $attachment_data; + unset($attachment_data); + $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) { return '[attachment='.($match[1] + 1).']' . $match[2] . '[/attachment]'; }, $this->message); @@ -1719,6 +1733,20 @@ class parse_message extends bbcode_firstpass ); $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data); + + /** + * Modify attachment data on upload + * + * @event core.modify_attachment_data_on_upload + * @var array attachment_data Array containing attachment data + * @since 3.2.2-RC1 + */ + $attachment_data = $this->attachment_data; + $vars = array('attachment_data'); + extract($phpbb_dispatcher->trigger_event('core.modify_attachment_data_on_upload', compact($vars))); + $this->attachment_data = $attachment_data; + unset($attachment_data); + $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) { return '[attachment=' . ($match[1] + 1) . ']' . $match[2] . '[/attachment]'; }, $this->message); diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index b4bf92836f..985b45acf7 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -1579,7 +1579,7 @@ switch ($mode) $pagination->generate_template_pagination($pagination_url, 'pagination', 'start', $total_users, $config['topics_per_page'], $start); // Generate page - $template->assign_vars(array( + $template_vars = array( 'TOTAL_USERS' => $user->lang('LIST_USERS', (int) $total_users), 'PROFILE_IMG' => $user->img('icon_user_profile', $user->lang['PROFILE']), @@ -1604,8 +1604,22 @@ switch ($mode) 'S_LEADERS_SET' => $leaders_set, 'S_MODE_SELECT' => $s_sort_key, 'S_ORDER_SELECT' => $s_sort_dir, - 'S_MODE_ACTION' => $pagination_url) + 'S_MODE_ACTION' => $pagination_url, ); + + /** + * Modify memberlist page template vars + * + * @event core.memberlist_modify_template_vars + * @var array params Array containing URL parameters + * @var string sort_url Sorting URL base + * @var array template_vars Array containing template vars + * @since 3.2.2-RC1 + */ + $vars = array('params', 'sort_url', 'template_vars'); + extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_template_vars', compact($vars))); + + $template->assign_vars($template_vars); } // Output the page diff --git a/phpBB/posting.php b/phpBB/posting.php index 5dc59fea6d..02bf1c1d07 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -547,6 +547,27 @@ if ($post_data['poll_start']) $db->sql_freeresult($result); } +/** +* This event allows you to modify the post data before parsing +* +* @event core.posting_modify_post_data +* @var int forum_id ID of the forum +* @var string mode What action to take if the form has been submitted +* post|reply|quote|edit|delete|bump|smilies|popup +* @var array post_data Array with post data +* @var int post_id ID of the post +* @var int topic_id ID of the topic +* @since 3.2.2-RC1 +*/ +$vars = array( + 'forum_id', + 'mode', + 'post_data', + 'post_id', + 'topic_id', +); +extract($phpbb_dispatcher->trigger_event('core.posting_modify_post_data', compact($vars))); + if ($mode == 'edit') { $original_poll_data = array( diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index 618ac95656..444713d6e0 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -59,10 +59,12 @@ {attach_row.FILENAME} +   + diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php index dff965a1ee..9cc75988f7 100644 --- a/phpBB/viewforum.php +++ b/phpBB/viewforum.php @@ -993,6 +993,16 @@ if (sizeof($topic_list)) } } +/** +* This event is to perform additional actions on viewforum page +* +* @event core.viewforum_generate_page_after +* @var array forum_data Array with the forum data +* @since 3.2.2-RC1 +*/ +$vars = array('forum_data'); +extract($phpbb_dispatcher->trigger_event('core.viewforum_generate_page_after', compact($vars))); + // This is rather a fudge but it's the best I can think of without requiring information // on all topics (as we do in 2.0.x). It looks for unread or new topics, if it doesn't find // any it updates the forum last read cookie. This requires that the user visit the forum -- cgit v1.2.1