1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-25 20:44:01 +01:00

Merge branch 'develop-ascraeus' into develop

* develop-ascraeus:
  [ticket/8610] Use css selector instead of xPath
  [ticket/8610] Add functional test when two topics are merged
  [ticket/8610] Throw an error when the dest topic isn't set
  [ticket/8610] Fix bookmarks when merging all the posts of a topic
  [ticket/8610] Merging topics does not handle bookmarks correctly
This commit is contained in:
Joas Schilling 2014-06-09 22:57:33 +02:00
commit 592624379f
3 changed files with 43 additions and 7 deletions

View File

@ -378,14 +378,22 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
return;
}
$topic_data = get_topic_data(array($to_topic_id), 'm_merge');
$sync_topics = array_merge($topic_ids, array($to_topic_id));
if (!sizeof($topic_data))
$topic_data = get_topic_data($sync_topics, 'm_merge');
if (!sizeof($topic_data) || empty($topic_data[$to_topic_id]))
{
$template->assign_var('MESSAGE', $user->lang['NO_FINAL_TOPIC_SELECTED']);
return;
}
$sync_forums = array();
foreach ($topic_data as $data)
{
$sync_forums[$data['forum_id']] = $data['forum_id'];
}
$topic_data = $topic_data[$to_topic_id];
$post_id_list = request_var('post_id_list', array(0));
@ -436,7 +444,7 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
{
$to_forum_id = $topic_data['forum_id'];
move_posts($post_id_list, $to_topic_id);
move_posts($post_id_list, $to_topic_id, false);
add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $topic_data['topic_title']);
// Message and return links
@ -453,6 +461,12 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
// Update the bookmarks table.
phpbb_update_rows_avoiding_duplicates($db, BOOKMARKS_TABLE, 'topic_id', $topic_ids, $to_topic_id);
// Re-sync the topics and forums because the auto-sync was deactivated in the call of move_posts()
sync('topic_reported', 'topic_id', $sync_topics);
sync('topic_attachment', 'topic_id', $sync_topics);
sync('topic', 'topic_id', $sync_topics, true);
sync('forum', 'forum_id', $sync_forums, true, true);
// Link to the new topic
$return_link .= (($return_link) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&amp;t=' . $to_topic_id) . '">', '</a>');
$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&amp;t=$to_topic_id");

View File

@ -592,14 +592,22 @@ function merge_posts($topic_id, $to_topic_id)
return;
}
$topic_data = get_topic_data(array($to_topic_id), 'm_merge');
$sync_topics = array($topic_id, $to_topic_id);
if (!sizeof($topic_data))
$topic_data = get_topic_data($sync_topics, 'm_merge');
if (!sizeof($topic_data) || empty($topic_data[$to_topic_id]))
{
$template->assign_var('MESSAGE', $user->lang['NO_FINAL_TOPIC_SELECTED']);
return;
}
$sync_forums = array();
foreach ($topic_data as $data)
{
$sync_forums[$data['forum_id']] = $data['forum_id'];
}
$topic_data = $topic_data[$to_topic_id];
$post_id_list = request_var('post_id_list', array(0));
@ -634,7 +642,7 @@ function merge_posts($topic_id, $to_topic_id)
{
$to_forum_id = $topic_data['forum_id'];
move_posts($post_id_list, $to_topic_id);
move_posts($post_id_list, $to_topic_id, false);
add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $topic_data['topic_title']);
// Message and return links
@ -642,7 +650,7 @@ function merge_posts($topic_id, $to_topic_id)
// Does the original topic still exist? If yes, link back to it
$sql = 'SELECT forum_id
FROM ' . TOPICS_TABLE . '
FROM ' . POSTS_TABLE . '
WHERE topic_id = ' . $topic_id;
$result = $db->sql_query_limit($sql, 1);
$row = $db->sql_fetchrow($result);
@ -666,6 +674,12 @@ function merge_posts($topic_id, $to_topic_id)
phpbb_update_rows_avoiding_duplicates($db, BOOKMARKS_TABLE, 'topic_id', array($topic_id), $to_topic_id);
}
// Re-sync the topics and forums because the auto-sync was deactivated in the call of move_posts()
sync('topic_reported', 'topic_id', $sync_topics);
sync('topic_attachment', 'topic_id', $sync_topics);
sync('topic', 'topic_id', $sync_topics, true);
sync('forum', 'forum_id', $sync_forums, true, true);
// Link to the new topic
$return_link .= (($return_link) ? '<br /><br />' : '') . sprintf($user->lang['RETURN_NEW_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $to_forum_id . '&amp;t=' . $to_topic_id) . '">', '</a>');
$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&amp;t=$to_topic_id");

View File

@ -595,8 +595,15 @@ class phpbb_functional_visibility_softdelete_test extends phpbb_functional_test_
'forum_last_post_id' => $this->data['posts']['Soft Delete Topic #1'],
), 'before merging #1');
$this->add_lang('viewtopic');
$crawler = self::request('GET', "viewtopic.php?t={$this->data['topics']['Soft Delete Topic #2']}&sid={$this->sid}");
$bookmark_tag = $crawler->filter('a.bookmark-link');
$this->assertContainsLang('BOOKMARK_TOPIC', $bookmark_tag->text());
$bookmark_link = $bookmark_tag->attr('href');
$crawler_bookmark = self::request('GET', $bookmark_link);
$this->assertContainsLang('BOOKMARK_ADDED', $crawler_bookmark->text());
$this->add_lang('mcp');
$form = $crawler->selectButton('Go')->eq(1)->form();
$form['action']->select('merge_topic');
@ -613,6 +620,7 @@ class phpbb_functional_visibility_softdelete_test extends phpbb_functional_test_
$crawler = self::request('GET', "viewtopic.php?t={$this->data['topics']['Soft Delete Topic #1']}&sid={$this->sid}");
$this->assertContains('Soft Delete Topic #1', $crawler->filter('h2')->text());
$this->assertContainsLang('POST_DELETED_ACTION', $crawler->filter('body')->text());
$this->assertContainsLang('BOOKMARK_TOPIC_REMOVE', $crawler->filter('body')->text());
$this->assert_forum_details($this->data['forums']['Soft Delete #1'], array(
'forum_posts_approved' => 1,