1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
<?php
// Icinga Reporting | (c) 2018 Icinga GmbH | GPLv2
namespace Icinga\Module\Reporting;
class Reportlet
{
/** @var string */
protected $class;
/** @var array */
protected $config;
/**
* Create reportlet from the given model
*
* @param Model\Reportlet $reportletModel
*
* @return static
*/
public static function fromModel(Model\Reportlet $reportletModel): self
{
$reportlet = new static();
$reportlet->class = $reportletModel->class;
$reportletConfig = [
'name' => $reportletModel->report_name,
'id' => $reportletModel->report_id
];
foreach ($reportletModel->config as $config) {
$reportletConfig[$config->name] = $config->value;
}
$reportlet->config = $reportletConfig;
return $reportlet;
}
/**
* @return string
*/
public function getClass()
{
return $this->class;
}
/**
* @return array
*/
public function getConfig()
{
return $this->config;
}
/**
* @return \Icinga\Module\Reporting\Hook\ReportHook
*/
public function getImplementation()
{
$class = $this->getClass();
return new $class();
}
}
|