From 931fd9d64293ebd1dc48aeef25039ce50251aec8 Mon Sep 17 00:00:00 2001 From: the_systech Date: Tue, 17 Jul 2001 13:26:36 +0000 Subject: [PATCH] Update of pruning to add admin interface, and change error_die's to message_die's git-svn-id: file:///svn/phpbb/trunk@683 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/admin/admin_forum_prune.php | 202 ++++++++++++++++++ phpBB/includes/prune.php | 31 ++- .../templates/PSO/admin/forum_prune_body.tpl | 17 ++ .../PSO/admin/forum_prune_result_body.tpl | 19 ++ .../PSO/admin/forum_prune_select_body.tpl | 13 ++ 5 files changed, 275 insertions(+), 7 deletions(-) create mode 100644 phpBB/admin/admin_forum_prune.php create mode 100644 phpBB/templates/PSO/admin/forum_prune_body.tpl create mode 100644 phpBB/templates/PSO/admin/forum_prune_result_body.tpl create mode 100644 phpBB/templates/PSO/admin/forum_prune_select_body.tpl diff --git a/phpBB/admin/admin_forum_prune.php b/phpBB/admin/admin_forum_prune.php new file mode 100644 index 0000000000..a72eafdcd6 --- /dev/null +++ b/phpBB/admin/admin_forum_prune.php @@ -0,0 +1,202 @@ +sql_query($sql); + +$forum_rows = $db->sql_fetchrowset($f_result); + +// +// Check for the submit variable. +// +if(isset($HTTP_GET_VARS['submit']) || isset($HTTP_POST_VARS['submit'])) +{ + $submit = (isset($HTTP_POST_VARS['submit'])) ? $HTTP_POST_VARS['submit'] : $HTTP_GET_VARS['submit']; +} +else +{ + unset($submit); +} + +// +// Check for submit to be equal to Prune. If so then proceed with the pruning. +// +if($submit == "Prune") +{ + $prunedays = $HTTP_POST_VARS['prunedays']; + // Convert days to seconds for timestamp functions... + $prunesecs = $prunedays * 1440 * 60; + $prunedate = time() - $prunesecs; + $template->set_filenames(array( + "body" => "admin/forum_prune_result_body.tpl") + ); + reset($forum_rows); + while(list(, $forum_data) = each ($forum_rows)) + { + $p_result = prune($forum_data['forum_id'], $prunedate); + $template->assign_block_vars("prune_results", array( + "FORUM_NAME" => $forum_data['forum_name'], + "FORUM_TOPICS" => $p_result['topics'], + "FORUM_POSTS" => $p_result['posts']) + ); + } + $template->assign_vars(array( + "PRUNE_MSG" => "Pruning of forums was successful") + ); +} +else +{ + // + // If they haven't selected a forum for pruning yet then + // display a select box to use for pruning. + // + if(empty($forum_id)) + { + // + // Output a selection table if no forum id has been specified. + // + $template->set_filenames(array( + "body" => "admin/forum_prune_select_body.tpl") + ); + $select_list = "\n"; + // + // Assign the template variables. + // + $template->assign_vars(array( + "S_FORUMPRUNE_ACTION" => append_sid("admin_forum_prune.$phpEx"), + "S_FORUMS_SELECT" => $select_list) + ); + } + else + { + // + // Output the form to retrieve Prune information. + // + $template->set_filenames(array( + "body" => "admin/forum_prune_body.tpl") + ); + + $forum_name = ($forum_id == "ALL") ? 'All Forums' : $forum_rows[0]['forum_name']; + $prune_data = "Prune Topics that haven't been posted to in the last "; + $prune_data .= " Days."; + $hidden_input = ""; + + // + // Assign the template variables. + // + $template->assign_vars(array( + "S_FORUMPRUNE_ACTION" => append_sid("admin_forum_prune.$phpEx"), + "FORUM_NAME" => $forum_name, + "S_PRUNE_DATA" => $prune_data, + "S_HIDDEN_VARS" => $hidden_input) + ); + } +} +// +// Actually output the page here. +// +$template->pparse("body"); + +include('page_footer_admin.'.$phpEx); + +?> diff --git a/phpBB/includes/prune.php b/phpBB/includes/prune.php index 07fb957228..5dc3c9e4cb 100644 --- a/phpBB/includes/prune.php +++ b/phpBB/includes/prune.php @@ -40,11 +40,11 @@ function prune($forum_id, $prune_date) FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . " p WHERE t.forum_id = $forum_id AND p.post_id = t.topic_last_post_id - AND t.topic_type != " . POST_ANNOUNCE . " + AND t.topic_type = " . POST_NORMAL . " AND p.post_time < $prune_date"; if(!$result = $db->sql_query($sql)) { - error_die(SQL_QUERY, "Couldn't obtain list of topics to prune.", __LINE__, __FILE__); + message_die(GENERAL_ERROR, "Couldn't obtain list of topics to prune.", __LINE__, __FILE__); } // End if(!$result... $pruned_topics = $db->sql_numrows($result); if($pruned_topics > 0) @@ -66,14 +66,31 @@ function prune($forum_id, $prune_date) $prune_topic_sql .= ')'; if(!$result = $db->sql_query($prune_posts_sql)) { - error_die(SQL_QUERY, "While Pruning: Couldn't remove affected posts.
$prune_posts_sql", __LINE__, __FILE__); + message_die(GENERAL_ERROR, "While Pruning: Couldn't remove affected posts.
$prune_posts_sql", __LINE__, __FILE__); } // end if(!$result... + $pruned_posts = $db->sql_affectedrows(); if(!$result = $db->sql_query($prune_topic_sql)) { - error_die(SQL_QUERY, "While Pruning: Couldn't remove affected topics.", __LINE__, __FILE__); + message_die(GENERAL_ERROR, "While Pruning: Couldn't remove affected topics.", __LINE__, __FILE__); } // end if(!$result... + + // + // Update forum info to reflect proper topic and post counts... + // + + $sql = "UPDATE " . FORUMS_TABLE . " + SET forum_posts = (forum_posts - $pruned_posts), forum_topics = (forum_topics - $pruned_topics) + WHERE forum_id = $forum_id"; + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, "While Pruning: Couldn't update topic/post counts
" .mysql_error() , __LINE__, __FILE__); + } + } // End if $prune_topics - return $pruned_topics; + $returnval = array ( + "topics" => $pruned_topics, + "posts" => $pruned_posts); + return $returnval; } // End function prune. /***************************************************************************\ @@ -92,7 +109,7 @@ function auto_prune($forum_id = 0) if(!$result = $db->sql_query($sql)) { - error_die(SQL_QUERY, "Auto-Prune: Couldn't read auto_prune table.", __LINE__, __FILE__); + message_die(GENERAL_ERROR, "Auto-Prune: Couldn't read auto_prune table.", __LINE__, __FILE__); } // End if(!$result... while($row = $db->sql_fetchrow($result)) { @@ -105,7 +122,7 @@ function auto_prune($forum_id = 0) WHERE forum_id = '$forum_id'"; if(!$db->sql_query($sql)) { - error_die(SQL_QUERY, "Auto-Prune: Couldn't update forum table.", __LINE__, __FILE__); + message_die(GENERAL_ERROR, "Auto-Prune: Couldn't update forum table.", __LINE__, __FILE__); } // End if(!$db->sql.. } // End While Loop. } // End auto_prune function. diff --git a/phpBB/templates/PSO/admin/forum_prune_body.tpl b/phpBB/templates/PSO/admin/forum_prune_body.tpl new file mode 100644 index 0000000000..42d555e7f7 --- /dev/null +++ b/phpBB/templates/PSO/admin/forum_prune_body.tpl @@ -0,0 +1,17 @@ +

