query( "SELECT count(*) as print_requests FROM {proxies} WHERE `request_date` <= (CURDATE() - INTERVAL 10 DAY)")->current()->print_requests; return array(Task_Definition::factory() ->callback("digibug_task::remove_expired") ->name(t("Remove Digibug print requests")) ->description($expired_request_count ? t2("1 Digibug print request has expired", "%count Digibug print requests have expired", $expired_request_count) : t("All print requests are current")) ->severity($expired_request_count ? log::WARNING : log::SUCCESS)); } static function remove_expired($task) { $completed = $task->get("completed", 0); $expired = ORM::factory("proxy") ->where("request_date <= (CURDATE() - INTERVAL 10 DAY)") ->find_all(); $remaining = $expired->count(); $start = microtime(true); foreach ($expired as $proxy) { if (microtime(true) - $start > 1.5) { break; } $proxy->delete(); $completed++; $remaining--; } if ($completed + $remaining > 0) { $task->percent_complete = (int)(100 * $completed / ($completed + $remaining)); } else { $task->percent_complete = 100; } $task->set("completed", $completed); if ($remaining == 0) { $task->done = true; $task->state = "success"; } } }