"Gare e affidamenti","script"=>"/gare/incarichi/init.php"]; $return["albo_fornitori"] = ["titolo"=>"Albo fornitori","script"=>"/albo_fornitori/incarichi/init.php"]; $return["pcp"] = ["titolo"=>"Appalti pre-commerciali","script"=>"/pcp/incarichi/init.php"]; $return["progetti"] = ["titolo"=>"Progetti d'investimento","script"=>"/progetti/incarichi/init.php"]; $return["concorsi"] = ["titolo"=>"Concorsi di progettazione","script"=>"/concorsi/incarichi/init.php"]; $return["albi_commissione"] = ["titolo"=>"Albi commissione","script"=>"/albi_commissione/incarichi/init.php"]; return $return; } public function __construct($modulo,$elemento) { if (!empty($modulo) && !empty($elemento) && !empty(self::moduliAbilitati()[$modulo])) { global $pdo; $this->modulo = $modulo; $this->elemento = $elemento; $this->db = $pdo; $this->rupObbligatorio = true; return $this; } return false; } public function getIncaricati() { return self::getIncaricatiFromElement($this->modulo,$this->elemento); } public function checkSingleRP(Array $incaricati) : Bool { // verifichiamo che ci sia un singolo RUP nel modulo gare if(in_array($this->modulo, ["gare", "concorsi", "albo_fornitori"])) { $count_rup = 0; foreach($incaricati as $incaricato) { if($incaricato["ruolo"] == 14) $count_rup++; } if($count_rup !== 1) { return false; } } return true; } public function saveIncaricato(Array $incaricato) : ?Int { global $config; $incaricato["codice_fiscale"] = trim(strtoupper($incaricato["codice_fiscale"])); $incaricato["extraInfo"] = simple_encrypt(json_encode($incaricato["extraInfo"]),$config["simple_encrypt"]["incarichi"]); $incaricato["modulo"] = $this->modulo; $incaricato["codice_elemento"] = $this->elemento; $salva = new salva(); $salva->debug = false; $salva->nome_tabella = "b_incaricati"; $salva->operazione = !empty($incaricato["codice"]) ? "UPDATE" : "INSERT"; $salva->oggetto = $incaricato; if ($incaricato["ruolo"] == 14) { $object = $this->getObject(); Utente::addPermissionForRP($incaricato["codice_fiscale"],$object->info["codice_ente"] ?? $_SESSION["ente"]->codice,$this->modulo,$this->elemento); } return $salva->save(); } public function deleteUnused(Array $found) { $sql = "DELETE FROM b_incaricati WHERE modulo = :modulo and codice_elemento = :elemento "; if (!empty($found)) { $sql .= " AND codice NOT IN (".implode(",",$found).")"; } $this->db->go($sql,[":modulo"=>$this->modulo,":elemento"=>$this->elemento]); scriviLog("b_incaricati","DELETE",$this->db->getSQL()); } public static function getIncaricatiFromElement($modulo,$elemento,$ruolo = null) { $bind = [":modulo"=>$modulo,":elemento"=>$elemento]; $sql = "SELECT * FROM b_incaricati WHERE modulo = :modulo AND codice_elemento = :elemento"; if (!empty($ruolo)) { $bind[":ruolo"] = $ruolo; $sql .= " AND ruolo = :ruolo "; } global $pdo; $return = $pdo->go($sql,$bind); if ($return->rowCount() > 0) { $tmp = $return->fetchAll(PDO::FETCH_ASSOC); $return = []; foreach($tmp AS $incaricato) { $incaricato["extraInfo"] = json_decode(simple_decrypt($incaricato["extraInfo"],"incaricatiAAAAAA"),true); $return[] = $incaricato; } return $return; } } public function checkAdminPermission() { global $beRoot; $returnObject = false; $path = $beRoot . self::moduliAbilitati()[$this->modulo]["script"]; if (file_exists($path)) { include($path); return $return; } return false; } public function getObject() { if (empty($this->object)) { global $beRoot; $returnObject = true; $path = $beRoot . self::moduliAbilitati()[$this->modulo]["script"]; if (file_exists($path)) { include($path); if (!empty($return)) { $this->object = $return; } } } if (!empty($this->object)) { return $this->object; } return false; } public function printEditor() { if ($this->checkAdminPermission()) { $this->admin = true; include (__DIR__."/backend-manage.php"); } return false; } } ?>