Forum Pruning

+ +

Forum: {FORUM_NAME}

+ +
+ {S_HIDDEN_VARS} + + + + + + + + + +
{S_PRUNE_DATA}
Note: This will not prune announcements or sticky topics, these must be removed manually.
+
diff --git a/phpBB/templates/PSO/admin/forum_prune_result_body.tpl b/phpBB/templates/PSO/admin/forum_prune_result_body.tpl new file mode 100644 index 0000000000..44131dccbc --- /dev/null +++ b/phpBB/templates/PSO/admin/forum_prune_result_body.tpl @@ -0,0 +1,19 @@ +

Forum Pruning

+ +

Here are the results from your forum pruning:

+ +
+ + + + + + + + + + + + +
FORUM NAMETOPICS PRUNEDPOSTS PRUNED
{prune_results.FORUM_NAME}{prune_results.FORUM_TOPICS}{prune_results.FORUM_POSTS}
+
diff --git a/phpBB/templates/PSO/admin/forum_prune_select_body.tpl b/phpBB/templates/PSO/admin/forum_prune_select_body.tpl new file mode 100644 index 0000000000..f313007852 --- /dev/null +++ b/phpBB/templates/PSO/admin/forum_prune_select_body.tpl @@ -0,0 +1,13 @@ + +

Forum Pruning

+ + + + + + + + +
Select a Forum
{S_FORUMS_SELECT}   
+ +