From 3d39e978c55d20983b7ecc6b54a95dca4e76bbbb Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Fri, 8 Nov 2013 03:45:55 +0000
Subject: [PATCH] Add draft cleanup cron to remove stale client drafts

---
 include/class.cron.php  | 6 ++++++
 include/class.draft.php | 8 ++++++++
 2 files changed, 14 insertions(+)

diff --git a/include/class.cron.php b/include/class.cron.php
index 257926e25..3aa0357c1 100644
--- a/include/class.cron.php
+++ b/include/class.cron.php
@@ -35,6 +35,11 @@ class Cron {
         if($ost) $ost->purgeLogs();
     }
 
+    function PurgeDrafts() {
+        require_once(INCLUDE_DIR.'class.draft.php');
+        Draft::cleanup();
+    }
+
     function CleanOrphanedFiles() {
         require_once(INCLUDE_DIR.'class.file.php');
         AttachmentFile::deleteOrphans();
@@ -49,6 +54,7 @@ class Cron {
         self::TicketMonitor();
         self::PurgeLogs();
         self::CleanOrphanedFiles();
+        self::PurgeDrafts();
     }
 }
 ?>
diff --git a/include/class.draft.php b/include/class.draft.php
index 6796428b6..a4942ecb4 100644
--- a/include/class.draft.php
+++ b/include/class.draft.php
@@ -149,6 +149,14 @@ class Draft {
             $sql .= ' AND staff_id='.db_input($staff_id);
         return (!db_query($sql) || !db_affected_rows());
     }
+
+    static function cleanup() {
+        // Keep client drafts for two weeks (14 days)
+        $sql = 'DELETE FROM '.DRAFT_TABLE
+            ." WHERE `namespace` LIKE 'ticket.client.%'
+            AND datediff(now(), updated) > 14";
+        return db_query($sql);
+    }
 }
 
 ?>
-- 
GitLab