issue98, debug-message when cleaning up the database
[phpfspot.git] / phpfspot.class.php
index c2ec3ac78e381c738b68a169cef3657463bf7f33..a0082dd5fb7a26e87584a392e6e3b9353b054553 100644 (file)
@@ -752,13 +752,13 @@ class PHPFSPOT {
                FROM photo_tags pt1
             INNER JOIN photo_tags pt2
                ON pt1.photo_id=pt2.photo_id
-            INNER JOIN tags t1
-               ON pt1.tag_id=t1.id
+            INNER JOIN tags t
+               ON pt1.tag_id=t.id
             INNER JOIN photos p
                ON pt1.photo_id=p.id
             INNER JOIN tags t2
                ON pt2.tag_id=t2.id
-            WHERE t1.name LIKE '%". $_SESSION['searchfor'] ."%' ";
+            WHERE t.name LIKE '%". $_SESSION['searchfor'] ."%' ";
 
          if(isset($additional_where_cond))
             $query_str.= "AND ". $additional_where_cond ." ";
@@ -2370,6 +2370,42 @@ class PHPFSPOT {
 
    } // check_config_options()
 
+   /**
+    * cleanup phpfspot own database
+    *
+    * When photos are getting delete from F-Spot, there will remain
+    * remain some residues in phpfspot own database. This function
+    * will try to wipe them out.
+    */
+   public function cleanup_phpfspot_db()
+   {
+      $to_delete = Array();
+
+      $result = $this->cfg_db->db_query("
+         SELECT img_idx
+         FROM images
+         ORDER BY img_idx ASC
+      ");
+
+      while($row = $this->cfg_db->db_fetch_object($result)) {
+         if(!$this->db->db_fetchSingleRow("
+            SELECT id
+            FROM photos
+            WHERE id='". $row['img_idx'] ."'")) {
+
+            array_push($to_delete, $row['img_idx'], ',');
+         }
+      }
+
+      print count($to_delete) ." unnecessary objects will be removed from phpfspot's database.\n";
+
+      $this->cfg_db->db_exec("
+         DELETE FROM images
+         WHERE img_idx IN (". implode($to_delete) .")
+      ");
+
+   } // cleanup_phpfspot_db()
+
 } // class PHPFSPOT
 
 ?>