From 60ff017b49dcd11186265daff57b4ce9e3c3ba12 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Fri, 23 Apr 2010 03:24:05 -0400
Subject: [PATCH] - fix: sqlite doesn't support foreign keys - code formatting

---
 bin/cleandb.php |   53 +++++++++++++++++++++++++----------------------------
 1 files changed, 25 insertions(+), 28 deletions(-)

diff --git a/bin/cleandb.php b/bin/cleandb.php
index 392d71b..79d0b65 100755
--- a/bin/cleandb.php
+++ b/bin/cleandb.php
@@ -29,8 +29,8 @@
 
 // mapping for table name => primary key
 $primary_keys = array(
-  'contacts' => "contact_id",
-  'contactgroups' => "contactgroup_id",
+    'contacts' => "contact_id",
+    'contactgroups' => "contactgroup_id",
 );
 
 // connect to DB
@@ -38,46 +38,43 @@
 $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));
+    $sqltable = get_table_name($table);
 
-    while ($result && ($sql_arr = $db->fetch_assoc($result)))
-      $ids[] = $sql_arr[$pk];
+    // 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');
 
-    if (count($ids)) {
-      $db->query(
-        "DELETE FROM ".get_table_name('contactgroupmembers')."
-         WHERE $pk IN (".join(',', $ids).")");
+        $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 '".get_table_name('contactgroupmembers')."'\n";
+        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";
 }
 
 ?>

--
Gitblit v1.9.1