Page MenuHomePhorge

No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None
diff --git a/bin/cleandb.php b/bin/cleandb.php
index 392d71b12..79d0b6510 100755
--- a/bin/cleandb.php
+++ b/bin/cleandb.php
@@ -1,83 +1,80 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| bin/cleandb.php |
| |
| This file is part of the RoundCube Webmail client |
| Copyright (C) 2010, RoundCube Dev. - Switzerland |
| Licensed under the GNU GPL |
| |
| PURPOSE: |
| Finally remove all db records marked as deleted some time ago |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
$Id$
*/
if (php_sapi_name() != 'cli') {
die('Not on the "shell" (php-cli).');
}
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
require INSTALL_PATH.'program/include/iniset.php';
// mapping for table name => primary key
$primary_keys = array(
- 'contacts' => "contact_id",
- 'contactgroups' => "contactgroup_id",
+ 'contacts' => "contact_id",
+ 'contactgroups' => "contactgroup_id",
);
// connect to DB
$RCMAIL = rcmail::get_instance();
$db = $RCMAIL->get_dbh();
if (!$db->is_connected() || $db->is_error)
- die("No DB connection");
+ die("No DB connection");
if (!empty($_SERVER['argv'][1]))
- $days = intval($_SERVER['argv'][1]);
+ $days = intval($_SERVER['argv'][1]);
else
- $days = 7;
+ $days = 7;
// remove all deleted records older than two days
$threshold = date('Y-m-d 00:00:00', time() - $days * 86400);
foreach (array('contacts','contactgroups','identities') as $table) {
- // also delete linked records
- // could be skipped for databases which respect foreign key constraints
-/*
- if ($table == 'contacts' || $table == 'contactgroups') {
- $ids = array();
- $pk = $primary_keys[$table];
-
- $result = $db->query(
- "SELECT $pk FROM ".get_table_name($table)."
- WHERE del=1 AND changed < ".$db->quote($threshold));
-
- while ($result && ($sql_arr = $db->fetch_assoc($result)))
- $ids[] = $sql_arr[$pk];
- if (count($ids)) {
- $db->query(
- "DELETE FROM ".get_table_name('contactgroupmembers')."
- WHERE $pk IN (".join(',', $ids).")");
-
- echo $db->affected_rows() . " records deleted from '".get_table_name('contactgroupmembers')."'\n";
+ $sqltable = get_table_name($table);
+
+ // also delete linked records
+ // could be skipped for databases which respect foreign key constraints
+ if ($db->db_provider == 'sqlite'
+ && ($table == 'contacts' || $table == 'contactgroups')
+ ) {
+ $pk = $primary_keys[$table];
+ $memberstable = get_table_name('contactgroupmembers');
+
+ $db->query(
+ "DELETE FROM $memberstable".
+ " WHERE $pk IN (".
+ "SELECT $pk FROM $sqltable".
+ " WHERE del=1 AND changed < ?".
+ ")",
+ $threshold);
+
+ echo $db->affected_rows() . " records deleted from '$memberstable'\n";
}
- }
-*/
- // delete outdated records
- $db->query(
- "DELETE FROM ".get_table_name($table)."
- WHERE del=1 AND changed < ".$db->quote($threshold));
- echo $db->affected_rows() . " records deleted from '$table'\n";
+ // delete outdated records
+ $db->query("DELETE FROM $sqltable WHERE del=1 AND changed < ?", $threshold);
+
+ echo $db->affected_rows() . " records deleted from '$table'\n";
}
?>

File Metadata

Mime Type
text/x-diff
Expires
Thu, Dec 18, 10:36 AM (24 m, 46 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
418741
Default Alt Text
(3 KB)

Event Timeline