Renamed ifSqlHasZeroNums() to ifSqlHasZeroNumRows() and improved some queries.
[mailer.git] / inc / purge / purge-tasks.php
index 0c70c91ab05b98448b70b692728b1cd7db849975..d18fc5db72afad46be278cb71e8ede0c8d44d8ab 100644 (file)
@@ -16,7 +16,7 @@
  * $Author::                                                          $ *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
- * Copyright (c) 2009 - 2012 by Mailer Developer Team                   *
+ * Copyright (c) 2009 - 2015 by Mailer Developer Team                   *
  * For more information visit: http://mxchange.org                      *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
@@ -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;
 } // 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 = sqlQuery("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 (!ifSqlHasZeroNumRows($result)) {
+               // Init output and load all rows
+               $output = ''; $ids = array();
+               while ($row = sqlFetchArray($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' => sqlNumRows($result),
+                       'rows'  => $output
+               );
+
+               // Delete all tasks
+               sqlQuery('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `id` IN (' . implode(', ', $ids) . ')', __FILE__, __LINE__);
+
                // 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
+       sqlFreeResult($result);
 } // END - if
 
 //