public function processRequest()
 {
     try {
         $status = PhabricatorNotificationClient::getServerStatus();
         $status = $this->renderServerStatus($status);
     } catch (Exception $ex) {
         $status = new AphrontErrorView();
         $status->setTitle('Notification Server Issue');
         $status->appendChild(hsprintf('Unable to determine server status. This probably means the server ' . 'is not in great shape. The specific issue encountered was:' . '<br />' . '<br />' . '<strong>%s</strong> %s', get_class($ex), phutil_escape_html_newlines($ex->getMessage())));
     }
     $crumbs = $this->buildApplicationCrumbs();
     $crumbs->addTextCrumb(pht('Status'));
     return $this->buildApplicationPage(array($crumbs, $status), array('title' => pht('Notification Server Status'), 'device' => false));
 }
 protected function executeChecks()
 {
     $enabled = PhabricatorEnv::getEnvConfig('notification.enabled');
     if (!$enabled) {
         // Notifications aren't set up, so just ignore all of these checks.
         return;
     }
     try {
         $status = PhabricatorNotificationClient::getServerStatus();
     } catch (Exception $ex) {
         $message = pht("Phabricator is configured to use a notification server, but is " . "unable to connect to it. You should resolve this issue or disable " . "the notification server. It may be helpful to double check your " . "configuration or restart the server using the command below.\n\n%s", phutil_tag('pre', array(), array(get_class($ex), "\n", $ex->getMessage())));
         $this->newIssue('aphlict.connect')->setShortName(pht('Notification Server Down'))->setName(pht('Unable to Connect to Notification Server'))->setMessage($message)->addRelatedPhabricatorConfig('notification.enabled')->addRelatedPhabricatorConfig('notification.server-uri')->addCommand(pht("(To start the server, run this command.)\n%s", 'phabricator/ $ ./bin/aphlict start'));
         return;
     }
     $expect_version = PhabricatorNotificationClient::EXPECT_VERSION;
     $have_version = idx($status, 'version', 1);
     if ($have_version != $expect_version) {
         $message = pht('The notification server is out of date. You are running server ' . 'version %d, but Phabricator expects version %d. Restart the server ' . 'to update it, using the command below:', $have_version, $expect_version);
         $this->newIssue('aphlict.version')->setShortName(pht('Notification Server Version'))->setName(pht('Notification Server Out of Date'))->setMessage($message)->addCommand('phabricator/ $ ./bin/aphlict restart');
     }
 }