"Appalti pre-commerciali","script"=>"/pcp/log/init.php"]; $return["gare"] = ["titolo"=>"Gare e affidamenti","script"=>"/gare/log/init.php"]; $return["concorsi"] = ["titolo"=>"Concorsi progettazione","script"=>"/concorsi/log/init.php"]; $return["progetti"] = ["titolo"=>"Progetti","script"=>"/progetti/log/init.php"]; $return["anac"] = ["titolo"=>"ANAC","script"=>"/anac/log/init.php"]; $return["cpn"] = ["titolo"=>"Contratti Pubblici Nazionali","script"=>"/cpn/log/init.php"]; $return["omc"] = ["titolo"=>"Consultazioni di mercato","script"=>"/omc/log/init.php"]; $return["albo_fornitori"] = ["titolo"=>"Albo fornitori","script"=>"/albo_fornitori/log/init.php"]; $return["matchmaking"] = ["titolo"=>"Fabbisogni innovazione","script"=>"/matchmaking/log/init.php"]; $return["albi_commissione"] = ["titolo"=>"Albi Commissione","script"=>"/albi_commissione/log/init.php"]; return $return; } public function __construct($modulo,$codice_elemento) { if (!empty(self::moduliAbilitati()[$modulo])) { if (isset($_SESSION["ente"])) { global $pdo; $this->gestore = $_SESSION["ente"]->codice; $this->modulo = $modulo; $this->elemento = $codice_elemento; $this->db = $pdo; return $this; } } return false; } public function getInfo() { global $beRoot; $path = $beRoot . self::moduliAbilitati()[$this->modulo]["script"]; if (file_exists($path)) { include($path); return $return; } return false; } public function printTable() { include(__DIR__."/backend-table.php"); } public function addToLog($operazione,$oggetto,$sub = 0) { $salva = new salva(); $salva->debug = false; $salva->nome_tabella = "b_registri"; $salva->operazione = "INSERT"; $salva->oggetto = ["modulo"=>$this->modulo,"codice_elemento"=>$this->elemento,"sub"=>$sub,"codice_gestore"=>$this->gestore,"operazione"=>$operazione,"oggetto"=>$oggetto]; if (!empty($salva->save())) { return true; } return false; } public function getLog($start=0,$length=-1) { $sql = "SELECT * FROM b_registri WHERE modulo = :modulo AND codice_elemento = :codice_elemento "; $utentiMonitoraggio = Utente::getUtentiMonitoraggio(); if (!empty($utentiMonitoraggio)) { $sql .= " AND utente_modifica NOT IN (" . implode(",",$utentiMonitoraggio). ") "; } $sql .= "ORDER BY codice DESC"; $limit = ""; if (is_numeric($start) && is_numeric($length) && $length > 0) { $start = (int)$start; $length = (int)$length; $limit = " LIMIT {$start}, {$length}"; } return $this->db->go($sql.$limit,[":modulo"=>$this->modulo,":codice_elemento"=>$this->elemento])->fetchAll(PDO::FETCH_ASSOC); } public function getUtentiCoinvolti() { $logs = $this->getLog(); if (!empty($logs)) { $utenti = array_column($logs,"utente_modifica"); if (!empty($utenti)) { $utenti = array_unique($utenti); return $this->cleanResult($utenti); } } } public function getUtentiCoinvoltiConRuolo(string $ruolo, bool $onlyCode = false) { $return = []; $utenti = $this->getUtentiCoinvolti(); if (!empty($utenti)) { $info = Utente::getInfoFromID($utenti); if (!empty($info)) { foreach($info AS $u) { if ($u["ruolo"] === $ruolo) { $return[] = ($onlyCode) ? $u["codice"] : $u["email"]; } } } } return $this->cleanResult($return); } /** * Rimuove i riferimenti relativi alle utenze di monitoragio * * @param array $data: I dati da pulire * @return Array */ private static function cleanResult(Array $data) : Array { $utentiMonitoraggio = Utente::getUtentiMonitoraggio(); $return = []; if (!empty($utentiMonitoraggio)) { foreach($data AS $r) { if (!in_array($r["utente_modifica"] ?? -1,$utentiMonitoraggio)) { $return[] = $r; } } } else { $return = $data; } return $return; } } ?>