aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorGraham Eames <grahamje@users.sourceforge.net>2006-03-04 17:34:04 +0000
committerGraham Eames <grahamje@users.sourceforge.net>2006-03-04 17:34:04 +0000
commit14b6714c93944b6af9ec01d978cfe7f387dc7e9a (patch)
treefcf2b32921fe4ba1f8c48d8c199fbe7dbc545317 /phpBB/includes
parent70b20a98f756c0bd3081d5de92997776ae39d6ce (diff)
downloadforums-14b6714c93944b6af9ec01d978cfe7f387dc7e9a.tar
forums-14b6714c93944b6af9ec01d978cfe7f387dc7e9a.tar.gz
forums-14b6714c93944b6af9ec01d978cfe7f387dc7e9a.tar.bz2
forums-14b6714c93944b6af9ec01d978cfe7f387dc7e9a.tar.xz
forums-14b6714c93944b6af9ec01d978cfe7f387dc7e9a.zip
Expire issued warnings after and admin configurable time
TODO: Add config option for this value to the ACP git-svn-id: file:///svn/phpbb/trunk@5602 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/functions.php4
-rw-r--r--phpBB/includes/functions_admin.php47
2 files changed, 51 insertions, 0 deletions
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index 4a5838effe..1949b5f6c4 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -2171,6 +2171,10 @@ function page_footer()
// Tidy the cache
$cron_type = 'tidy_cache';
}
+ else if (time() - $config['warnings_last_gc'] > $config['warnings_gc'])
+ {
+ $cron_type = 'tidy_warnings';
+ }
else if (time() - (7 * 24 * 3600) > $config['database_last_gc'])
{
// Tidy some table rows every week
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index 4ce8e4ddfa..ba830857ea 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -2177,6 +2177,53 @@ function get_remote_file($host, $directory, $filename, &$errstr, &$errno, $port
}
/**
+* Tidy Warnings
+* Remove all warnings which have now expired from the database
+* The duration of a warning can be defined by the administrator
+* This only removes the warning and reduces the assosciated count,
+* it does not remove the user note recording the contents of the warning
+*/
+function tidy_warnings()
+{
+ global $db, $config;
+
+ $expire_date = time() - ($config['warnings_expire_days'] * 86400);
+ $warning_list = $user_list = array();
+
+ $sql = 'SELECT * FROM ' . WARNINGS_TABLE . "
+ WHERE warning_time < $expire_date";
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $warning_list[] = $row['warning_id'];
+ $user_list[$row['user_id']] = isset($user_list[$row['user_id']]) ? $user_list[$row['user_id']]++ : 0;
+ }
+ $db->sql_freeresult($result);
+
+ if (sizeof($warning_list))
+ {
+ $db->sql_transaction('begin');
+
+ $sql_where = ' IN (' . implode(', ', $warning_list) . ')';
+ $sql = 'DELETE FROM ' . WARNINGS_TABLE . "
+ WHERE warning_id $sql_where";
+ $db->sql_query($sql);
+
+ foreach($user_list as $user_id => $value)
+ {
+ $sql = 'UPDATE ' . USERS_TABLE . " SET user_warnings = user_warnings - $value
+ WHERE user_id = $user_id";
+ $db->sql_query($sql);
+ }
+
+ $db->sql_transaction('commit');
+ }
+
+ set_config('warnings_last_gc', time());
+}
+
+/**
* Tidy database
* Removes all tracking rows older than 6 months, including mark_posted informations
*/