public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $nav = $this->buildSideNavView(); $nav->selectFilter('issue/'); $issues = PhabricatorSetupCheck::runAllChecks(); PhabricatorSetupCheck::setOpenSetupIssueKeys(PhabricatorSetupCheck::getUnignoredIssueKeys($issues)); $important = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_IMPORTANT); $php = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_PHP); $mysql = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_MYSQL); $other = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_OTHER); $setup_issues = array(); if ($important) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('Important Setup Issues'))->appendChild($important); } if ($php) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('PHP Setup Issues'))->appendChild($php); } if ($mysql) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('MySQL Setup Issues'))->appendChild($mysql); } if ($other) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('Other Setup Issues'))->appendChild($other); } if (empty($setup_issues)) { $setup_issues[] = id(new PHUIInfoView())->setTitle(pht('No Issues'))->appendChild(pht('Your install has no current setup issues to resolve.'))->setSeverity(PHUIInfoView::SEVERITY_NOTICE); } $nav->appendChild($setup_issues); $title = pht('Setup Issues'); $crumbs = $this->buildApplicationCrumbs($nav)->addTextCrumb(pht('Setup'), $this->getApplicationURI('issue/')); $nav->setCrumbs($crumbs); return $this->buildApplicationPage($nav, array('title' => $title)); }
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $nav = $this->buildSideNavView(); $nav->selectFilter('issue/'); $issues = PhabricatorSetupCheck::runAllChecks(); PhabricatorSetupCheck::setOpenSetupIssueKeys(PhabricatorSetupCheck::getUnignoredIssueKeys($issues), $update_database = true); $important = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_IMPORTANT); $php = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_PHP); $mysql = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_MYSQL); $other = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_OTHER); $setup_issues = array(); if ($important) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('Important Setup Issues'))->setColor(PHUIObjectBoxView::COLOR_RED)->setObjectList($important); } if ($php) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('PHP Setup Issues'))->setObjectList($php); } if ($mysql) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('MySQL Setup Issues'))->setObjectList($mysql); } if ($other) { $setup_issues[] = id(new PHUIObjectBoxView())->setHeaderText(pht('Other Setup Issues'))->setObjectList($other); } if (empty($setup_issues)) { $setup_issues[] = id(new PHUIInfoView())->setTitle(pht('No Issues'))->appendChild(pht('Your install has no current setup issues to resolve.'))->setSeverity(PHUIInfoView::SEVERITY_NOTICE); } $title = pht('Setup Issues'); $crumbs = $this->buildApplicationCrumbs($nav)->addTextCrumb(pht('Setup'), $this->getApplicationURI('issue/')); $view = id(new PHUITwoColumnView())->setNavigation($nav)->setMainColumn(array($setup_issues)); return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild($view); }
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $open_items = PhabricatorSetupCheck::getOpenSetupIssueKeys(); $issues = PhabricatorSetupCheck::runNormalChecks(); PhabricatorSetupCheck::setOpenSetupIssueKeys(PhabricatorSetupCheck::getUnignoredIssueKeys($issues), $update_database = true); if ($issues) { require_celerity_resource('phabricator-notification-menu-css'); $items = array(); foreach ($issues as $issue) { $classes = array(); $classes[] = 'phabricator-notification'; if ($issue->getIsIgnored()) { $classes[] = 'phabricator-notification-read'; } else { $classes[] = 'phabricator-notification-unread'; } $uri = '/config/issue/' . $issue->getIssueKey() . '/'; $title = $issue->getName(); $summary = $issue->getSummary(); $items[] = javelin_tag('div', array('class' => implode(' ', $classes), 'sigil' => 'notification', 'meta' => array('href' => $uri)), $title); } $content = phutil_tag_div('setup-issue-menu', $items); } else { $content = phutil_tag_div('phabricator-notification no-notifications', pht('You have no unresolved setup issues.')); } $content = hsprintf('<div class="phabricator-notification-header">%s</div>' . '%s', phutil_tag('a', array('href' => '/config/issue/'), pht('Unresolved Setup Issues')), $content); $unresolved_count = count($open_items); $json = array('content' => $content, 'number' => (int) $unresolved_count); return id(new AphrontAjaxResponse())->setContent($json); }
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; }
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $issue_key = $request->getURIData('key'); $issues = PhabricatorSetupCheck::runAllChecks(); PhabricatorSetupCheck::setOpenSetupIssueKeys(PhabricatorSetupCheck::getUnignoredIssueKeys($issues), $update_database = true); if (empty($issues[$issue_key])) { $content = id(new PHUIInfoView())->setSeverity(PHUIInfoView::SEVERITY_NOTICE)->setTitle(pht('Issue Resolved'))->appendChild(pht('This setup issue has been resolved. '))->appendChild(phutil_tag('a', array('href' => $this->getApplicationURI('issue/')), pht('Return to Open Issue List'))); $title = pht('Resolved Issue'); } else { $issue = $issues[$issue_key]; $content = $this->renderIssue($issue); $title = $issue->getShortName(); } $crumbs = $this->buildApplicationCrumbs()->setBorder(true)->addTextCrumb(pht('Setup Issues'), $this->getApplicationURI('issue/'))->addTextCrumb($title, $request->getRequestURI()); return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->appendChild($content); }
public function handleRequest(AphrontRequest $request) { $viewer = $request->getViewer(); $nav = $this->buildSideNavView(); $nav->selectFilter('issue/'); $issues = PhabricatorSetupCheck::runNormalChecks(); PhabricatorSetupCheck::setOpenSetupIssueKeys(PhabricatorSetupCheck::getUnignoredIssueKeys($issues), $update_database = true); $important = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_IMPORTANT, 'fa-warning'); $php = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_PHP, 'fa-code'); $mysql = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_MYSQL, 'fa-database'); $other = $this->buildIssueList($issues, PhabricatorSetupCheck::GROUP_OTHER, 'fa-question-circle'); $no_issues = null; if (empty($issues)) { $no_issues = id(new PHUIInfoView())->setTitle(pht('No Issues'))->appendChild(pht('Your install has no current setup issues to resolve.'))->setSeverity(PHUIInfoView::SEVERITY_NOTICE); } $title = pht('Setup Issues'); $header = id(new PHUIHeaderView())->setHeader($title)->setProfileHeader(true); $crumbs = $this->buildApplicationCrumbs($nav)->addTextCrumb(pht('Setup Issues'))->setBorder(true); $page = array($no_issues, $important, $php, $mysql, $other); $content = id(new PhabricatorConfigPageView())->setHeader($header)->setContent($page); return $this->newPage()->setTitle($title)->setCrumbs($crumbs)->setNavigation($nav)->appendChild($content)->addClass('white-background'); }