Merge branch 'MDL-68768-adhoc-task-faildelay-check' of https://github.com/brendanheyw...
[moodle.git] / lib / classes / task / manager.php
index befe2af..8a7cddd 100644 (file)
@@ -512,6 +512,27 @@ class manager {
         return $tasks;
     }
 
+    /**
+     * This function will return a list of all adhoc tasks that have a faildelay
+     *
+     * @param int $delay filter how long the task has been delayed
+     * @return \core\task\adhoc_task[]
+     */
+    public static function get_failed_adhoc_tasks(int $delay = 0): array {
+        global $DB;
+
+        $tasks = [];
+        $records = $DB->get_records_sql('SELECT * from {task_adhoc} WHERE faildelay > ?', [$delay]);
+
+        foreach ($records as $record) {
+            $task = self::adhoc_task_from_record($record);
+            if ($task) {
+                $tasks[] = $task;
+            }
+        }
+        return $tasks;
+    }
+
     /**
      * Ensure quality of service for the ad hoc task queue.
      *