openstamanager/lib/classes/Settings.php

62 lines
1.8 KiB
PHP

<?php
/**
* Classe per la gestione dell impostazioni del progetto.
*
* @since 2.3
*/
class Settings
{
/** @var array Elenco delle impostazioni ottenute */
protected static $values = [];
/**
* Restituisce il valore corrente dell'impostazione ricercata.
* Se l'impostazione viene cercata più volte, il primo valore individuato viene salvato; per costringere a aggiornare i contenuto, usare l'opzione $again.
*
* @param string $nome
* @param string $sezione
* @param string $descrizione
* @param bool $again
*
* @return string
*/
public static function get($nome, $sezione = null, $descrizione = false, $again = false)
{
if (Update::isUpdateAvailable()) {
return null;
}
if (empty(self::$values[$sezione.'.'.$nome]) || !empty($again)) {
$database = Database::getConnection();
if (!$database->isInstalled()) {
return null;
}
$query = 'SELECT valore, tipo FROM zz_settings WHERE nome='.prepare($nome);
if (!empty($sezione)) {
$query .= ' AND sezione='.prepare($sezione);
}
$results = $database->fetchArray($query);
$value = null;
if (!empty($results)) {
$result = $results[0];
$value = $result['valore'];
if (!empty($descrizione) && str_contains($result['tipo'], 'query=')) {
$data = $database->fetchArray(str_replace('query=', '', $result['tipo']));
if (!empty($data)) {
$value = $data[0]['descrizione'];
}
}
}
self::$values[$sezione.'.'.$nome] = $value;
}
return self::$values[$sezione.'.'.$nome];
}
}