diff options
author | Tristan Darricau <github@nicofuma.fr> | 2017-04-19 23:00:37 +0200 |
---|---|---|
committer | Tristan Darricau <github@nicofuma.fr> | 2017-04-19 23:00:37 +0200 |
commit | a8d28d6bc8ee3914f35262e975f54b521bb3730c (patch) | |
tree | fa8588fc32152f0938aa5d14f902cb0ebc36cd21 /phpBB/includes/mcp | |
parent | 8ae7d2495c610b08355b8660bd5174cbd93f669b (diff) | |
parent | 02a35baf707885a02debbcfa9488b85cfcb017d9 (diff) | |
download | forums-a8d28d6bc8ee3914f35262e975f54b521bb3730c.tar forums-a8d28d6bc8ee3914f35262e975f54b521bb3730c.tar.gz forums-a8d28d6bc8ee3914f35262e975f54b521bb3730c.tar.bz2 forums-a8d28d6bc8ee3914f35262e975f54b521bb3730c.tar.xz forums-a8d28d6bc8ee3914f35262e975f54b521bb3730c.zip |
Merge pull request #4657 from marc1706/ticket/7336
[ticket/7336] Index first post when splitting topics
* github.com:phpbb/phpbb:
[ticket/7336] Index first post when splitting topics
[ticket/7336] Add tests for indexing first post after splitting topics
Diffstat (limited to 'phpBB/includes/mcp')
-rw-r--r-- | phpBB/includes/mcp/mcp_topic.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 2217f8fdeb..7dbe7787cb 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -407,6 +407,7 @@ function mcp_topic_view($id, $mode, $action) function split_topic($action, $topic_id, $to_forum_id, $subject) { global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $config; + global $phpbb_dispatcher; $post_id_list = request_var('post_id_list', array(0)); $forum_id = request_var('forum_id', 0); @@ -567,6 +568,47 @@ function split_topic($action, $topic_id, $to_forum_id, $subject) WHERE post_id = {$post_id_list[0]}"; $db->sql_query($sql); + // Grab data for first post in split topic + $sql_array = array( + 'SELECT' => 'p.post_id, p.forum_id, p.poster_id, p.post_text, f.enable_indexing', + 'FROM' => array( + POSTS_TABLE => 'p', + ), + 'LEFT_JOIN' => array( + array( + 'FROM' => array(FORUMS_TABLE => 'f'), + 'ON' => 'p.forum_id = f.forum_id', + ) + ), + 'WHERE' => "post_id = {$post_id_list[0]}", + ); + $sql = $db->sql_build_query('SELECT', $sql_array); + $result = $db->sql_query($sql); + $first_post_data = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + // Index first post as if it were edited + if ($first_post_data['enable_indexing']) + { + // Select the search method and do some additional checks to ensure it can actually be utilised + $search_type = $config['search_type']; + + if (!class_exists($search_type)) + { + trigger_error('NO_SUCH_SEARCH_MODULE'); + } + + $error = false; + $search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher); + + if ($error) + { + trigger_error($error); + } + + $search->index('edit', $first_post_data['post_id'], $first_post_data['post_text'], $subject, $first_post_data['poster_id'], $first_post_data['forum_id']); + } + // Copy topic subscriptions to new topic $sql = 'SELECT user_id, notify_status FROM ' . TOPICS_WATCH_TABLE . ' |