{"record":{"id":"4f9954cec4a59486","repo":"phacility/phabricator","slug":"you-can-not-reopen-this-revision-because-it-is-not","errorCode":null,"errorMessage":"You can not reopen this revision because it is not closed. Only closed revisions can be reopened.","messagePattern":"You can not reopen this revision because it is not closed\\. Only closed revisions can be reopened\\.","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/differential/xaction/DifferentialRevisionReopenTransaction.php","lineNumber":48,"sourceCode":"    return 400;\n  }\n\n  public function getActionName() {\n    return pht('Reopened');\n  }\n\n  public function generateOldValue($object) {\n    return !$object->isClosed();\n  }\n\n  public function applyInternalEffects($object, $value) {\n    $status_review = DifferentialRevisionStatus::NEEDS_REVIEW;\n    $object->setModernRevisionStatus($status_review);\n  }\n\n  protected function validateAction($object, PhabricatorUser $viewer) {\n    if (!$object->isPublished()) {\n      throw new Exception(\n        pht(\n          'You can not reopen this revision because it is not closed. '.\n          'Only closed revisions can be reopened.'));\n    }\n\n    $config_key = 'differential.allow-reopen';\n    if (!PhabricatorEnv::getEnvConfig($config_key)) {\n      throw new Exception(\n        pht(\n          'You can not reopen this revision because configuration prevents '.\n          'any revision from being reopened. You can change this behavior '.\n          'by adjusting the \"%s\" setting in Config.',\n          $config_key));\n    }\n  }\n\n  public function getTitle() {\n    return pht(","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/differential/xaction/DifferentialRevisionReopenTransaction.php#L30-L66","documentation":"Error \"You can not reopen this revision because it is not closed. Only closed revisions can be reopened.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/differential/xaction/DifferentialRevisionReopenTransaction.php:48 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}