#!/usr/bin/env php setTagline('manage open Audit requests'); $args->setSynopsis(<<parseStandardArguments(); $args->parse( array( array( 'name' => 'more', 'wildcard' => true, ), )); $more = $args->getArg('more'); if (count($more) !== 1) { $args->printHelpAndExit(); } $callsign = reset($more); $repository = id(new PhabricatorRepository())->loadOneWhere( 'callsign = %s', $callsign); if (!$repository) { throw new Exception("No repository exists with callsign '{$callsign}'!"); } $ok = phutil_console_confirm( 'This will reset all open audit requests ("Audit Required" or "Concern '. 'Raised") for commits in this repository to "Audit Not Required". This '. 'operation destroys information and can not be undone! Are you sure '. 'you want to proceed?'); if (!$ok) { echo "OK, aborting.\n"; die(1); } echo "Loading commits...\n"; $all_commits = id(new PhabricatorRepositoryCommit())->loadAllWhere( 'repositoryID = %d', $repository->getID()); echo "Clearing audit requests...\n"; foreach ($all_commits as $commit) { $query = id(new PhabricatorAuditQuery()) ->withStatus(PhabricatorAuditQuery::STATUS_OPEN) ->withCommitPHIDs(array($commit->getPHID())); $requests = $query->execute(); echo "Clearing ".$commit->getPHID()."... "; if (!$requests) { echo "nothing to do.\n"; continue; } else { echo count($requests)." requests to clear"; } foreach ($requests as $request) { $request->setAuditStatus( PhabricatorAuditStatusConstants::AUDIT_NOT_REQUIRED); $request->save(); echo "."; } $commit->setAuditStatus(PhabricatorAuditCommitStatusConstants::NONE); $commit->save(); echo "\n"; } echo "Done.\n";