[ticket/9657] Keep approval state of posts/topics when copying them

PHPBB3-9657
This commit is contained in:
Joas Schilling 2013-07-13 00:54:39 -04:00
parent da38d13094
commit 28e3341fcd

View file

@ -1144,10 +1144,10 @@ function mcp_fork_topic($topic_ids)
{ {
$topic_data = get_topic_data($topic_ids, 'f_post'); $topic_data = get_topic_data($topic_ids, 'f_post');
$total_posts = 0; $total_topics = $total_topics_unapproved = $total_topics_softdeleted = 0;
$total_posts = $total_posts_unapproved = $total_posts_softdeleted = 0;
$new_topic_id_list = array(); $new_topic_id_list = array();
foreach ($topic_data as $topic_id => $topic_row) foreach ($topic_data as $topic_id => $topic_row)
{ {
if (!isset($search_type) && $topic_row['enable_indexing']) if (!isset($search_type) && $topic_row['enable_indexing'])
@ -1178,7 +1178,7 @@ function mcp_fork_topic($topic_ids)
'forum_id' => (int) $to_forum_id, 'forum_id' => (int) $to_forum_id,
'icon_id' => (int) $topic_row['icon_id'], 'icon_id' => (int) $topic_row['icon_id'],
'topic_attachment' => (int) $topic_row['topic_attachment'], 'topic_attachment' => (int) $topic_row['topic_attachment'],
'topic_visibility' => ITEM_APPROVED, 'topic_visibility' => (int) $topic_row['topic_visibility'],
'topic_reported' => 0, 'topic_reported' => 0,
'topic_title' => (string) $topic_row['topic_title'], 'topic_title' => (string) $topic_row['topic_title'],
'topic_poster' => (int) $topic_row['topic_poster'], 'topic_poster' => (int) $topic_row['topic_poster'],
@ -1206,6 +1206,19 @@ function mcp_fork_topic($topic_ids)
$new_topic_id = $db->sql_nextid(); $new_topic_id = $db->sql_nextid();
$new_topic_id_list[$topic_id] = $new_topic_id; $new_topic_id_list[$topic_id] = $new_topic_id;
switch ($topic_row['topic_visibility'])
{
case ITEM_APPROVED:
$total_topics++;
break;
case ITEM_UNAPPROVED:
$total_topics_unapproved++;
break;
case ITEM_DELETED:
$total_topics_softdeleted++;
break;
}
if ($topic_row['poll_start']) if ($topic_row['poll_start'])
{ {
$poll_rows = array(); $poll_rows = array();
@ -1246,7 +1259,6 @@ function mcp_fork_topic($topic_ids)
continue; continue;
} }
$total_posts += sizeof($post_rows);
foreach ($post_rows as $row) foreach ($post_rows as $row)
{ {
$sql_ary = array( $sql_ary = array(
@ -1256,7 +1268,7 @@ function mcp_fork_topic($topic_ids)
'icon_id' => (int) $row['icon_id'], 'icon_id' => (int) $row['icon_id'],
'poster_ip' => (string) $row['poster_ip'], 'poster_ip' => (string) $row['poster_ip'],
'post_time' => (int) $row['post_time'], 'post_time' => (int) $row['post_time'],
'post_visibility' => ITEM_APPROVED, 'post_visibility' => (int) $row['post_visibility'],
'post_reported' => 0, 'post_reported' => 0,
'enable_bbcode' => (int) $row['enable_bbcode'], 'enable_bbcode' => (int) $row['enable_bbcode'],
'enable_smilies' => (int) $row['enable_smilies'], 'enable_smilies' => (int) $row['enable_smilies'],
@ -1280,6 +1292,19 @@ function mcp_fork_topic($topic_ids)
$db->sql_query('INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); $db->sql_query('INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
$new_post_id = $db->sql_nextid(); $new_post_id = $db->sql_nextid();
switch ($row['post_visibility'])
{
case ITEM_APPROVED:
$total_posts++;
break;
case ITEM_UNAPPROVED:
$total_posts_unapproved++;
break;
case ITEM_DELETED:
$total_posts_softdeleted++;
break;
}
// Copy whether the topic is dotted // Copy whether the topic is dotted
markread('post', $to_forum_id, $new_topic_id, 0, $row['poster_id']); markread('post', $to_forum_id, $new_topic_id, 0, $row['poster_id']);
@ -1374,7 +1399,11 @@ function mcp_fork_topic($topic_ids)
// Sync new topics, parent forums and board stats // Sync new topics, parent forums and board stats
$sql = 'UPDATE ' . FORUMS_TABLE . ' $sql = 'UPDATE ' . FORUMS_TABLE . '
SET forum_posts_approved = forum_posts_approved + ' . $total_posts . ', SET forum_posts_approved = forum_posts_approved + ' . $total_posts . ',
forum_topics_approved = forum_topics_approved + ' . sizeof($new_topic_id_list) . ' forum_posts_unapproved = forum_posts_unapproved + ' . $total_posts_unapproved . ',
forum_posts_softdeleted = forum_posts_softdeleted + ' . $total_posts_softdeleted . ',
forum_topics_approved = forum_topics_approved + ' . $total_topics . ',
forum_topics_unapproved = forum_topics_unapproved + ' . $total_topics_unapproved . ',
forum_topics_softdeleted = forum_topics_softdeleted + ' . $total_topics_softdeleted . '
WHERE forum_id = ' . $to_forum_id; WHERE forum_id = ' . $to_forum_id;
$db->sql_query($sql); $db->sql_query($sql);