mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-15 11:22:40 +01:00
65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
final class PhabricatorSetupEngine
|
||
|
extends Phobject {
|
||
|
|
||
|
private $issues;
|
||
|
|
||
|
public function getIssues() {
|
||
|
if ($this->issues === null) {
|
||
|
throw new PhutilInvalidStateException('execute');
|
||
|
}
|
||
|
|
||
|
return $this->issues;
|
||
|
}
|
||
|
|
||
|
public function getUnresolvedIssues() {
|
||
|
$issues = $this->getIssues();
|
||
|
$issues = mpull($issues, null, 'getIssueKey');
|
||
|
|
||
|
$unresolved_keys = PhabricatorSetupCheck::getUnignoredIssueKeys($issues);
|
||
|
|
||
|
return array_select_keys($issues, $unresolved_keys);
|
||
|
}
|
||
|
|
||
|
public function execute() {
|
||
|
$issues = PhabricatorSetupCheck::runNormalChecks();
|
||
|
|
||
|
$fatal_issue = null;
|
||
|
foreach ($issues as $issue) {
|
||
|
if ($issue->getIsFatal()) {
|
||
|
$fatal_issue = $issue;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($fatal_issue) {
|
||
|
// If we've discovered a fatal, we reset any in-flight state to push
|
||
|
// web hosts out of service.
|
||
|
|
||
|
// This can happen if Phabricator starts during a disaster and some
|
||
|
// databases can not be reached. We allow Phabricator to start up in
|
||
|
// this situation, since it may still be able to usefully serve requests
|
||
|
// without risk to data.
|
||
|
|
||
|
// However, if databases later become reachable and we learn that they
|
||
|
// are fatally misconfigured, we want to tear the world down again
|
||
|
// because data may be at risk.
|
||
|
PhabricatorSetupCheck::resetSetupState();
|
||
|
|
||
|
return PhabricatorSetupCheck::newIssueResponse($issue);
|
||
|
}
|
||
|
|
||
|
$issue_keys = PhabricatorSetupCheck::getUnignoredIssueKeys($issues);
|
||
|
|
||
|
PhabricatorSetupCheck::setOpenSetupIssueKeys(
|
||
|
$issue_keys,
|
||
|
$update_database = true);
|
||
|
|
||
|
$this->issues = $issues;
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
}
|