+ if (($stage == 5) OR ($stage == 0)) {
+ logger("Deleting orphaned data from notify-threads table");
+ if ($db->q("SELECT `id` FROM `notify-threads` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`parent` = `notify-threads`.`master-parent-item`) LIMIT ".intval($limit), true)) {
+ $count = $db->num_rows();
+ logger("found notify-threads orphans: ".$count);
+ while ($orphan = $db->qfetch()) {
+ q("DELETE FROM `notify-threads` WHERE `id` = %d", intval($orphan["id"]));
+ }
+ }
+ $db->qclose();
+ logger("Done deleting orphaned data from notify-threads table");
+ }
+
+
+ if (($stage == 6) OR ($stage == 0)) {
+ logger("Deleting orphaned data from sign table");
+ if ($db->q("SELECT `iid` FROM `sign` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `sign`.`iid`) LIMIT ".intval($limit), true)) {
+ $count = $db->num_rows();
+ logger("found sign orphans: ".$count);
+ while ($orphan = $db->qfetch()) {
+ q("DELETE FROM `sign` WHERE `iid` = %d", intval($orphan["iid"]));
+ }
+ }
+ $db->qclose();
+ logger("Done deleting orphaned data from sign table");
+ }
+
+
+ if (($stage == 7) OR ($stage == 0)) {
+ logger("Deleting orphaned data from term table");
+ if ($db->q("SELECT `oid` FROM `term` WHERE NOT EXISTS (SELECT `id` FROM `item` WHERE `item`.`id` = `term`.`oid`) LIMIT ".intval($limit), true)) {
+ $count = $db->num_rows();
+ logger("found term orphans: ".$count);
+ while ($orphan = $db->qfetch()) {
+ q("DELETE FROM `term` WHERE `oid` = %d", intval($orphan["oid"]));
+ }
+ }
+ $db->qclose();
+ logger("Done deleting orphaned data from term table");
+ }
+
+ // Call it again if not all entries were purged
+ if (($stage != 0) AND ($count > 0) AND Config::get("system", "worker")) {
+ proc_run(PRIORITY_MEDIUM, 'include/dbclean.php');
+ }
+
+}