$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php"; include_once($configPath); if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice)) { if (isset($_POST["draw"])) { $return = []; $return["draw"] = (int) $_POST["draw"]; $return["recordsTotal"] = (int) 0; $return["recordsFiltered"] = (int) 0; $return["data"] = []; $select = trim("SELECT b_conservazione.*"); $from = "FROM b_conservazione"; $where = ""; $clause = []; $bind = []; $_POST["filters"] = html_entity_decode($_POST["filters"]); parse_str($_POST["filters"], $filters); $filters = array_filter($filters); $join = ""; if(! empty($filters["modulo"]) && ! empty($filters["riferimento"])) { switch ($filters["modulo"]) { case 'gare': $join = "LEFT JOIN b_gare ON b_gare.codice = b_conservazione.codice_elemento"; $clause[] = "(b_conservazione.modulo = :modulo AND b_conservazione.codice_elemento = :riferimento)"; $bind[":modulo"] = "gare"; $bind[":riferimento"] = (int) $filters["riferimento"]; if(! empty($filters["elemento"])) { $join = "{$join} LEFT JOIN b_gare_lotti ON b_gare_lotti.codice_gara = b_gare.codice"; $suddivisione = suddivisione_pdo($filters["elemento"], "b_gare.oggetto"); $bind = array_merge($bind, $suddivisione["bind"]); $terms[] = trim($suddivisione["sql"]); $suddivisione = suddivisione_pdo($filters["elemento"], "b_gare_lotti.oggetto"); $bind = array_merge($bind, $suddivisione["bind"]); $terms[] = trim($suddivisione["sql"]); $suddivisione = suddivisione_pdo($filters["elemento"], "b_gare_lotti.cig"); $bind = array_merge($bind, $suddivisione["bind"]); $terms[] = trim($suddivisione["sql"]); $suddivisione = suddivisione_pdo($filters["elemento"], "b_gare_lotti.cup"); $bind = array_merge($bind, $suddivisione["bind"]); $terms[] = trim($suddivisione["sql"]); $clause[] = "( " . implode(" OR ", $terms) . " )"; } break; case 'contratti': $join = "LEFT JOIN b_contratti ON b_contratti.codice = b_conservazione.codice_elemento"; $clause[] = "(b_conservazione.modulo = :modulo AND b_conservazione.codice_elemento = :riferimento)"; $bind[":modulo"] = "gare"; $bind[":riferimento"] = (int) $filters["riferimento"]; if(! empty($filters["elemento"])) { $suddivisione = suddivisione_pdo($filters["elemento"], "b_contratti.oggetto"); $bind = array_merge($bind, $suddivisione["bind"]); $terms[] = trim($suddivisione["sql"]); } break; default: $join = ""; break; } $filters["modulo"]; } if(! empty($filters)) { if(! empty($filters["modulo"])) { $clause[] = "b_conservazione.modulo = :modulo"; $bind[":modulo"] = $filters["modulo"]; } if(! empty($filters["stato"])) { $clause[] = "b_conservazione.stato = :stato"; $bind[":stato"] = $filters["stato"]; } } if(! empty($clause) && count($clause) > 0) { $where = implode(" AND ", $clause); $where = "WHERE {$where}"; } $order = "ORDER BY b_conservazione.codice ASC"; $columns = [0 => "codice", 1 => "modulo", 3 => "timestamp_esecuzione"]; if(! empty($_POST["order"][0]["column"]) && ! empty($_POST["order"][0]["dir"])) { $column = $columns[$_POST["order"][0]["column"]] ?? null; if(! empty($column)) { $dir = "ASC"; if($_POST["order"][0]["dir"] != "asc") { $dir = "DESC"; } $order = "ORDER BY b_conservazione.{$column} {$dir}"; } } $limit = "LIMIT 0, 100"; if (is_numeric($_POST["start"]) && is_numeric($_POST["length"])) { $start = (int) $_POST["start"]; $length = (int) $_POST["length"]; $limit = "LIMIT {$start}, {$length}"; } $total = $pdo->go("SELECT COUNT(codice) {$from}")->fetch(PDO::FETCH_COLUMN, 0); if($total > 0) { $return["recordsTotal"] = (int) $total; $return["recordsFiltered"] = (int) $pdo->go("SELECT COUNT(b_conservazione.codice) {$from} {$join} {$where}", $bind)->fetch(PDO::FETCH_COLUMN, 0); $pacchetti = $pdo->go("{$select} {$from} {$join} {$where} {$order} {$limit}", $bind); $stati = file_get_contents('stati.json'); $stati = json_decode($stati, TRUE); $check = $pdo->prepare("SELECT stato FROM b_conservazione_files WHERE codice_conservazione = :codice_conservazione"); $ente = $_SESSION["ente"]->getInfo(); $settings = $pdo->prepare("SELECT conservazione FROM b_enti WHERE codice = :codice"); while($pacchetto = $pacchetti->fetch(PDO::FETCH_ASSOC)) { $connettore = json_decode($ente["conservazione"], true)["connettore"] ?? ""; if(empty($connettore) && $_SESSION["ente"]->codice !== $pacchetto["codice"]) { $settings->bindValue(":codice", $pacchetto["codice_ente"]); $settings->execute(); if($settings->rowCount() == 1) { $connettore = $settings->fetch(PDO::FETCH_COLUMN, 0); $connettore = json_decode($connettore, true)["connettore"] ?? ""; } } $check->bindValue(":codice_conservazione", $pacchetto["codice"]); $check->execute(); $documents = $check->fetchAll(PDO::FETCH_COLUMN, 0); $package_files = count($documents); $documents = array_count_values($documents); $row = []; ob_start(); ?>