Rewrote email if tasks has been purged
[mailer.git] / inc / purge / purge-tasks.php
index 4917a6f8dc7c0cd6808a49c65167067615ec91d5..5e6b8aa5617c4b23d4499190ddeff4869f67a217 100644 (file)
@@ -41,29 +41,58 @@ if (!defined('__SECURITY')) {
 } // END - if
 
 // Abort if autopurge is not active or disabled by admin
-if ((!isExtensionActive('autopurge')) || (!isAutoPurgingActive())) {
+if ((!isExtensionActive('autopurge')) || (!isAutoPurgingActive()) || (getConfig('ap_tasks_notify') == 'N')) {
        // Abort here
-       return false;
+       return FALSE;
 } // END - if
 
 // Check version (must be >= 0.1.9)
 if ((isExtensionInstalledAndNewer('task', '0.1.9')) && (getConfig('autopurge_tasks') == 'Y')) {
-       // Purge deleted tasks (no notification to admin)
-       SQL_QUERY("DELETE LOW_PRIORITY
+       // Select all tasks that needs purging
+       $result = SQL_QUERY("SELECT
+       `id`,
+       `assigned_admin`,
+       `userid`,
+       `status`,
+       `task_type`,
+       `subject`,
+       `task_created`
 FROM
        `{?_MYSQL_PREFIX?}_task_system`
 WHERE
        `status`='DELETED' AND
        (UNIX_TIMESTAMP() - `task_created`) >= {?ap_tasks_time?}", __FILE__, __LINE__);
 
-       // Get deleted rows
-       $deletedTasks = SQL_AFFECTEDROWS();
-
        // Send out a notification?
-       if (($deletedTasks > 0) && (getConfig('ap_tasks_notify') == 'Y')) {
+       if (!SQL_HASZERONUMS($result)) {
+               // Init output and load all rows
+               $output = ''; $ids = array();
+               while ($row = SQL_FETCHARRAY($result)) {
+                       // "Translate" creation timestamp
+                       $row['task_created'] = generateDateTime($row['task_created'], '1');
+
+                       // Load row template
+                       $output .= loadEmailTemplate('admin_purge_task_row', $row);
+
+                       // Remember id number for deletion
+                       array_push($ids, $row['id']);
+               } // END - while
+
+               // Init content array
+               $content = array(
+                       'count' => SQL_NUMROWS($result),
+                       'rows'  => $output
+               );
+
+               // Delete all tasks
+               SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `id` IN (' . implode(', ', $ids) . ')');
+
                // Send out email to admin
-               sendAdminNotification('{--ADMIN_AUTOPURGE_TASKS_SUBJECT--}', 'admin_autopurge_tsks', $deletedTasks);
+               sendAdminNotification('{--ADMIN_AUTOPURGE_TASKS_SUBJECT--}', 'admin_purge_task', $content);
        } // END - if
+
+       // Free result
+       SQL_FREERESULT($result);
 } // END - if
 
 //