gestione gare pubbliche
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

743 righe
27 KiB

<?
use Whoops\Run;
class attiCPN {
public $info;
public $version;
public $modulo;
public $elemento;
public $codice_cpn;
public $codice_lotto;
private $checksPDO;
private $db;
public function __construct() {
global $pdo;
$this->db = $pdo;
$this->version = self::getVersion();
$this->modulo = "cpn";
}
public function updateStato($stato) {
if (empty($this->info["stato"]) || $this->info["stato"] < $stato) {
$this->db->go("UPDATE b_cpn SET stato = :stato WHERE codice = :codice",[":stato"=>$stato,":codice"=>$this->info["codice"]]);
}
if (isset($_SESSION["ente"])) {
$_SESSION["ente"]->manageUpdates("cpn",$this->info["codice"],$this);
}
}
public static function getVersion($data = "") {
$return = "latest";
if (!empty($data)) {
$data = strtotime($data);
// TODO: Implementare riconoscimento versione su aggiornamenti
}
return $return;
}
public static function getSceltaContraenteFromGara($id,$data = "") {
$source = "raccordoGare.json";
if (!empty($source)) {
$version = self::getVersion($data);
$path = self::getVersionPath($version);
if (!empty($path)) {
$path .= "/misc/{$source}";
if (file_exists($path)) {
$options = jsonToArray($path);
if (!empty($options)) {
return $options[$id] ?? false;
}
}
}
}
return false;
}
public static function getVersionPath($version) {
$path = __DIR__ . "/versions/{$version}";
if (is_dir($path)) { return $path; }
return false;
}
public function printEditGara() {
return $this->includeView("/views/form-gara.php");
}
public function printEditLotto($codice_lotto = 0) {
return $this->includeView("/views/form-lotto.php",$codice_lotto);
}
public function printEditAtto($codice_atto = 0,$tipologia = null) {
return $this->includeView("/views/form-atto.php",$codice_atto,$tipologia);
}
private function includeView($view,$codice_riferimento=0,$data = null) {
$path = self::getVersionPath($this->version);
if (!empty($path)) {
$path .= $view;
if (file_exists($path)) {
include($path);
return true;
}
}
return false;
}
public static function relazioniModulo($modulo,$codice_gara,$codice_lotto = null) {
global $pdo;
$bind = [];
$bind[":modulo"] = $modulo;
$bind[":codice_gara"] = $codice_gara;
$sql = "SELECT * FROM r_cpn_moduli WHERE modulo = :modulo AND codice_gara = :codice_gara ";
if ($codice_lotto !== null) {
$bind[":codice_lotto"] = $codice_lotto;
$sql .= " AND codice_lotto = :codice_lotto ";
}
return $pdo->go($sql,$bind)->fetch(PDO::FETCH_ASSOC);
}
public function getRelazioni($codice_lotto = null) {
$bind = [":codice_cpn"=>$this->info["codice"]];
$sql = "SELECT * FROM r_cpn_moduli WHERE gara_cpn = :codice_cpn ";
if (!empty($codice_lotto)) {
$bind[":codice_lotto"] = $codice_lotto;
$sql .= " AND lotto_cpn = :codice_lotto ";
}
return $this->db->go($sql,$bind)->fetchAll(PDO::FETCH_ASSOC);
}
public function getBreadcrumb($breadcrumb = []) {
$relazioni = $this->getRelazioni();
if (!empty($relazioni)) {
foreach($relazioni AS $relazione) {
if ($_SESSION["utente"]->permission($relazione["modulo"],$relazione["codice_gara"])) {
global $beRoot;
if (file_exists("{$beRoot}/{$relazione["modulo"]}/panel.php")) {
$infoModulo = Modulo::getInfo($relazione["modulo"]);
$breadcrumb["/{$relazione["modulo"]}/panel.php?codice={$relazione["codice_gara"]}"] = __($infoModulo["titolo"]) . " - " . __("Pannello");
}
}
}
}
return $breadcrumb;
}
public static function relazioniDisponibili() {
$return = [];
$return["pcp"] = ["link"=>"/backend/pcp/panel.php?codice=#codice_gara#&codice_round=#codice_fase#"];
$return["gare"] = ["link"=>"/backend/gare/panel.php?codice=#codice_gara#&codice_round=#codice_fase#"];
return $return;
}
public function saveRelazione($modulo,$codice_gara,$codice_lotto,$lotto_cpn) {
$relazioniDisponibili = self::relazioniDisponibili();
if (!empty($relazioniDisponibili[$modulo])) {
$relazione = [];
$relazione["modulo"] = $modulo;
$relazione["codice_gara"] = $codice_gara;
$relazione["codice_lotto"] = $codice_lotto;
$relazione["gara_cpn"] = $this->info["codice"];
$relazione["lotto_cpn"] = $lotto_cpn;
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "r_cpn_moduli";
$salva->operazione = "INSERT";
$salva->oggetto = $relazione;
$codice = $salva->save();
if (!empty($codice)) { return true; }
}
}
private static function moduliSuggerimenti() {
$moduli = [];
$moduli["gare"] = ["titolo"=>"Gare e affidamenti","url"=>"/backend/gare/cpn/suggestions.php"];
$moduli["pcp"] = ["titolo"=>"PCP","url"=>"/backend/pcp/cpn/suggestions.php"];
return $moduli;
}
public function printSuggerimenti() {
$return = false;
include __DIR__."/atti/table-suggerimenti.php";
return $return;
}
public function suggerimenti() {
$data = [];
global $root;
$moduli = self::moduliSuggerimenti();
if (!empty($moduli)) {
foreach($moduli AS $modulo => $info) {
if (!empty($info["url"]) && file_exists($root.$info["url"])) {
foreach($this->getLotti() AS $lotto) {
$cig = $lotto["cig"];
if (!empty($cig)) {
include($root.$info["url"]);
}
}
}
}
}
return $data;
}
public function linkAttoAllegato(int $atto, array $allegati) {
if (!empty($atto) && !empty($allegati) && !empty($this->getAtti($atto)[0])) {
$suggerimenti = $this->suggerimenti();
foreach($suggerimenti AS $suggerimento) {
if (in_array($suggerimento["codice"],$allegati) !== false) {
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "r_cpn_atti_files";
$salva->operazione = "INSERT";
$salva->oggetto = [
"codice_atto" => $atto,
"codice_allegato" => $suggerimento["codice"],
"modulo" => $suggerimento["sourceType"],
"riferimento_allegato" => $suggerimento["sourceID"]
];
$salva->save();
}
}
}
}
public function saveGara($post,$saveDati) {
$return = false;
$entiAbilitati = $_SESSION["utente"]->getEntiBeneficiari(false);
$checkEnte = false;
foreach($entiAbilitati AS $ente) {
if ($post["codice_ente"] == $ente["codice"]) {
$checkEnte = true;
break;
}
}
if ($checkEnte) {
$availableDati[] = "idAnac";
$availableDati[] = "cf_sua";
$availableDati[] = "denominazione_sua";
$availableDati[] = "importo";
$availableDati[] = "idAnac";
$availableDati[] = "cigAccQuadro";
$availableDati[] = "ufficio";
$availableDati[] = "tipoProcedura";
$availableDati[] = "settore";
$availableDati[] = "centraleCommittenza";
$availableDati[] = "realizzazione";
$availableDati[] = "cognome";
$availableDati[] = "nome";
$availableDati[] = "cfPiva";
$dati = [];
if (!empty($this->info)) { $dati = json_decode($this->info["dati"],true); }
foreach($availableDati AS $key) {
if (isset($post["dati"][$key])) {
$dati[$key] = $post["dati"][$key];
} else {
$upper = strtoupper($key);
if (isset($post["dati"][$upper])) {
$dati[$key] = $post["dati"][$upper];
} else {
$dati[$key] = "";
}
}
}
$gara = [];
$gara["codice"] = $post["codice"] ?? 0;
$gara["codice_ente"] = $post["codice_ente"];
$gara["oggetto"] = $post["oggetto"];
$gara["dati"] = json_encode($dati);
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_cpn";
$salva->operazione = (empty($gara["codice"])) ? "INSERT" : "UPDATE";
$salva->oggetto = $gara;
$codice = $salva->save();
if ($codice != false) {
$error = false;
$gara["codice"] = $codice;
$this->info = $gara;
$return["esito"] = true;
$return["codice"] = $codice;
} else {
$return["errori"][] = __("Errore nel salvataggio della gara");
}
} else {
$return["errori"][] = __("Ente non abilitato");
}
if (!empty($return["codice"])) {
$this->getManagerRegistro()->addToLog("SAVE",__("Dati gara"));
if (empty($post["codice"])) {
if ($this->modulo != "cpn") {
$utenti = ente::getUtentiFromModulo($this->modulo,$_SESSION["ente"]->codice,"",$return["codice"]);
if ($_SESSION["utente"]->gerarchia > 15) { $utenti[] = $_SESSION["utente"]->codice; }
if (!empty($utenti)) {
foreach($utenti AS $utente) {
$permesso = [];
$permesso["sezione"] = "cpn";
$permesso["codice_elemento"] = $this->info["codice"];
$permesso["codice_gestore"] = $_SESSION["ente"]->codice;
$permesso["funzione"] = "0";
$permesso["codice_utente"] = $utente;
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "r_permessi";
$salva->operazione = "INSERT";
$salva->oggetto = $permesso;
$salva->save();
}
}
}
}
}
return $return;
}
public function saveLotto($lotto,$saveDati = false) {
$return = false;
if (!empty($this->info["codice"])) {
if (!empty($lotto["cpv"])) {
$dbLotto = get_campi("b_cpn_lotti");
if (!empty($lotto["codice"])) { $dbLotto = $this->getLotti($lotto["codice"])[0]; }
$dati = [];
if (!empty($dbLotto)) {
$lotto["codice"] = $dbLotto["codice"];
$dati = json_decode($dbLotto["dati"],true);
}
if ($saveDati) {
$availableDati = [];
$availableDati[] = "cupEsente";
$availableDati[] = "idSceltaContraente50";
$availableDati[] = "criterioAggiudicazione";
$availableDati[] = "luogoNuts";
$availableDati[] = "categoria";
$availableDati[] = "classifica";
$availableDati[] = "tipoAppalto";
$availableDati[] = "contrattoEsclusoAlleggerito";
$availableDati[] = "esclusioneRegimeSpeciale";
foreach($availableDati AS $key) {
if (isset($lotto["dati"][$key])) {
$dati[$key] = $lotto["dati"][$key];
} else {
$upper = strtoupper($key);
if (isset($lotto["dati"][$upper])) {
$dati[$key] = $lotto["dati"][$upper];
} else {
$dati[$key] = "";
}
}
}
}
$dati["cpv"] = $lotto["cpv"];
if (isset($dati["cupEsente"]) && $dati["cupEsente"] === "1") {
$lotto["cup"] = "";
}
$lotto["dati"] = json_encode($dati);
$lotto["codice_cpn"] = $this->info["codice"];
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_cpn_lotti";
$salva->operazione = (empty($lotto["codice"])) ? "INSERT" : "UPDATE";
$salva->oggetto = $lotto;
$codice = $salva->save();
if ($codice != false) {
$return["esito"] = true;
$return["codice"] = $codice;
$this->getManagerRegistro()->addToLog("SAVE",__("Dati lotto"),$lotto["codice"] ?? 0);
} else {
$return["errori"][] = __("Errore nel salvataggio del lotto");
}
} else {
$return["errori"][] = __("Selezionare almeno una categoria CPV");
}
} else {
$return["errori"][] = __("Nessuna gara selezionata");
}
return $return;
}
public function saveAtto($atto,$saveDati = true) {
$return = false;
if (!empty($this->info["codice"])) {
$tipologia = self::getOptions("atti")[$atto["tipo"]];
if (!empty($tipologia)) {
$dbAtto = get_campi("b_cpn_atti");
if (!empty($atto["codice"])) { $dbAtto = $this->getAtti($atto["codice"])[0]; }
if (!empty($dbAtto)) {
$atto["codice"] = $dbAtto["codice"];
}
$storico = $this->getAtti();
$continua = true;
if (!empty($storico)) {
foreach($storico AS $tmp) {
if ($tmp["tipo"] == $atto["tipo"] && (empty($atto["codice"]) || $tmp["codice"] != $atto["codice"])) {
$continua = false;
}
}
}
if ($continua) {
if ($saveDati) {
$atto["dati"] = json_encode($atto["dati"]);
}
$atto["codice_cpn"] = $this->info["codice"];
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_cpn_atti";
$salva->operazione = (empty($atto["codice"])) ? "INSERT" : "UPDATE";
$salva->oggetto = $atto;
$codice = $salva->save();
if ($codice != false) {
$return["esito"] = true;
$return["codice"] = $codice;
$this->getManagerRegistro()->addToLog("SAVE",$tipologia,$atto["codice"]);
} else {
$return["errori"][] = __("Errore nel salvataggio dell' atto");
}
} else {
$return["errori"][] = __("Tipologia già inserita");
}
} else {
$return["errori"][] = __("Tipologia non prevista");
}
} else {
$return["errori"][] = __("Nessuna gara selezionata");
}
return $return;
}
public function getManagerRegistro() {
return new registriManager("cpn",$this->info["codice"]);
}
public function addToLog($operazione,$oggetto) {
return $this->getManagerRegistro()->addToLog($operazione,$oggetto,$this->info["codice"]);
}
public function getLog($start=0,$length=-1) {
return $this->getManagerRegistro()->getLog($start,$length);
}
public function getLastCPNLog($method,$codice_lotto = 0) {
return $this->db->go("SELECT codice,esito,msg FROM b_cpn_log WHERE codice_cpn = :cpn AND metodo = :method AND codice_lotto = :codice_lotto ORDER BY codice DESC LIMIT 0,1",
[":cpn"=>$this->info["codice"],":method"=>$method,":codice_lotto"=>$codice_lotto])->fetch(PDO::FETCH_ASSOC) ?? FALSE;
}
public function updateCPNLog($method,$esito,$msg,$codice_lotto = 0) {
$log = $this->getLastCPNLog($method,$codice_lotto);
if (!empty($log)) {
$log["esito"] = $esito;
$log["msg"] = $msg;
$salva = new salva();
$salva->debug = false;
$salva->nome_tabella = "b_cpn_log";
$salva->operazione = "UPDATE";
$salva->oggetto = $log;
$salva->save();
}
}
public function getStrutturaGara() {
$lotti = $this->getLotti();
if (!empty($lotti)) {
$return = [];
$info = $this->info;
$dati = $this->getDati();
$return = [
"oggetto" => $info["oggetto"],
"idAnac" => $dati["idAnac"],
"codiceFiscaleSA" => $dati["cf_sua"],
"cigAccQuadro" => $dati["cigAccQuadro"],
"tipoProcedura" => $dati["tipoProcedura"],
"centraleCommittenza" => $dati["centraleCommittenza"],
"importoGara" => $dati["importo"],
"settore" => $dati["settore"],
"realizzazione" => $dati["realizzazione"],
"tecnicoRup" => [
"cognome" => $dati["cognome"],
"nome" => $dati["nome"],
"cfPiva" => $dati["cfPiva"]
],
"lotti" => []
];
$count = 0;
foreach ($lotti AS $lottoDb) {
$count++;
$datiLotto = json_decode($lottoDb["dati"],true);
if (!empty($datiLotto["cpv"])) {
$cpvs = cpvManager::getInfo($datiLotto["cpv"]);
$cpvPrimaria = null;
$cpvSecondarie = [];
foreach($cpvs AS $cpv) {
if (isset($cpvPrimaria)) {
$cpvSecondarie[] = $cpv["codice_completo"];
} else {
$cpvPrimaria = $cpv["codice_completo"];
}
}
}
$lotto = [
"oggetto" => $lottoDb["oggetto"],
"importoLotto" => $lottoDb["importo"],
"numeroLotto" => $count,
"cig" => $lottoDb["cig"],
"cup" => $lottoDb["cup"],
"cpv" => $cpvPrimaria,
"idSceltaContraente50" => $datiLotto["idSceltaContraente50"] ?? "",
"categoria" => $datiLotto["categoria"] ?? "",
"classe" => $datiLotto["classifica"] ?? "" ?? "",
"tipoAppalto" => $datiLotto["tipoAppalto"] ?? "",
"criterioAggiudicazione" => $datiLotto["criterioAggiudicazione"] ?? "",
"luogoNuts" => $datiLotto["luogoNuts"] ?? "",
"cupEsente" => $datiLotto["cupEsente"] ?? "",
"contrattoEsclusoAlleggerito" => $datiLotto["contrattoEsclusoAlleggerito"] ?? "",
"esclusioneRegimeSpeciale" => $datiLotto["esclusioneRegimeSpeciale" ?? ""]
];
if (!empty($cpvSecondarie)) {
$lotto["cpvSecondari"] = [];
foreach($cpvSecondarie AS $cpv) {
$lotto["cpvSecondari"][] = ["cpv"=>$cpv];
}
}
$return["lotti"][] = $lotto;
}
if (!empty($info["id_cpn"])) {
$return["idRicevuto"] = $info["id_cpn"];
}
return $return;
}
}
public function getStrutturaAtto($codice_atto) {
global $config;
$atto = $this->getAtti($codice_atto)[0] ?? null;
if (!empty($atto)) {
$dati = json_decode($atto["dati"],true);
$documenti = $this->getAllegati($atto["codice"]);
if (!empty($dati) && !empty($documenti)) {
$return = [
"tipoDocumento" => $atto["tipo"],
"eventualeSpecificazione" => $dati["note"] ?? "",
"dataPubblicazione" => $dati["dataPubblicazione"] ?? "",
"dataScadenza" => $dati["dataScadenza"] ?? "",
"dataProvvedimento" => $dati["dataProvvedimento"] ?? "",
"numeroProvvedimento" => $dati["numeroProvvedimento"] ?? "",
"dataStipula" => $dati["dataStipula"] ?? "",
"numeroRepertorio" => $dati["numeroRepertorio"] ?? "",
"ribassoAggiudicazione" => $dati["ribassoAggiudicazione"] ?? "",
"offertaAumento" => $dati["offertaAumento"] ?? "",
"importoAggiudicazione" => $dati["importoAggiudicazione"] ?? "",
"dataAggiudicazione" => $dati["dataAggiudicazione"] ?? ""
];
$docs = [];
$link = $config["protocollo"] . $_SESSION["ente"]->getInfo()["dominio"];
if (!empty($documenti["allegati"])) {
foreach($documenti["allegati"] AS $allegato) {
$docs[] = [
"titolo" => $allegato["titolo"],
"url" => $link.filesManager::getAttachURL($allegato,$atto["codice"],"cpn-public",false)
];
}
}
if (!empty($documenti["refs"])) {
foreach($documenti["refs"] AS $allegato) {
$docs[] = [
"titolo" => $allegato["titolo"],
"url" => $link.$allegato["href"]
];
}
}
$return["documenti"] = $docs;
$return["gara"] = $this->getStrutturaGara();
if (!empty($atto["idRicevuto"])) {
$return["idRicevuto"] = $atto["idRicevuto"];
}
return $return;
}
}
}
public function getRequest($method,$codice_riferimento = null) {
$dati = null;
if ($method == "sendGara") {
$dati = ["method"=>"inviaGara","data"=>$this->getStrutturaGara()];
} else if ($method == "sendAtto" && !empty($codice_riferimento)) {
$dati = ["method"=>"inviaAtto","data"=>$this->getStrutturaAtto($codice_riferimento)];
}
return $dati;
}
public function getDati() {
$return = json_decode($this->info["dati"],true);
return $return;
}
public static function getStati() {
return jsonToArray(__DIR__."/stati.json");
}
public function getLotti($codice = null) {
$bind = [":codice_cpn"=>$this->info["codice"]];
$sql = "SELECT * FROM b_cpn_lotti WHERE codice_cpn = :codice_cpn AND eliminato = 'N' ";
if ($codice !== null) {
$bind[":codice"] = $codice;
$sql .= " AND codice = :codice ";
}
return $this->db->go($sql . " ORDER BY ordinamento, codice",$bind)->fetchAll(PDO::FETCH_ASSOC);
}
public function getAtti($codice = null) {
$bind = [":codice_cpn"=>$this->info["codice"]];
$sql = "SELECT * FROM b_cpn_atti WHERE codice_cpn = :codice_cpn AND eliminato = 'N' ";
if ($codice !== null) {
$bind[":codice"] = $codice;
$sql .= " AND codice = :codice ";
}
return $this->db->go($sql . " ORDER BY codice",$bind)->fetchAll(PDO::FETCH_ASSOC);
}
public function getAllegati(int $atto) {
if (!empty($this->getAtti($atto)) && !empty($atto)) {
$refs = $this->getRefsAllegati($atto);
$allegati = filesManager::listFiles($atto,"cpn-public");
if (!empty($refs) || !empty($allegati)) {
return ["refs"=>$refs,"allegati"=>$allegati];
}
}
}
public function getRefsAllegati($atto = null) {
if (empty($atto)) {
$bind = [":codice" => $this->info["codice"]];
$sql = "SELECT * FROM r_cpn_atti_files WHERE codice_atto IN (SELECT codice FROM b_cpn_atti WHERE codice_cpn = :codice)";
} else {
$bind = [":codice_atto"=>$atto];
$sql = "SELECT * FROM r_cpn_atti_files WHERE codice_atto = :codice_atto ";
}
$allegati = $this->db->go($sql . " ORDER BY codice",$bind)->fetchAll(PDO::FETCH_ASSOC);
$return = [];
if (!empty($allegati)) {
foreach($allegati AS $allegato) {
$codice_relazione = $allegato["codice"];
$allegato = filesManager::listFiles($allegato["riferimento_allegato"],$allegato["modulo"],"A",[$allegato["codice_allegato"]])[0];
$allegato["codice_relazione"] = $codice_relazione;
$allegato["href"] = filesManager::getAttachURL($allegato,$allegato["sourceID"],$allegato["sourceType"],true);
$return[] = $allegato;
}
}
return $return;
}
public static function init($codice) {
if (!empty($codice) && !empty($_SESSION["utente"]) && !empty($_SESSION["ente"])) {
global $pdo;
$bind = [":codice"=>$codice,":codice_gestore"=>$_SESSION["ente"]->codice];
$sql = "SELECT * FROM b_cpn WHERE codice = :codice ";
if (!$_SESSION["utente"]->fromHere()) {
$sql .= " AND codice_ente = :codice_ente";
$bind[":codice_ente"] = $_SESSION["utente"]->codice_ente;
}
if ($_SESSION["utente"]->gerarchia > 10) {
$ids = Utente::getPermissionsInModulo($_SESSION["ente"]->codice,$_SESSION["utente"]->codice,"cpn");
$ids = implode(",",$ids);
$sql .= " AND b_cpn.codice IN ({$ids}) ";
}
$cpn = $pdo->go($sql,$bind)->fetch(PDO::FETCH_ASSOC);
if (!empty($cpn)) {
$continua = true;
if ($_SESSION["utente"]->codice_ente != $_SESSION["ente"]->codice && $_SESSION["utente"]->codice_ente != $cpn["codice_ente"] && $_SESSION["utente"]->gerarchia > 9) {
$continua = false;
}
if ($continua) {
$instance = new attiCPN();
$instance->info = $cpn;
$instance->version = self::getVersion($cpn["data_invio_cpn"]);
return $instance;
}
}
}
return false;
}
private static function defaultAutenticationLevel() {
return $_SESSION["ente"]->defaultAutenticationLevel();
}
public function checkLock($id_cmd) {
$return = true;
$stato = $this->info["stato"] ?? 0;
if (!$_SESSION["utente"]->readOnly) {
if (($stato >= 0) && !empty($id_cmd) && $_SESSION["utente"]->unlockSupporto()) {
$cmd = self::getInfoModulo($id_cmd);
if ($cmd !== false) {
$loa = $cmd["authenticationLevel"] ?? self::defaultAutenticationLevel();
if ($_SESSION["utente"]->authenticationLevel < $loa) {
return true;
}
if (($stato >= $cmd["stato_minimo"] || $cmd["stato_minimo"] == null) && ($stato <= $cmd["stato_massimo"] || $cmd["stato_massimo"] === null)) { $return = false; }
}
}
}
return $return;
}
static function getModuli($stato = null) {
global $config;
$moduli = jsonToArray($config["jsonFolder"]."/cpn-panel.json");
$tmp = [];
foreach($moduli AS $id_modulo => $modulo) {
$insert = true;
if ($insert && $stato !== null) {
if ($modulo["stato_minimo"] > $stato) { $insert = false; }
}
if (is_array($modulo["stati_esclusi"]) && in_array($stato,$modulo["stati_esclusi"]) !== false) { $insert = false; }
if ($insert)$tmp[$id_modulo] = $modulo;
$moduli = $tmp;
}
return $moduli;
}
static function getInfoModulo($radice) {
$return = false;
if (!empty($radice)) {
$moduli = self::getModuli();
if (!empty($moduli[$radice])) {
$return = $moduli[$radice];
$return["id"] = $radice;
$return["titolo"] = __($return["titolo"]);
$return["descrizione"] = __($return["descrizione"]);
}
}
return $return;
}
static function getOptions($sorgente, $data = null) {
$path = self::getVersionPath(self::getVersion($data));
$sorgente .= ".json";
if (!empty($path)) {
$path .= "/sources/{$sorgente}";
if (file_exists($path)) {
$data = jsonToArray($path);
if (!empty($data["data"])) {
$return = [];
foreach($data["data"] AS $option) {
$return[$option["code"]] = $option["value"];
}
ksort($return);
return $return;
}
}
}
return false;
}
}