ORDER BY timestamp DESC LIMIT 1; SQL; $statement = gGetDb()->prepare($sqlText); $statement->execute(array(":request" => $request->getId())); $logTime = $statement->fetchColumn(); $statement->closeCursor(); $date = new DateTime(); $date->modify("-7 days"); $oneweek = $date->format("Y-m-d H:i:s"); if ($request->getStatus() == "Closed" && $logTime < $oneweek && !User::getCurrent()->isAdmin() && !User::getCurrent()->isCheckuser()) { SessionAlert::error("Only administrators and checkusers can reopen a request that has been closed for over a week."); header("Location: acc.php?action=zoom&id={$request->getId()}"); die; } if ($request->getStatus() == $_GET['target']) { SessionAlert::error("Cannot set status, target already deferred to " . htmlentities($_GET['target']), "Error"); header("Location: acc.php?action=zoom&id={$request->getId()}"); die; } $database = gGetDb(); $database->transactionally(function () use($database, $request) { global $availableRequestStates; $request->setReserved(0); $request->setStatus($_GET['target']); $request->updateChecksum(); $request->save(); $deto = $availableRequestStates[$_GET['target']]['deferto']; $detolog = $availableRequestStates[$_GET['target']]['defertolog']; Logger::deferRequest($database, $request, $detolog); Notification::requestDeferred($request); SessionAlert::success("Request {$request->getId()} deferred to {$deto}");