.
*/
namespace HTMLBuilder\Manager;
use Util\Query;
/**
* @since 2.4
*/
class WidgetManager implements ManagerInterface
{
public function manage($options)
{
$result = '';
if (isset($options['id'])) {
$result = $this->widget($options);
} else {
$result = $this->group($options);
}
return $result;
}
protected function widget($options)
{
$database = database();
// Widget richiesto
$widget = $database->fetchArray('SELECT * FROM zz_widgets WHERE id = '.prepare($options['id']))[0];
$result = ' ';
// Generazione del widget in base al tipo
switch ($widget['type']) {
// Stampa
case 'print':
$result = $this->prints($widget);
break;
// Statistiche
case 'stats':
$result = $this->stats($widget);
break;
// Chart (codice PHP)
case 'chart':
$result = $this->chart($widget);
break;
// Personalizzato (codice PHP e icona)
case 'custom':
$result = $this->custom($widget);
break;
}
return $result;
}
protected static function getModule()
{
return \Modules::get('Stato dei servizi');
}
protected function prints($widget)
{
return $this->stats($widget);
}
protected function stats($widget)
{
// Individuazione della query relativa
$query = $widget['query'];
$additionals = \Modules::getAdditionalsQuery($widget['id_module']);
if (!empty($additionals)) {
$query = str_replace('1=1', '1=1 '.$additionals, $query);
}
$query = Query::replacePlaceholder($query);
// Individuazione del risultato della query
$database = database();
$value = null;
if (!empty($query)) {
$value = $database->fetchArray($query)[0]['dato'];
if (!preg_match('/\\d/', $value)) {
$value = '-';
}
}
return $this->render($widget, $widget['text'], $value);
}
protected function chart($widget, $number = null)
{
$content = null;
if (!empty($widget['php_include'])) {
$is_title_request = true;
ob_start();
include base_dir().'/'.$widget['php_include'];
$content = ob_get_clean();
}
return $this->render($widget, $content, $number);
}
protected function custom($widget)
{
$content = null;
if (!empty($widget['php_include'])) {
$is_number_request = true;
ob_start();
include base_dir().'/'.$widget['php_include'];
$content = ob_get_clean();
}
return $this->render($widget, $widget['text'], $content);
}
protected function render($widget, $title, $number = null)
{
$result = '
';
if (!empty($widget['more_link'])) {
$result .= '
';
if (!empty($widget['icon'])) {
$result .= '
';
}
$result .= '