From b8c55291ed7ed86565be2bc651bf20eb1a9ed4dd Mon Sep 17 00:00:00 2001 From: Josh Woody Date: Thu, 17 Jun 2010 23:58:18 -0500 Subject: [feature/soft-delete] Lay the groundwork for a soft-delete feature So far, I've added no new functionality. The biggest change here is adjusting the DB column names to "visibility" rather than "approved". Some things here are pretty likely to change, for example the name and location of the topic_visibility class. Happy birthday phpBB :) PHPBB3-9657 --- phpBB/mcp.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index d04a297cf9..984925789f 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -483,7 +483,7 @@ function get_post_data($post_ids, $acl_list = false, $read_tracking = false) continue; } - if (!$row['post_approved'] && !$auth->acl_get('m_approve', $row['forum_id'])) + if ($row['post_visibility'] == ITEM_UNAPPROVED && !$auth->acl_get('m_approve', $row['forum_id'])) { // Moderators without the permission to approve post should at least not see them. ;) continue; @@ -619,7 +619,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, if (!$auth->acl_get('m_approve', $forum_id)) { - $sql .= 'AND topic_approved = 1'; + $sql .= 'AND post_visibility = ' . ITEM_APPROVED; } break; @@ -635,7 +635,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, if (!$auth->acl_get('m_approve', $forum_id)) { - $sql .= 'AND post_approved = 1'; + $sql .= 'AND post_visibility = ' . ITEM_APPROVED; } break; @@ -648,7 +648,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, $sql = 'SELECT COUNT(p.post_id) AS total FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . " t $where_sql " . $db->sql_in_set('p.forum_id', ($forum_id) ? array($forum_id) : array_intersect(get_forum_list('f_read'), get_forum_list('m_approve'))) . ' - AND p.post_approved = 0 + AND p.post_visibility = ' . ITEM_UNAPPROVED . ' AND t.topic_id = p.topic_id AND t.topic_first_post_id <> p.post_id'; @@ -666,7 +666,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, $sql = 'SELECT COUNT(topic_id) AS total FROM ' . TOPICS_TABLE . " $where_sql " . $db->sql_in_set('forum_id', ($forum_id) ? array($forum_id) : array_intersect(get_forum_list('f_read'), get_forum_list('m_approve'))) . ' - AND topic_approved = 0'; + AND topic_visibility = ' . ITEM_UNAPPROVED; if ($min_time) { -- cgit v1.2.1 From fb13ab83e476d2afbc7bb181f7ab90df98f996da Mon Sep 17 00:00:00 2001 From: Josh Woody Date: Sun, 27 Jun 2010 14:22:36 -0500 Subject: [feature/soft-delete] Implement the ability to soft-delete and restore posts The soft delete feature seems to work. Tests are pending. A real icon is pending. Add the permissions and the interface to soft-delete posts. Also able to restore posts via the MCP queue PHPBB3-9657 --- phpBB/mcp.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 984925789f..9877c469b9 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -640,6 +640,8 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, break; case 'unapproved_posts': + case 'deleted_posts': + $visibility_const = ($mode == 'unapproved_posts') ? ITEM_UNAPPROVED : ITEM_DELETED; $type = 'posts'; $default_key = 't'; $default_dir = 'd'; @@ -648,7 +650,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, $sql = 'SELECT COUNT(p.post_id) AS total FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . " t $where_sql " . $db->sql_in_set('p.forum_id', ($forum_id) ? array($forum_id) : array_intersect(get_forum_list('f_read'), get_forum_list('m_approve'))) . ' - AND p.post_visibility = ' . ITEM_UNAPPROVED . ' + AND p.post_visibility = ' . $visibility_const . ' AND t.topic_id = p.topic_id AND t.topic_first_post_id <> p.post_id'; @@ -796,7 +798,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, 'S_SELECT_SORT_DAYS' => $s_limit_days) ); - if (($sort_days && $mode != 'viewlogs') || in_array($mode, array('reports', 'unapproved_topics', 'unapproved_posts')) || $where_sql != 'WHERE') + if (($sort_days && $mode != 'viewlogs') || in_array($mode, array('reports', 'unapproved_topics', 'unapproved_posts', 'deleted_posts')) || $where_sql != 'WHERE') { $result = $db->sql_query($sql); $total = (int) $db->sql_fetchfield('total'); -- cgit v1.2.1 From 4a3cac0ccbfe932c65de06f6174ec345f816c4d4 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 9 Oct 2012 13:20:32 +0200 Subject: [feature/soft-delete] Fix column name in mcp_sorting() PHPBB3-9567 --- phpBB/mcp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 9877c469b9..d1ca26326a 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -619,7 +619,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, if (!$auth->acl_get('m_approve', $forum_id)) { - $sql .= 'AND post_visibility = ' . ITEM_APPROVED; + $sql .= 'AND topic_visibility = ' . ITEM_APPROVED; } break; -- cgit v1.2.1 From 18f77020e5c4a33e2b9bb1145342dab7ea55fd32 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 10 Oct 2012 23:10:46 +0200 Subject: [feature/soft-delete] Fix several problems in the forum mcp PHPBB3-9567 --- phpBB/mcp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index d1ca26326a..eb61492518 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -199,7 +199,7 @@ if (!$post_id) $module->set_display('warn', 'warn_post', false); } -if ($mode == '' || $mode == 'unapproved_topics' || $mode == 'unapproved_posts') +if ($mode == '' || $mode == 'unapproved_topics' || $mode == 'unapproved_posts' || $mode == 'deleted_posts') { $module->set_display('queue', 'approve_details', false); } -- cgit v1.2.1 From 4bf922fa03ae80533c726bd10aeab1f0bad0d179 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sat, 13 Oct 2012 19:00:08 +0200 Subject: [feature/soft-delete] Fix restoring posts via MCP PHPBB3-9567 --- phpBB/mcp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index eb61492518..a4801940a6 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -483,7 +483,7 @@ function get_post_data($post_ids, $acl_list = false, $read_tracking = false) continue; } - if ($row['post_visibility'] == ITEM_UNAPPROVED && !$auth->acl_get('m_approve', $row['forum_id'])) + if ($row['post_visibility'] != ITEM_APPROVED && !$auth->acl_get('m_approve', $row['forum_id'])) { // Moderators without the permission to approve post should at least not see them. ;) continue; -- cgit v1.2.1 From 33073fafbe53cb103e9e00bceb249a0879a2eb9c Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 15 Oct 2012 15:53:32 +0200 Subject: [feature/soft-delete] Add module for soft deleted topics Unapproved/soft deleted posts are posts, that have a different visibility than the topic. All others will be hidden from the posts list and can be managed with the topic modules. PHPBB3-9567 --- phpBB/mcp.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index a4801940a6..09fe70cde1 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -652,7 +652,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, $where_sql " . $db->sql_in_set('p.forum_id', ($forum_id) ? array($forum_id) : array_intersect(get_forum_list('f_read'), get_forum_list('m_approve'))) . ' AND p.post_visibility = ' . $visibility_const . ' AND t.topic_id = p.topic_id - AND t.topic_first_post_id <> p.post_id'; + AND t.topic_visibility <> p.post_visibility'; if ($min_time) { @@ -661,6 +661,8 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, break; case 'unapproved_topics': + case 'deleted_topics': + $visibility_const = ($mode == 'unapproved_topics') ? ITEM_UNAPPROVED : ITEM_DELETED; $type = 'topics'; $default_key = 't'; $default_dir = 'd'; @@ -668,7 +670,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, $sql = 'SELECT COUNT(topic_id) AS total FROM ' . TOPICS_TABLE . " $where_sql " . $db->sql_in_set('forum_id', ($forum_id) ? array($forum_id) : array_intersect(get_forum_list('f_read'), get_forum_list('m_approve'))) . ' - AND topic_visibility = ' . ITEM_UNAPPROVED; + AND topic_visibility = ' . $visibility_const; if ($min_time) { @@ -798,7 +800,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, 'S_SELECT_SORT_DAYS' => $s_limit_days) ); - if (($sort_days && $mode != 'viewlogs') || in_array($mode, array('reports', 'unapproved_topics', 'unapproved_posts', 'deleted_posts')) || $where_sql != 'WHERE') + if (($sort_days && $mode != 'viewlogs') || in_array($mode, array('reports', 'unapproved_topics', 'unapproved_posts', 'deleted_topics', 'deleted_posts')) || $where_sql != 'WHERE') { $result = $db->sql_query($sql); $total = (int) $db->sql_fetchfield('total'); -- cgit v1.2.1 From 3773cbdf858dfacca7cd8916306db2f02136c771 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 15 Oct 2012 20:51:31 +0200 Subject: [feature/soft-delete] Fix displaying of details module PHPBB3-9567 --- phpBB/mcp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 09fe70cde1..068e870126 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -199,7 +199,7 @@ if (!$post_id) $module->set_display('warn', 'warn_post', false); } -if ($mode == '' || $mode == 'unapproved_topics' || $mode == 'unapproved_posts' || $mode == 'deleted_posts') +if ($mode == '' || $mode == 'unapproved_topics' || $mode == 'unapproved_posts' || $mode == 'deleted_topics' || $mode == 'deleted_posts') { $module->set_display('queue', 'approve_details', false); } -- cgit v1.2.1 From 5925a17894cecb9fdf2d5c58dcdeb533fb80e8f7 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 22 Oct 2012 14:55:10 +0200 Subject: [feature/soft-delete] Fix some more uses of topic_replies_real PHPBB3-9567 --- phpBB/mcp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 068e870126..f13a6260fe 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -752,7 +752,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, $limit_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); $sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'tt' => $user->lang['TOPIC_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']); - $sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_replies_real' : 't.topic_replies'), 's' => 't.topic_title', 'v' => 't.topic_views'); + $sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_posts + t.topic_posts_unapproved + t.topic_posts_softdeleted' : 't.topic_posts'), 's' => 't.topic_title', 'v' => 't.topic_views'); $limit_time_sql = ($min_time) ? "AND t.topic_last_post_time >= $min_time" : ''; break; -- cgit v1.2.1 From 0a07635329b149ddf500f29f3363f2e9a94fb022 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 22 Oct 2012 17:21:56 +0200 Subject: [feature/soft-delete] Fix convertor and one mcp issue PHPBB3-9567 --- phpBB/mcp.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index f13a6260fe..d322aacb2f 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -538,10 +538,7 @@ function get_forum_data($forum_id, $acl_list = 'f_list', $read_tracking = false) continue; } - if ($auth->acl_get('m_approve', $row['forum_id'])) - { - $row['forum_topics'] = $row['forum_topics_real']; - } + $row['forum_topics'] = phpbb_content_visibility::get_count('forum_topics', $row, $row['forum_id']); $rowset[$row['forum_id']] = $row; } -- cgit v1.2.1 From 4a8d38aab13099fdb4fb7e2a7b72cff1c05fda9c Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sat, 27 Oct 2012 17:12:34 +0200 Subject: [feature/soft-delete] Allow soft deleting/restoring topics via quickmoderation PHPBB3-9567 --- phpBB/mcp.php | 1 + 1 file changed, 1 insertion(+) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index d322aacb2f..4c87838306 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -158,6 +158,7 @@ if ($quickmod) case 'move': case 'delete_post': case 'delete_topic': + case 'restore_topic': $module->load('mcp', 'main', 'quickmod'); return; break; -- cgit v1.2.1 From 9c2a58eff4c2bd164ee3bdb2ec66729d4562963d Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 9 Nov 2012 13:37:53 +0100 Subject: [feature/soft-delete] Append _approved to *_posts and *_topics column names PHPBB3-9567 --- phpBB/mcp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 4c87838306..402f22b1ee 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -750,7 +750,7 @@ function mcp_sorting($mode, &$sort_days, &$sort_key, &$sort_dir, &$sort_by_sql, $limit_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); $sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'tt' => $user->lang['TOPIC_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']); - $sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_posts + t.topic_posts_unapproved + t.topic_posts_softdeleted' : 't.topic_posts'), 's' => 't.topic_title', 'v' => 't.topic_views'); + $sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'tt' => 't.topic_time', 'r' => (($auth->acl_get('m_approve', $forum_id)) ? 't.topic_posts_approved + t.topic_posts_unapproved + t.topic_posts_softdeleted' : 't.topic_posts_approved'), 's' => 't.topic_title', 'v' => 't.topic_views'); $limit_time_sql = ($min_time) ? "AND t.topic_last_post_time >= $min_time" : ''; break; -- cgit v1.2.1 From f77a6eaab5485329a3b13922649fb8902e6e397f Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sat, 10 Nov 2012 11:24:52 +0100 Subject: [feature/soft-delete] Fix the rest of *_approved and the delete_post unit test PHPBB3-9567 --- phpBB/mcp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index 402f22b1ee..7676b2ecab 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -539,7 +539,7 @@ function get_forum_data($forum_id, $acl_list = 'f_list', $read_tracking = false) continue; } - $row['forum_topics'] = phpbb_content_visibility::get_count('forum_topics', $row, $row['forum_id']); + $row['forum_topics_approved'] = phpbb_content_visibility::get_count('forum_topics', $row, $row['forum_id']); $rowset[$row['forum_id']] = $row; } -- cgit v1.2.1 From 9aed758c1397c31b979f4aca51249c73d21bd6f5 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 11 Jul 2013 14:24:07 +0200 Subject: [ticket/9657] Use the service instead of the static class PHPBB3-9657 --- phpBB/mcp.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'phpBB/mcp.php') diff --git a/phpBB/mcp.php b/phpBB/mcp.php index a0e106e27d..5beea45c7d 100644 --- a/phpBB/mcp.php +++ b/phpBB/mcp.php @@ -502,7 +502,7 @@ function get_post_data($post_ids, $acl_list = false, $read_tracking = false) */ function get_forum_data($forum_id, $acl_list = 'f_list', $read_tracking = false) { - global $auth, $db, $user, $config; + global $auth, $db, $user, $config, $phpbb_container; $rowset = array(); @@ -532,6 +532,8 @@ function get_forum_data($forum_id, $acl_list = 'f_list', $read_tracking = false) WHERE " . $db->sql_in_set('f.forum_id', $forum_id); $result = $db->sql_query($sql); + $phpbb_content_visibility = $phpbb_container->get('content.visibility'); + while ($row = $db->sql_fetchrow($result)) { if ($acl_list && !$auth->acl_gets($acl_list, $row['forum_id'])) @@ -539,7 +541,7 @@ function get_forum_data($forum_id, $acl_list = 'f_list', $read_tracking = false) continue; } - $row['forum_topics_approved'] = phpbb_content_visibility::get_count('forum_topics', $row, $row['forum_id']); + $row['forum_topics_approved'] = $phpbb_content_visibility->get_count('forum_topics', $row, $row['forum_id']); $rowset[$row['forum_id']] = $row; } -- cgit v1.2.1