mirror of
https://github.com/silverstripe/silverstripe-environmentcheck
synced 2024-06-18 18:51:31 +02:00
Remove PHP 5.5 from Travis configuration. Dotenv used for environment management now, examples and tests updated to use putenv instead of define. Logger alias update to LoggerInterface. Update mutable config API calls. Replace array declaration with short version: []. Update license year.
126 lines
2.7 KiB
PHP
126 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace SilverStripe\EnvironmentCheck;
|
|
|
|
use InvalidArgumentException;
|
|
use SilverStripe\ORM\ArrayList;
|
|
use SilverStripe\View\ArrayData;
|
|
use SilverStripe\View\ViewableData;
|
|
|
|
/**
|
|
* A single set of results from running an EnvironmentCheckSuite
|
|
*
|
|
* @package environmentcheck
|
|
*/
|
|
class EnvironmentCheckSuiteResult extends ViewableData
|
|
{
|
|
/**
|
|
* @var ArrayList
|
|
*/
|
|
protected $details;
|
|
|
|
/**
|
|
* @var int
|
|
*/
|
|
protected $worst = 0;
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->details = new ArrayList();
|
|
}
|
|
|
|
/**
|
|
* @param int $status
|
|
* @param string $message
|
|
* @param string $checkIdentifier
|
|
*/
|
|
public function addResult($status, $message, $checkIdentifier)
|
|
{
|
|
$this->details->push(new ArrayData([
|
|
'Check' => $checkIdentifier,
|
|
'Status' => $this->statusText($status),
|
|
'StatusCode' => $status,
|
|
'Message' => $message,
|
|
]));
|
|
|
|
$this->worst = max($this->worst, $status);
|
|
}
|
|
|
|
/**
|
|
* Returns true if there are no errors.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function ShouldPass()
|
|
{
|
|
return $this->worst <= EnvironmentCheck::WARNING;
|
|
}
|
|
|
|
/**
|
|
* Returns overall (i.e. worst) status as a string.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function Status()
|
|
{
|
|
return $this->statusText($this->worst);
|
|
}
|
|
|
|
/**
|
|
* Returns detailed status information about each check.
|
|
*
|
|
* @return ArrayList
|
|
*/
|
|
public function Details()
|
|
{
|
|
return $this->details;
|
|
}
|
|
|
|
/**
|
|
* Convert the final result status and details to JSON.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function toJSON()
|
|
{
|
|
$result = [
|
|
'Status' => $this->Status(),
|
|
'ShouldPass' => $this->ShouldPass(),
|
|
'Checks' => []
|
|
];
|
|
foreach ($this->details as $detail) {
|
|
$result['Checks'][] = $detail->toMap();
|
|
}
|
|
return json_encode($result);
|
|
}
|
|
|
|
/**
|
|
* Return a text version of a status code.
|
|
*
|
|
* @param int $status
|
|
* @return string
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
protected function statusText($status)
|
|
{
|
|
switch ($status) {
|
|
case EnvironmentCheck::ERROR:
|
|
return 'ERROR';
|
|
break;
|
|
case EnvironmentCheck::WARNING:
|
|
return 'WARNING';
|
|
break;
|
|
case EnvironmentCheck::OK:
|
|
return 'OK';
|
|
break;
|
|
case 0:
|
|
return 'NO CHECKS';
|
|
break;
|
|
default:
|
|
throw new InvalidArgumentException("Bad environment check status '$status'");
|
|
break;
|
|
}
|
|
}
|
|
}
|