예제 #1
0
파일: acc.php 프로젝트: FastLizard4/waca
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}");