100 lines
1.6 KiB
PHP
100 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace alveolata\report;
|
||
|
|
||
|
// require_once(DIR_ALVEOLATA . '/definitions.php');
|
||
|
require_once(DIR_ALVEOLATA . '/string/functions.php');
|
||
|
require_once(DIR_ALVEOLATA . '/json/functions.php');
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @author Christian Fraß <frass@greenscale.de>
|
||
|
*/
|
||
|
class struct_report
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* @var string
|
||
|
* @author Christian Fraß <frass@greenscale.de>
|
||
|
*/
|
||
|
public $incident;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @var array record
|
||
|
* @author Christian Fraß <frass@greenscale.de>
|
||
|
*/
|
||
|
public $details;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @var int $timestamp UNIX timestamp
|
||
|
* @author Christian Fraß <frass@greenscale.de>
|
||
|
*/
|
||
|
public $timestamp;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @param string $incident
|
||
|
* @param array $details
|
||
|
* @author Christian Fraß <frass@greenscale.de>
|
||
|
*/
|
||
|
public function __construct(
|
||
|
string $incident,
|
||
|
array $details,
|
||
|
int $timestamp
|
||
|
)
|
||
|
{
|
||
|
$this->incident = $incident;
|
||
|
$this->details = $details;
|
||
|
$this->timestamp = $timestamp;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @param string $incident
|
||
|
* @param array $details
|
||
|
* @author Christian Fraß <frass@greenscale.de>
|
||
|
*/
|
||
|
function make(
|
||
|
string $incident,
|
||
|
array $details = [],
|
||
|
int $timestamp = -1
|
||
|
) : struct_report
|
||
|
{
|
||
|
if ($timestamp < 0) {
|
||
|
$timestamp = time();
|
||
|
}
|
||
|
return (
|
||
|
new struct_report(
|
||
|
$incident,
|
||
|
$details,
|
||
|
$timestamp
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @param \alveolata\report\type $report
|
||
|
* @return Exception
|
||
|
* @author Christian Fraß <frass@greenscale.de>
|
||
|
*/
|
||
|
function as_exception(
|
||
|
struct_report $report
|
||
|
) : \Exception
|
||
|
{
|
||
|
$message = \alveolata\string\coin(
|
||
|
'{{incident}} | {{details}}',
|
||
|
[
|
||
|
'incident' => $report->incident,
|
||
|
'details' => \alveolata\json\encode($report->details),
|
||
|
]
|
||
|
);
|
||
|
return (new \Exception($message));
|
||
|
}
|
||
|
|
||
|
?>
|