Sfoglia il codice sorgente

update 20260401

master
Amerigo C. 5 mesi fa
parent
commit
db1a0e2a57
  1. 13
      .gitignore
  2. 33
      index.php
  3. 8
      lib/classes/Affitti/Domanda.php
  4. 50
      lib/classes/Affitti/DomandaSconti.php
  5. 65
      lib/classes/App/Allegati.php
  6. 74
      lib/classes/Utils/EmailSms.php
  7. 191
      lib/classes/Utils/File.php
  8. 17
      lib/config/avviso.config.php
  9. 3
      lib/config/database.config.php
  10. 8
      lib/config/spid.config.php
  11. 9
      lib/config/sportello.config.php
  12. 1516
      lib/config/stats.php
  13. 4
      lib/config/upload.config.php
  14. 43
      modules/private/account.php
  15. 2
      modules/private/gestione_allegati.php
  16. 10
      modules/private/page_nucleo_familiare.php
  17. 17
      modules/private/page_sconto.php
  18. 7
      statistiche.php
  19. 4
      webservice/domanda.php
  20. 36
      webservice/sconto.php

13
.gitignore vendored

@ -0,0 +1,13 @@
nbproject/
lib/app.config.php
upload/
md5file/
upload_taxi/
admin/
lib/app.config-DEFAULT_1.php
.vscode/
.idea/
assets/docs/decreti/
.scannerwork/
*.code-workspace

33
index.php

@ -36,28 +36,27 @@ $statoSportello = Utils::GetStatoSportello();
<div class="row"> <div class="row">
<div class="col-lg-12 text-justify"> <div class="col-lg-12 text-justify">
<div class="card"> <div class="card">
<div class="card-header text-left text-white h5 bg-danger"> <div class="card-header text-left text-white h5 bg-success">
PROT. N. 28219 del 17/07/2025 D.D.G. 4210 del 21/11/2025
</div> </div>
<div class="card-body"> <div class="card-body">
<h4 class="card-title text-center"> <h4 class="card-title text-center">
Con la <a href="#allegatirow">nota dipartimentale del Servizio 1,</a> si precisa il richiamo all’applicazione del massimale di € 37,50 Con il <a href="#allegatirow">D.D.G. n.4210 del 21/11/2025</a> è approvata l’estensione del periodo
per i residenti, per singola tratta, di validità per il riconoscimento dei contributi erogati ai soggetti beneficiari del "CONTRIBUTO
come previsto dal Bando di cui al DDG n. 3158 del 10/11/2023 e successive modifiche ed integrazioni. SUL PREZZO DEI BIGLIETTI AEREI AI CITTADINI RESIDENTI IN SICILIA PER LA RIDUZIONE DEGLI SVANTAGGI DERIVANTI DALL'INSULARITÀ"
di cui al D.D.G. n. 3158 del 10 novembre 2023 e ss. mm. ii., <strong><u>sino alla data del 28 febbraio 2026</u></strong>.
</h4> </h4>
</div> </div>
</div><br> </div><br>
<div class="card"> <div class="card">
<div class="card-header text-left text-white h5 bg-success"> <div class="card-header text-left text-white h5 bg-danger">
D.D.G. 21 del 15/01/2025 PROT. N. 28219 del 17/07/2025
</div> </div>
<div class="card-body"> <div class="card-body">
<h4 class="card-title text-center"> <h4 class="card-title text-center">
Con il <a href="#allegatirow">D.D.G. n.21 del 15/01/2025</a> è approvata l’estensione del periodo Con la nota dipartimentale del Servizio 1, si precisa il richiamo all’applicazione del massimale di € 37,50
di validità per il riconoscimento dei contributi erogati ai soggetti beneficiari del "CONTRIBUTO per i residenti, per singola tratta,
SUL PREZZO DEI BIGLIETTI AEREI AI CITTADINI RESIDENTI IN SICILIA PER LA RIDUZIONE DEGLI SVANTAGGI DERIVANTI DALL'INSULARITÀ" come previsto dal Bando di cui al DDG n. 3158 del 10/11/2023 e successive modifiche ed integrazioni.
di cui al D.D.G. n. 3158 del 10 novembre 2023 e ss. mm. ii., <strong><u>sino alla data del 31 dicembre 2025</u></strong>.<br>
<strong>Lo sconto del 25 % è pertanto concesso nelle modalità indicate nel <a href="#allegatirow">D.D.G. 3158 del 10/11/2023</a></strong>
</h4> </h4>
</div> </div>
</div><br> </div><br>
@ -81,7 +80,7 @@ $statoSportello = Utils::GetStatoSportello();
SUL PREZZO DEI BIGLIETTI AEREI AI CITTADINI RESIDENTI IN SICILIA PER LA RIDUZIONE DEGLI SVANTAGGI DERIVANTI DALL’INSULARITA’ SUL PREZZO DEI BIGLIETTI AEREI AI CITTADINI RESIDENTI IN SICILIA PER LA RIDUZIONE DEGLI SVANTAGGI DERIVANTI DALL’INSULARITA’
</h4> </h4>
<h5 class="text-center"> <h5 class="text-center">
Il Responsabile della piattaforma è il dott. <a href="mailto:helpdesk@randcompany.it"><u>Mario Parlavecchio</u></a> Il Responsabile della piattaforma è il dott. <u>Mario Parlavecchio</u>
</h5> </h5>
<!-- <hr> <!-- <hr>
<h4 class="bold text-danger text-center">AVVISO</h4> <h4 class="bold text-danger text-center">AVVISO</h4>
@ -144,11 +143,9 @@ $statoSportello = Utils::GetStatoSportello();
<li><b>Accedere</b> sulla piattaforma SiciliaPei (https://siciliapei.regione.sicilia.it/bandocarovoli) <?= Menu::renderLoginStaticHome(); ?> <b>dalle ore 09:00 del 04 Dicembre 2023 alle ore 23:59 del 30 Gennaio 2026,</b> e completare le differenti sezioni funzionali alla presentazione della richiesta di sconto.</li> <li><b>Accedere</b> sulla piattaforma SiciliaPei (https://siciliapei.regione.sicilia.it/bandocarovoli) <?= Menu::renderLoginStaticHome(); ?> <b>dalle ore 09:00 del 04 Dicembre 2023 alle ore 23:59 del 30 Gennaio 2026,</b> e completare le differenti sezioni funzionali alla presentazione della richiesta di sconto.</li>
</ol> </ol>
<h5 class="bold">ASSISTENZA E SUPPORTO</h5> <h5 class="bold">INFORMAZIONI</h5>
<p class="text-justify"> <p class="text-justify">
Dal <b>05/12/2023</b>, per richieste di assistenza e supporto per l'inserimento della richiesta Per richieste di informazioni è possibile contattare il numero <b><?= TELEFONO_ASSISTENZA ?></b> durante l'orario di ufficio</b>.
sulla piattaforma informatica, contattare il supporto tecnico al seguente numero <b><?= TELEFONO_ASSISTENZA ?></b>,
attivo dal lunedì al venerdi dalle <b>ore 09:00 alle ore 18:00</b>, festivi esclusi.
</p> </p>
<h5 class="bold">CUSTOMER SATISFACTION</h5> <h5 class="bold">CUSTOMER SATISFACTION</h5>
<p class="text-justify"> <p class="text-justify">
@ -173,13 +170,13 @@ $statoSportello = Utils::GetStatoSportello();
<ul class="list-group"> <ul class="list-group">
<li class="list-group-item bg-primary text-white">Elenco allegati disponibili</li> <li class="list-group-item bg-primary text-white">Elenco allegati disponibili</li>
<?= Menu::renderGuidaHome(); ?> <?= Menu::renderGuidaHome(); ?>
<li class="list-group-item"><a class="text-primary" href="assets/docs/BANDO CARO VOLI - DDG 4210 del 21.11.2025 Estensione periodo di validità sino al 28 febbraio 2026.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 4210 del 21/11/2025</a></li>
<li class="list-group-item"><a class="text-primary" href="assets/docs/ddg.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG <?= DDG_NUMERO ?> del <?= DDG_DATA ?></a></li> <li class="list-group-item"><a class="text-primary" href="assets/docs/ddg.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG <?= DDG_NUMERO ?> del <?= DDG_DATA ?></a></li>
<li class="list-group-item"><a class="text-primary" href="assets/docs/addendum.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> ADDENDUM DDG <?= DDG_NUMERO ?> del <?= DDG_DATA ?></a></li> <li class="list-group-item"><a class="text-primary" href="assets/docs/addendum.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> ADDENDUM DDG <?= DDG_NUMERO ?> del <?= DDG_DATA ?></a></li>
<li class="list-group-item"><a class="text-primary" href="assets/docs/DDG 301 del 14.03.2024.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 301 del 14/03/2024 </a></li> <li class="list-group-item"><a class="text-primary" href="assets/docs/DDG 301 del 14.03.2024.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 301 del 14/03/2024 </a></li>
<li class="list-group-item"><a class="text-primary" href="assets/docs/BANDO CARO VOLI_Festività natalizie.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 3848 del 05/12/2024 - ANNULLATO </a></li> <li class="list-group-item"><a class="text-primary" href="assets/docs/BANDO CARO VOLI_Festività natalizie.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 3848 del 05/12/2024 - ANNULLATO </a></li>
<li class="list-group-item"><a class="text-primary" href="assets/docs/BANDO CARO VOLI_Festività natalizie. Rev._signed.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 4645 del 30/12/2024 </a></li> <li class="list-group-item"><a class="text-primary" href="assets/docs/BANDO CARO VOLI_Festività natalizie. Rev._signed.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 4645 del 30/12/2024 </a></li>
<li class="list-group-item"><a class="text-primary" href="assets/docs/D.D.G. n. 21 del 15.01.2025_ BANDO CARO VOLI - Estensione periodo di validita sino al 31.12.2025_signed_signed.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 21 del 15/01/2025 </a></li> <li class="list-group-item"><a class="text-primary" href="assets/docs/D.D.G. n. 21 del 15.01.2025_ BANDO CARO VOLI - Estensione periodo di validita sino al 31.12.2025_signed_signed.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> DDG 21 del 15/01/2025 </a></li>
<li class="list-group-item"><a class="text-primary" href="assets/docs/Prot. 28219 del 17.07.2025 Bando Carovoli. Attuazione indicazioni del bando - Integrazione_signed.pdf" download class="text-center"><i class="fas fa-file-pdf"></i> Nota Dipartimentale Servizio 1 - Prot. n. 28219 del 17/07/2025 </a></li>
</ul> </ul>
</div> </div>
</div> </div>

8
lib/classes/Affitti/Domanda.php

@ -24,7 +24,7 @@ class Domanda extends DataClass {
public $dichiarazioni = array(); public $dichiarazioni = array();
public $allegati = array(); public $allegati = array();
public $richieste_sconti = array(); public $richieste_sconti = array();
public $richieste_sconti_erogati = array(); // public $richieste_sconti_erogati = array();
public function __construct($src = null) { public function __construct($src = null) {
global $con; global $con;
@ -72,8 +72,8 @@ class Domanda extends DataClass {
public function loadDati() { public function loadDati() {
$this->dichiarazioni = DomandaDichiarazioni::AllFromDomanda($this->ID); $this->dichiarazioni = DomandaDichiarazioni::AllFromDomanda($this->ID);
$this->allegati = Allegati::ListByDomanda($this->ID); $this->allegati = Allegati::ListByDomanda($this->ID);
$this->richieste_sconti = DomandaSconti::load($this->ID, RS_IN_ELABORAZIONE); $this->richieste_sconti = DomandaSconti::load($this->ID, 999);
$this->richieste_sconti_erogati = DomandaSconti::load($this->ID, RS_PRESA_IN_CARICO); // $this->richieste_sconti_erogati = DomandaSconti::load($this->ID, RS_PRESA_IN_CARICO);
} }
/* OBBLIGA LA GENERAZIONE DEL PDF IN CASO DI MODIFICA */ /* OBBLIGA LA GENERAZIONE DEL PDF IN CASO DI MODIFICA */
@ -304,7 +304,7 @@ class Domanda extends DataClass {
unset($vars['allegati']); unset($vars['allegati']);
unset($vars['documenti']); unset($vars['documenti']);
unset($vars['richieste_sconti']); unset($vars['richieste_sconti']);
unset($vars['richieste_sconti_erogati']); // unset($vars['richieste_sconti_erogati']);
unset($vars['DATA_REGISTRAZIONE']); unset($vars['DATA_REGISTRAZIONE']);
$sql = Utils::prepareQuery(self::TABLE_NAME, $vars); $sql = Utils::prepareQuery(self::TABLE_NAME, $vars);
//echo $sql; //echo $sql;

50
lib/classes/Affitti/DomandaSconti.php

@ -156,7 +156,7 @@ class DomandaSconti extends DataClass {
} }
public function checkDatiPreSave() { public function checkDatiPreSave() {
global $LoggedAccount, $SCALI_FASE1; global $LoggedAccount, $SCALI_FASE1, $TRATTE_ESCLUSE;
$response = array(); $response = array();
$controllValidita = true; $controllValidita = true;
@ -202,7 +202,6 @@ class DomandaSconti extends DataClass {
$controllValidita = false; $controllValidita = false;
$dati_mancanti .= " <br><b>Campo Cittadinanza</b><br> "; $dati_mancanti .= " <br><b>Campo Cittadinanza</b><br> ";
} */ } */
if (trim($this->AEROPORTO_PARTENZA) == '' || trim($this->AEROPORTO_PARTENZA_CODICE) == '') { if (trim($this->AEROPORTO_PARTENZA) == '' || trim($this->AEROPORTO_PARTENZA_CODICE) == '') {
$controllValidita = false; $controllValidita = false;
$dati_mancanti .= " <br><b>L'aeroporto di partenza</b><br> "; $dati_mancanti .= " <br><b>L'aeroporto di partenza</b><br> ";
@ -215,6 +214,22 @@ class DomandaSconti extends DataClass {
$controllValidita = false; $controllValidita = false;
$dati_mancanti .= " <br><b>La compagnia aerea</b><br> "; $dati_mancanti .= " <br><b>La compagnia aerea</b><br> ";
} }
if (
isset($TRATTE_ESCLUSE[$this->COMPAGNIA_ID]) &&
in_array(
$this->AEROPORTO_PARTENZA_CODICE . '-' . $this->AEROPORTO_DESTINAZIONE_CODICE,
$TRATTE_ESCLUSE[$this->COMPAGNIA_ID],
true
)
) {
$controllValidita = false;
$dati_mancanti .= "<br><b>La tratta selezionata non è disponibile per la compagnia indicata.</b><br>";
}
if (intval($this->COSTO_TRATTA) == 0 || trim($this->COSTO_TRATTA) == '') { if (intval($this->COSTO_TRATTA) == 0 || trim($this->COSTO_TRATTA) == '') {
$controllValidita = false; $controllValidita = false;
$dati_mancanti .= " <br><b>Il costo del volo per singola tratta</b><br> "; $dati_mancanti .= " <br><b>Il costo del volo per singola tratta</b><br> ";
@ -295,6 +310,13 @@ class DomandaSconti extends DataClass {
$dataVolo = new DateTime($this->DATA_VOLO); $dataVolo = new DateTime($this->DATA_VOLO);
$dataAperturaTratte = new DateTime(DATA_APERTURA_TRATTE); $dataAperturaTratte = new DateTime(DATA_APERTURA_TRATTE);
// if (!self::isValidTratta($this->AEROPORTO_PARTENZA_CODICE, $this->COMPAGNIA_ID, $dataVolo) ||
// !self::isValidTratta($this->AEROPORTO_DESTINAZIONE_CODICE, $this->COMPAGNIA_ID, $dataVolo)
// ) {
// $controllValidita = false;
// $dati_mancanti .= "Per la data scelta, la compagnia non effettua la tratta selezionata.";
// }
//if((!in_array($this->AEROPORTO_DESTINAZIONE_CODICE, $SCALI_FASE1) || !in_array($this->AEROPORTO_PARTENZA_CODICE, $SCALI_FASE1)) && $this->DATA_VOLO < DATA_APERTURA_TRATTE){ //if((!in_array($this->AEROPORTO_DESTINAZIONE_CODICE, $SCALI_FASE1) || !in_array($this->AEROPORTO_PARTENZA_CODICE, $SCALI_FASE1)) && $this->DATA_VOLO < DATA_APERTURA_TRATTE){
if ((!in_array($this->AEROPORTO_DESTINAZIONE_CODICE, $SCALI_FASE1) || !in_array($this->AEROPORTO_PARTENZA_CODICE, $SCALI_FASE1)) && $dataVolo < $dataAperturaTratte) { if ((!in_array($this->AEROPORTO_DESTINAZIONE_CODICE, $SCALI_FASE1) || !in_array($this->AEROPORTO_PARTENZA_CODICE, $SCALI_FASE1)) && $dataVolo < $dataAperturaTratte) {
$controllValidita = false; $controllValidita = false;
@ -313,6 +335,30 @@ class DomandaSconti extends DataClass {
return $response; return $response;
} }
public function isValidTratta($aeroporto, $compagnia, $data_volo) {
global $TRATTE_SOSPESE;
// di default la tratta è valida
$return = true;
if (!empty($aeroporto) && !empty($compagnia) && !empty($data_volo)) {
// Normalizza la data del volo
$dataVolo = ($data_volo instanceof DateTime) ? $data_volo : new DateTime($data_volo);
if (!empty($TRATTE_SOSPESE[$aeroporto][$compagnia])) {
$dataSospesaStr = $TRATTE_SOSPESE[$aeroporto][$compagnia];
$dataSospesa = new DateTime($dataSospesaStr);
// Se la data volo è uguale o successiva alla sospensione → non valida
if ($dataVolo >= $dataSospesa) {
$return = false;
}
}
}
return $return;
}
public function isErasable() { public function isErasable() {
global $LoggedAccount; global $LoggedAccount;
$response = false; $response = false;

65
lib/classes/App/Allegati.php

@ -29,7 +29,7 @@ class Allegati extends DataClass {
public function __construct($src = null) { public function __construct($src = null) {
global $con; global $con;
if ($src == null){ if ($src == null) {
return; return;
} }
if (is_array($src)) { if (is_array($src)) {
@ -156,7 +156,6 @@ class Allegati extends DataClass {
return parent::_loadDataTable($sql, $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset, $totCount); return parent::_loadDataTable($sql, $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset, $totCount);
} }
public static function Count($filter = null) { public static function Count($filter = null) {
return parent::_count(self::TABLE_NAME, $filter); return parent::_count(self::TABLE_NAME, $filter);
} }
@ -169,7 +168,6 @@ class Allegati extends DataClass {
$domanda->FILEPATH_GENERATO = null; $domanda->FILEPATH_GENERATO = null;
$domanda->HASHFILE = null; $domanda->HASHFILE = null;
$response = $domanda->Save(); $response = $domanda->Save();
} else { } else {
$response = true; $response = true;
} }
@ -189,7 +187,7 @@ class Allegati extends DataClass {
$queryabi = $con->prepare($sql); $queryabi = $con->prepare($sql);
foreach ($vars as $k => $v) { foreach ($vars as $k => $v) {
if ($k == "ID" && $v == 0){ if ($k == "ID" && $v == 0) {
continue; continue;
} }
$queryabi->bindValue(":" . $k, $v); $queryabi->bindValue(":" . $k, $v);
@ -212,8 +210,8 @@ class Allegati extends DataClass {
public function DeleteDocumentiBando($idDomanda = 0, $idDocumento = 0) { public function DeleteDocumentiBando($idDomanda = 0, $idDocumento = 0) {
$response = Utils::initDefaultResponse(); $response = Utils::initDefaultResponse();
if(intval($idDomanda)>0 && intval($idDocumento)>0){ if (intval($idDomanda) > 0 && intval($idDocumento) > 0) {
$response = parent::_Delete(self::TABLE_NAME, "ID_DOMANDA = ".$idDomanda." AND ID_DOCUMENTO = " . $idDocumento); $response = parent::_Delete(self::TABLE_NAME, "ID_DOMANDA = " . $idDomanda . " AND ID_DOCUMENTO = " . $idDocumento);
} }
return $response; return $response;
} }
@ -243,29 +241,28 @@ class Allegati extends DataClass {
$docBandoObbligatoriFinale = array(); $docBandoObbligatoriFinale = array();
$docObbligatoriCaricati = array(); $docObbligatoriCaricati = array();
foreach ($documentiBandoObbligatori as $vd) { foreach ($documentiBandoObbligatori as $vd) {
if($vd->OBBLIGO >=1){ if ($vd->OBBLIGO >= 1) {
$docBandoObbligatoriFinale[$vd->ID] = $vd->ID; $docBandoObbligatoriFinale[$vd->ID] = $vd->ID;
}else{ } else {
$split = explode("|", $vd->OBBLIGO_CONDIZIONATO); $split = explode("|", $vd->OBBLIGO_CONDIZIONATO);
$table = trim($split[0]); $table = trim($split[0]);
$column = trim($split[1]); $column = trim($split[1]);
$value = trim($split[2]); $value = trim($split[2]);
if($table == Domanda::TABLE_NAME){ if ($table == Domanda::TABLE_NAME) {
if($domanda->ISEE == $value){ if ($domanda->ISEE == $value) {
$vd->OBBLIGO = 1; $vd->OBBLIGO = 1;
} }
} }
if($table == DomandaDichiarazioni::TABLE_NAME){ if ($table == DomandaDichiarazioni::TABLE_NAME) {
foreach ($domanda->dichiarazioni as $dichiarazioni) { foreach ($domanda->dichiarazioni as $dichiarazioni) {
if($dichiarazioni[$column] == $value){ if ($dichiarazioni[$column] == $value) {
$docBandoObbligatoriFinale[$vd->ID] = $vd->ID; $docBandoObbligatoriFinale[$vd->ID] = $vd->ID;
} }
} }
} }
} }
@ -288,13 +285,12 @@ class Allegati extends DataClass {
return $response; return $response;
} }
public static function checkDocumentiObbligatoriCompletati($check = true, $docObbligatori = false, $docCaricati = false) {
public static function checkDocumentiObbligatoriCompletati($check = true, $docObbligatori = false,$docCaricati = false) {
$response = false; $response = false;
$domanda = Domanda::loadDomandaFromAccount(); $domanda = Domanda::loadDomandaFromAccount();
$fase = Utils::getFaseDocumenti(); $fase = Utils::getFaseDocumenti();
if ($domanda->ID > 0 ) { if ($domanda->ID > 0) {
$allegati = Allegati::load($domanda->ID, TIPO_UPLOAD_OBBLIGATORIO, $fase, 1); // $allegati = Allegati::load($domanda->ID, TIPO_UPLOAD_OBBLIGATORIO, $fase, 1); //
@ -303,21 +299,21 @@ class Allegati extends DataClass {
$docObbligatoriCaricati = array(); $docObbligatoriCaricati = array();
foreach ($documentiBandoObbligatori as $vd) { foreach ($documentiBandoObbligatori as $vd) {
if($vd->OBBLIGO_CONDIZIONATO!=""){ if ($vd->OBBLIGO_CONDIZIONATO != "") {
$split = explode("|", $vd->OBBLIGO_CONDIZIONATO); $split = explode("|", $vd->OBBLIGO_CONDIZIONATO);
$table = trim($split[0]); $table = trim($split[0]);
$column = trim($split[1]); $column = trim($split[1]);
$value = trim($split[2]); $value = trim($split[2]);
if($table == Domanda::TABLE_NAME){ if ($table == Domanda::TABLE_NAME) {
if($domanda->ISEE == $value){ if ($domanda->ISEE == $value) {
$vd->OBBLIGO = 1; $vd->OBBLIGO = 1;
} }
} }
if($table == DomandaDichiarazioni::TABLE_NAME){ if ($table == DomandaDichiarazioni::TABLE_NAME) {
foreach ($domanda->dichiarazioni as $dichiarazione) { foreach ($domanda->dichiarazioni as $dichiarazione) {
if($dichiarazione[$column] == $value){ if ($dichiarazione[$column] == $value) {
$vd->OBBLIGO = 1; $vd->OBBLIGO = 1;
} }
} }
@ -336,22 +332,29 @@ class Allegati extends DataClass {
} }
$response = count($docBandoObbligatoriFinale) == count($docObbligatoriCaricati); $response = count($docBandoObbligatoriFinale) == count($docObbligatoriCaricati);
} }
if($check){ if ($check) {
$response = $response; $response = $response;
}else if(!$check && $docObbligatori ){ } else if (!$check && $docObbligatori) {
$response = count($docBandoObbligatoriFinale); $response = count($docBandoObbligatoriFinale);
}else if(!$check && $docCaricati ){ } else if (!$check && $docCaricati) {
$response = count($docObbligatoriCaricati); $response = count($docObbligatoriCaricati);
} }
return $response; return $response;
} }
public static function checkControlliPreliminariUploadObbligatorio($idDocumento = 0, $uploadedName = '', $tipoAllegato = '',$format = 'p7m') { public static function checkControlliPreliminariUploadObbligatorio($idDocumento = 0, $uploadedName = '', $tipoAllegato = '', $format = 'p7m') {
global $LoggedAccount; global $LoggedAccount;
$response = Utils::initDefaultRowsResponse(); $response = Utils::initDefaultRowsResponse();
$domanda = Domanda::loadDomandaFromAccount(); $domanda = Domanda::loadDomandaFromAccount();
if (intval($domanda->ID) > 0 && intval($idDocumento) > 0 && $uploadedName != '' && $tipoAllegato != '') { $idDocumentoEsistente = false;
foreach ($domanda->allegati as $allegato) {
if ($allegato->ID_DOCUMENTO == $idDocumento) {
$idDocumentoEsistente = true;
}
}
if (intval($domanda->ID) > 0 && intval($idDocumento) > 0 && $uploadedName != '' && $tipoAllegato != '' && !$idDocumentoEsistente) {
if ($tipoAllegato == TIPO_UPLOAD_ISTANZA && !self::checkDocumentiObbligatoriCompletati()) { if ($tipoAllegato == TIPO_UPLOAD_ISTANZA && !self::checkDocumentiObbligatoriCompletati()) {
$response['erroreDescrizione'] = 'Allegare tutti i documenti obbligatori richiesti prima di procedere'; $response['erroreDescrizione'] = 'Allegare tutti i documenti obbligatori richiesti prima di procedere';
@ -394,16 +397,12 @@ class Allegati extends DataClass {
$fileSource .= $filePath . "/" . $fileNameTmp; $fileSource .= $filePath . "/" . $fileNameTmp;
$fileDest = $filePath . "/deleted_" . $fileNameTmp; $fileDest = $filePath . "/deleted_" . $fileNameTmp;
if (!file_exists($fileSource) || rename($fileSource, $fileDest)) { if (!file_exists($fileSource) || rename($fileSource, $fileDest)) {
$response['esito'] = 1; $response['esito'] = 1;
} else { } else {
$response = Utils::initDefaultResponse(-999, "Si è verificato un errore (1571) " . $fileSource); $response = Utils::initDefaultResponse(-999, "Si è verificato un errore (1571) " . $fileSource);
} }
} }
} }
return $response; return $response;
} }
@ -434,7 +433,6 @@ class Allegati extends DataClass {
. "LEFT JOIN DOCUMENTI_BANDO B ON B.ID=A.ID_DOCUMENTO " . "LEFT JOIN DOCUMENTI_BANDO B ON B.ID=A.ID_DOCUMENTO "
. "WHERE A.ID_DOMANDA = :id_domanda AND A.CANCELLATO = 0 AND (A.TIPO_DOCUMENTO = " . TIPO_UPLOAD_ISTANZA . " OR B.FILE_DA_GENERARE=1)"; . "WHERE A.ID_DOMANDA = :id_domanda AND A.CANCELLATO = 0 AND (A.TIPO_DOCUMENTO = " . TIPO_UPLOAD_ISTANZA . " OR B.FILE_DA_GENERARE=1)";
$query = $con->prepare($sql); $query = $con->prepare($sql);
$query->bindParam(":id_domanda", $idDomanda); $query->bindParam(":id_domanda", $idDomanda);
@ -442,8 +440,6 @@ class Allegati extends DataClass {
$query->execute(); $query->execute();
$r = $query->fetchAll(PDO::FETCH_ASSOC); $r = $query->fetchAll(PDO::FETCH_ASSOC);
if (count($r) > 0) { if (count($r) > 0) {
foreach ($r as $res) { foreach ($r as $res) {
$allegato = new Allegati($res); $allegato = new Allegati($res);
@ -502,7 +498,4 @@ class Allegati extends DataClass {
} }
return $response; return $response;
} }
} }

74
lib/classes/Utils/EmailSms.php

@ -356,6 +356,80 @@ class EmailSms {
* Semplice mail che indica il corretto invio della pratica * Semplice mail che indica il corretto invio della pratica
*/ */
public static function invioMailPresentazioneDomanda($codice_numerico, $data_presentazione, $email, $desc_bando) {
global $LoggedAccount;
if (!INVIO_EMAIL) {
return 1;
} else {
$url_img = BASE_HTTP . "assets/img/siciliafesr.png";
if (DEMO_CERT) {
$url_img = "https://demo.fitosan.igea-lab.it/siciliafesr.png";
}
$data_presentazione = Utils::dateOracleTimeStamp($data_presentazione, 'd-m-Y H:i');
$anno = date('Ym', strtotime($data_presentazione));
$codice_numerico = $anno . "" . str_pad($codice_numerico, 5, "0", STR_PAD_LEFT);
$testo = 'Gentilissimo, <br><br>la procedura di inoltro della domanda al bando <b>' . $desc_bando . '</b>
è avvenuta con successo.<br>
Di seguito il riepilogo dei dati:
<table style="width: 50%;">
<tbody>
<tr>
<td width="30%">Denominazione Istituto:</td>
<td width="50%"><b>' . $LoggedAccount->DENOMINAZIONE . '</b></td>
</tr>
<tr>
<td width="30%">Codice Meccanografico:</td>
<td width="50%"> <b>' . $LoggedAccount->CODICE_MECCANOGRAFICO . '</b></td>
</tr>
<tr>
<td width="30%">Numero presentazione:</td>
<td width="50%"> <b>' . $codice_numerico . '</b></td>
</tr>
<tr>
<td width="30%">Data presentazione:</td>
<td width="50%"> <b>' . $data_presentazione . '</b></td>
</tr>
</tbody>
</table>
<br>
<table style="width: 100%;">
<tbody>
<tr>
<td>&nbsp;</td>
<td><img width="568" src="' . $url_img . '" alt="Regione Siciliana - PO FESR Sicilia 2014-2020"/></td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>';
date_default_timezone_set('Etc/UTC');
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->CharSet = "UTF-8";
$mail->SMTPDebug = $GLOBALS['EMAIL_CONFIG']['DEBUG'];
$mail->Debugoutput = 'html';
$mail->Host = $GLOBALS['EMAIL_CONFIG']['HOST'];
$mail->Port = $GLOBALS['EMAIL_CONFIG']['PORT'];
$mail->SMTPSecure = $GLOBALS['EMAIL_CONFIG']['SMTP_SECURE'];
$mail->SMTPAuth = $GLOBALS['EMAIL_CONFIG']['SMTP_AUTH'];
$mail->Username = $GLOBALS['EMAIL_CONFIG']['USERNAME'];
$mail->Password = $GLOBALS['EMAIL_CONFIG']['PASSWORD'];
$mail->setFrom($GLOBALS['EMAIL_CONFIG']['FROM'], $GLOBALS['EMAIL_CONFIG']['FROM_DESC']);
$mail->addAddress($email, $email);
$mail->Subject = $GLOBALS['EMAIL_CONFIG']['SUBJECT'];
$mail->msgHTML($testo);
$mail->AltBody = $testo;
if (!$mail->send()) {
$value = "Mailer Error: " . $mail->ErrorInfo;
Utils::print_array($value);
$value = 0;
} else {
$value = 1;
}
}
return $value;
}
public static function invioMailPresentazione($domanda) { public static function invioMailPresentazione($domanda) {
global $con, $LoggedAccount; global $con, $LoggedAccount;

191
lib/classes/Utils/File.php

@ -153,26 +153,101 @@ class File {
* Funzioni controllo file * Funzioni controllo file
*/ */
/* * *********************************** TEST GIGI ************************************************** */ /* * *********************************** TEST GIGI ************************************************** */
// public static function checkFileAllegato($uploadedName = '', $max_file_size = MAX_SIZE_FILE_UPLOAD, $format = 'p7m') {
// $response = Utils::initDefaultResponse();
// if ($uploadedName != '') {
// if (intval($_FILES[$uploadedName]['size']) <= 0) {
// $response['erroreDescrizione'] = "Dimensione file non consistente";
// } else if (intval($_FILES[$uploadedName]['size']) > $max_file_size) {
// $response['erroreDescrizione'] = "Dimensione file non consentita";
// } else if ($_FILES[$uploadedName]['tmp_name'] == "") {
// $response['erroreDescrizione'] = "Nessun file allegato";
// } else {
// $mymeType = self::extractMimeTypeFromFile($_FILES[$uploadedName]['tmp_name']);
// if (ATTIVA_CONTROLLO_MIME_TYPE && $mymeType != MIME_TYPE) {
// $response['erroreDescrizione'] = "Formato del file non valido!";
// } else {
// $response['esito'] = 1;
// $response['filesize'] = intval($_FILES[$uploadedName]['size']);
// $response['name'] = $_FILES[$uploadedName]['name'];
// }
// }
// }
// return $response;
// }
public static function checkFileAllegato($uploadedName = '', $max_file_size = MAX_SIZE_FILE_UPLOAD, $format = 'p7m') { public static function checkFileAllegato($uploadedName = '', $max_file_size = MAX_SIZE_FILE_UPLOAD, $format = 'p7m') {
$response = Utils::initDefaultResponse(); $response = Utils::initDefaultResponse();
if ($uploadedName != '') {
if (intval($_FILES[$uploadedName]['size']) <= 0) { if ($uploadedName === '' || !isset($_FILES[$uploadedName])) {
$response['erroreDescrizione'] = "Nessun campo upload trovato";
return $response;
}
$f = $_FILES[$uploadedName];
// error code PHP
if (!isset($f['error']) || $f['error'] !== UPLOAD_ERR_OK) {
$response['erroreDescrizione'] = "Errore upload (code {$f['error']})";
return $response;
}
// size checks
$size = isset($f['size']) ? (int)$f['size'] : 0;
if ($size <= 0) {
$response['erroreDescrizione'] = "Dimensione file non consistente"; $response['erroreDescrizione'] = "Dimensione file non consistente";
} else if (intval($_FILES[$uploadedName]['size']) > $max_file_size) { return $response;
}
if ($size > (int)$max_file_size) {
$response['erroreDescrizione'] = "Dimensione file non consentita"; $response['erroreDescrizione'] = "Dimensione file non consentita";
} else if ($_FILES[$uploadedName]['tmp_name'] == "") { return $response;
}
// tmp path
$tmp = isset($f['tmp_name']) ? $f['tmp_name'] : '';
if ($tmp === '' || !is_uploaded_file($tmp)) {
$response['erroreDescrizione'] = "Nessun file allegato"; $response['erroreDescrizione'] = "Nessun file allegato";
} else { return $response;
$ext = self::extractExtensionFromFile($uploadedName); }
if (empty($ext) || $ext != $format) {
// MIME by content
$mime = self::extractMimeTypeFromFile($tmp);
if (defined('ATTIVA_CONTROLLO_MIME_TYPE') && ATTIVA_CONTROLLO_MIME_TYPE) {
// se hai un solo MIME ammesso (es. application/pdf) usa la tua costante MIME_TYPE
if (defined('MIME_TYPE') && strtolower($mime) !== strtolower(MIME_TYPE)) {
$response['erroreDescrizione'] = "Formato del file non valido!"; $response['erroreDescrizione'] = "Formato del file non valido!";
} else { return $response;
$response['esito'] = 1;
$response['filesize'] = intval($_FILES[$uploadedName]['size']);
$response['name'] = $_FILES[$uploadedName]['name'];
} }
} }
// Anti-polyglot generico: blocca firme di codice/eseguibili
// if (self::hasForbiddenSignatures($tmp)) {
// $response['erroreDescrizione'] = "File non valido [1]"; //Contenuto sospetto (polyglot/signature proibita)
// return $response;
// }
// Hardening specifico PDF
if (strtolower($mime) === 'application/pdf') {
if (!self::pdfHeaderOK($tmp)) {
$response['erroreDescrizione'] = "File non valido [2]"; // Header PDF non valido
return $response;
} }
// if (!self::pdfEndsAtEOF($tmp)) {
// $response['erroreDescrizione'] = "File non valido [3]"; //Dati extra dopo %%EOF (possibile polyglot)
// return $response;
// }
// if (self::fileContainsPhpTags($tmp)) {
// $response['erroreDescrizione'] = "File non valido [4]"; //Tag PHP rilevati nel PDF
// return $response;
// }
}
// OK
$response['esito'] = 1;
$response['filesize'] = $size;
$response['name'] = $f['name'];
$response['mime'] = $mime;
return $response; return $response;
} }
@ -206,6 +281,14 @@ class File {
return $response; return $response;
} }
public static function extractMimeTypeFromFile($uploadedFile = '') {
$response = "";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$response = finfo_file($finfo, $uploadedFile);
finfo_close($finfo);
return strtolower($response);
}
public static function extractExtensionFromFile($uploadedName = '') { public static function extractExtensionFromFile($uploadedName = '') {
$response = ""; $response = "";
if ($uploadedName != '' && isset($_FILES[$uploadedName]) && !empty($_FILES[$uploadedName]['name'])) { if ($uploadedName != '' && isset($_FILES[$uploadedName]) && !empty($_FILES[$uploadedName]['name'])) {
@ -387,4 +470,90 @@ class File {
} }
} }
/* =================== helper anti-polyglot =================== */
// Firme generiche per bloccare script/eseguibili nascosti in qualunque file
private static function hasForbiddenSignatures(string $path): bool {
$patterns = [
'/<\?(php|\=|\s)/i', // PHP
'/<script\b/i', // HTML/JS
'/^#!\/bin\/(bash|sh|python|perl)/i', // shebang script
'/^\x7fELF/', // binario Linux
'/^MZ/', // eseguibile Windows (PE)
];
$fp = @fopen($path, 'rb');
if (!$fp) return true;
$overlap = '';
while (!feof($fp)) {
$chunk = fread($fp, 8192);
if ($chunk === false) break;
$scan = $overlap . $chunk;
foreach ($patterns as $re) {
if (preg_match($re, $scan)) {
fclose($fp);
return true;
}
}
$overlap = substr($scan, -64);
}
fclose($fp);
return false;
}
private static function fileContainsPhpTags(string $path): bool {
$fp = @fopen($path, 'rb');
if (!$fp) return true;
$overlap = '';
while (!feof($fp)) {
$chunk = fread($fp, 8192);
if ($chunk === false) break;
$scan = $overlap . $chunk;
if (preg_match('/<\?(php|\=|\s)/i', $scan)) {
fclose($fp);
return true;
}
$overlap = substr($scan, -10);
}
fclose($fp);
return false;
}
// Deve iniziare con %PDF-1.[0-7]
private static function pdfHeaderOK(string $path): bool {
$fp = @fopen($path, 'rb');
if (!$fp) return false;
$head = fread($fp, 8);
fclose($fp);
return ($head !== false) && (bool)preg_match('/^%PDF-1\.[0-7]/', $head);
}
// L’ultimo %%EOF deve essere realmente a fine file (solo whitespace dopo)
private static function pdfEndsAtEOF(string $path): bool {
$size = filesize($path);
if ($size === false) return false;
$fp = @fopen($path, 'rb');
if (!$fp) return false;
$tailLen = min(65536, $size);
fseek($fp, -$tailLen, SEEK_END);
$tail = fread($fp, $tailLen);
fclose($fp);
if ($tail === false) return false;
$lastEofPos = strripos($tail, '%%EOF');
if ($lastEofPos === false) return false;
$after = substr($tail, $lastEofPos + 5);
// consenti solo spazio, tab, \n, \r, form-feed
$after = preg_replace('/[\x20\x09\x0A\x0D\x0C]+/', '', $after);
return $after === '';
}
} }

17
lib/config/avviso.config.php

@ -179,7 +179,7 @@ define("MIN_DATA_RILASCIO_ISEE_PHP", '01-01-2023'); // Utilizzato per il control
define("TXT_IBAN_EXCLUDE", "<i class='fas fa-exclamation-triangle'></i> N.B.: i Libretti di risparmio postale non sono validi ai fini dell'erogazione del contributo."); // testo per attenzionare il problema degli IBAN define("TXT_IBAN_EXCLUDE", "<i class='fas fa-exclamation-triangle'></i> N.B.: i Libretti di risparmio postale non sono validi ai fini dell'erogazione del contributo."); // testo per attenzionare il problema degli IBAN
define("TELEFONO_ASSISTENZA", "0918488653"); define("TELEFONO_ASSISTENZA", "0917072393");
define("EMAIL_ASSISTENZA", "infostopcarovoli@regione.sicilia.it"); define("EMAIL_ASSISTENZA", "infostopcarovoli@regione.sicilia.it");
define("DICHIARAZIONE_RESIDENZA_REGIONE", "Dichiaro di essere residente in Regione Siciliana" define("DICHIARAZIONE_RESIDENZA_REGIONE", "Dichiaro di essere residente in Regione Siciliana"
@ -247,8 +247,8 @@ define("MIN_DATA_ACQUISTO_BIGLIETTO_PHP", '10-11-2023'); // Utilizzato per il co
define("MIN_DATA_VOLO", 30); define("MIN_DATA_VOLO", 30);
define("MIN_DATA_CONTRIBUTO", "01-12-2023"); define("MIN_DATA_CONTRIBUTO", "01-12-2023");
define("MIN_DATA_CONTRIBUTO_JS", "2023-12-01"); define("MIN_DATA_CONTRIBUTO_JS", "2023-12-01");
define("MAX_DATA_CONTRIBUTO", "31-12-2025"); define("MAX_DATA_CONTRIBUTO", "28-02-2026");
define("MAX_DATA_CONTRIBUTO_JS", "2025-12-31"); define("MAX_DATA_CONTRIBUTO_JS", "2026-02-28");
define("PATH_DECRETI", BASE_HTTP."assets/docs/decreti/"); define("PATH_DECRETI", BASE_HTTP."assets/docs/decreti/");
define("LINK_1_DRS_NOME", "D.R.S. 61 del 31/01/2024 - ANNULLATO"); define("LINK_1_DRS_NOME", "D.R.S. 61 del 31/01/2024 - ANNULLATO");
@ -276,5 +276,14 @@ $SCALI_FASE1 = array("CIA","FCO","LIN","MXP","BGY", "CTA","PMO","TPS","LMP","PNL
define("COMPAGNIE_ADERENTI", "1|28");//aeroitalia e ita define("COMPAGNIE_ADERENTI", "1|28");//aeroitalia e ita
define("SCALI_FASE1", "CIA|FCO|LIN|MXP|BGY|CTA|PMO|TPS|LMP|PNL|CIY");//scali fase 1 js define("SCALI_FASE1", "CIA|FCO|LIN|MXP|BGY|CTA|PMO|TPS|LMP|PNL|CIY");//scali fase 1 js
global $LINK_DECRETI_INDEX, $SCALI_FASE1; $TRATTE_SOSPESE['CIY']['1'] = '01-11-2025';// COMISO --> AEROITALIA --> dalla data del 01/11/2025 non deve essere consentito inserire il biglietto
$TRATTE_ESCLUSE=array(
1=>array("CIA-CIY", "FCO-CIY", "LIN-CIY", "MXP-CIY", "BGY-CIY",
"CIY-CIA", "CIY-FCO", "CIY-LIN", "CIY-MXP", "CIY-BGY")
);//1 è id AEROITALIA, DENTRO CI SONO LE COMBINAZIONI DELLE TRATTE ESCLUSE
define("DATA_INIZIO_AUTODICHIARAZIONE_SCONTO", "10-03-2025"); // 10-03-2025
global $LINK_DECRETI_INDEX, $SCALI_FASE1, $TRATTE_SOSPESE, $TRATTE_ESCLUSE;

3
lib/config/database.config.php

@ -1,6 +1,6 @@
<?php <?php
define("DBMS", "Oracle"); define("DBMS", "Oracle");

define("ORACLE_HOST", ""); // DB DEV define("ORACLE_HOST", ""); // DB DEV
define("ORACLE_PORT", "1521"); // DB DEV define("ORACLE_PORT", "1521"); // DB DEV
define("ORACLE_SERVICE", "xe"); // DB DEV define("ORACLE_SERVICE", "xe"); // DB DEV
@ -13,6 +13,7 @@ define("DBMS", "Oracle");
define("DB_USER_SPID", ""); // DB SPID DEV define("DB_USER_SPID", ""); // DB SPID DEV
define("DB_PASS_SPID", ""); // DB SPID DEV define("DB_PASS_SPID", ""); // DB SPID DEV
define("CONNESSIONE_OCI_POOLED", false); // DB SPID DEV define("CONNESSIONE_OCI_POOLED", false); // DB SPID DEV

?> ?>

8
lib/config/spid.config.php

@ -25,16 +25,12 @@ define("FAKE_SPID", 1); // Enable fake Spid info
//define("WSO2_REDIRECT", "https://siciliapei.regione.sicilia.it/logintest/login.php?dst=".RETURNTOSPID); // Enable wso2 //define("WSO2_REDIRECT", "https://siciliapei.regione.sicilia.it/logintest/login.php?dst=".RETURNTOSPID); // Enable wso2
define("WSO2_REDIRECT", "https://siciliapei.regione.sicilia.it/login/login.php?dst=".RETURNTOSPID); // Enable wso2 define("WSO2_REDIRECT", "https://siciliapei.regione.sicilia.it/login/login.php?dst=".RETURNTOSPID); // Enable wso2
define("CF_SPID_TEST", "TINIT-BRNMRT80T09M208U"); //LCUMTL80A01F158E";//MNDLCU98T68C933T //BSSMBR54P18H501Q //LCUMTL80A01F158E
define("SPID_TEST_BTN", 0); // Enable fake Spid info define("SPID_TEST_BTN", 0); // Enable fake Spid info
$cfTEST=array(
"TINIT-RMNDLF89A16D976N",// TEST
); $cfTEST=array();
global $cfTEST; global $cfTEST;
?> ?>

9
lib/config/sportello.config.php

@ -4,7 +4,7 @@ define("DATA_MANUTENZIONE_INIZIO", '15-03-2024 09:54:00');
define("DATA_MANUTENZIONE_FINE", '15-03-2024 09:55:00'); define("DATA_MANUTENZIONE_FINE", '15-03-2024 09:55:00');
define("DATA_PREPARAZIONE_INIZIO", '02-12-2023 09:00:00'); define("DATA_PREPARAZIONE_INIZIO", '02-12-2023 09:00:00');
define("DATA_PREPARAZIONE_FINE", '30-01-2026 18:00:00'); define("DATA_PREPARAZIONE_FINE", '30-03-2026 18:00:00');
define("DATA_INIZIO_NATIVITA", '07-12-2024 00:00:00'); define("DATA_INIZIO_NATIVITA", '07-12-2024 00:00:00');
@ -49,6 +49,11 @@ define("CLICK_DOMANDA_PRESENTATA", 2);
define("CLICK_DAY_CHIUSO", 3); define("CLICK_DAY_CHIUSO", 3);
define("BUDGET_SUPERATO", 4); define("BUDGET_SUPERATO", 4);
define("CLICKDAY_PHP", false);
/*define("SECRET_JWT_KEY", "S1p4rs@!2020_P3i");
define("HOST_CLICKDAY", "http://192.168.1.63"); // PAOLO
define("PATH_CLICKDAY", "/sendDomanda");
define("PORT_CLICKDAY", "8080");
define("WS_CALL_SPORTELLO" , HOST_CLICKDAY.':'.PORT_CLICKDAY.'/');*/
?> ?>

1516
lib/config/stats.php

File diff soppresso perché troppo grande Load Diff

4
lib/config/upload.config.php

@ -8,6 +8,10 @@ define("ROOT_UPLOAD_PRESENTAZIONE_TMP", ROOT_UPLOAD . "presentazionetmp/");
define("ROOT_UPLOAD_PRESENTAZIONE_LOGS_P7M", "presentazionelogsp7m/"); define("ROOT_UPLOAD_PRESENTAZIONE_LOGS_P7M", "presentazionelogsp7m/");
define("ROOT_UPLOAD_PREPARAZIONE", ROOT_UPLOAD . "preparazione/"); define("ROOT_UPLOAD_PREPARAZIONE", ROOT_UPLOAD . "preparazione/");
/* MIME TYPE */
define("ATTIVA_CONTROLLO_MIME_TYPE", true);
define("MIME_TYPE", "application/pdf");
/* SIZE */ /* SIZE */
define("MAX_NUM_UPLOAD_OPZ", 5); //MAX Numero file opzionali caricabili define("MAX_NUM_UPLOAD_OPZ", 5); //MAX Numero file opzionali caricabili

43
modules/private/account.php

@ -63,21 +63,20 @@ $istanza = Domanda::loadDomandaFromAccount();
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-6"> <div class="col-sm-6">
<label for="NOME"><span class="text-danger">*&nbsp;</span>Nome</label><br> <label for="NOME"><span class="text-danger">*&nbsp;</span>Nome</label><br>
<input readOnly type="text" class="form-control cfinput" autocomplete="new-password" required="" name="NOME" id="NOME" value="<?= $LoggedAccount->Anagrafica->NOME ?>"> <input readOnly type="text" class="form-control cfinput" autocomplete="new-password" required="" name="NOME" id="NOME" value="<?= htmlentities($LoggedAccount->Anagrafica->NOME) ?>"> </div>
</div>
<div class="col-sm-6"> <div class="col-sm-6">
<label for="COGNOME"><span class="text-danger">*&nbsp;</span>Cognome</label> <label for="COGNOME"><span class="text-danger">*&nbsp;</span>Cognome</label>
<input readOnly type="text" class="form-control cfinput" autocomplete="new-password" required="" name="COGNOME" id="COGNOME" value="<?= $LoggedAccount->Anagrafica->COGNOME ?>"> <input readOnly type="text" class="form-control cfinput" autocomplete="new-password" required="" name="COGNOME" id="COGNOME" value="<?= htmlentities($LoggedAccount->Anagrafica->COGNOME) ?>">
</div> </div>
</div> </div>
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-6"> <div class="col-sm-6">
<label for="CODICE_FISCALE">Codice Fiscale </label> <label for="CODICE_FISCALE">Codice Fiscale </label>
<input readOnly type="text" class="form-control" required="" name="CODICE_FISCALE" id="CODICE_FISCALE" value="<?= $LoggedAccount->CODICE_FISCALE ?>"> <input readOnly type="text" class="form-control" required="" name="CODICE_FISCALE" id="CODICE_FISCALE" value="<?= htmlentities($LoggedAccount->CODICE_FISCALE) ?>">
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<label for="DATA_NASCITA"><span class="text-danger">*&nbsp;</span>Data di nascita</label> <label for="DATA_NASCITA"><span class="text-danger">*&nbsp;</span>Data di nascita</label>
<input readOnly type="date" class="form-control cfinput" required="" autocomplete="new-password" name="DATA_NASCITA" id="DATA_NASCITA" value="<?= $LoggedAccount->Anagrafica->DATA_NASCITA ?>"> <input readOnly type="date" class="form-control cfinput" required="" autocomplete="new-password" name="DATA_NASCITA" id="DATA_NASCITA" value="<?= htmlentities($LoggedAccount->Anagrafica->DATA_NASCITA) ?>">
</div> </div>
<div class="col-sm-6" hidden> <div class="col-sm-6" hidden>
<label for="SPID_CELLULARE">Cellulare</label> <label for="SPID_CELLULARE">Cellulare</label>
@ -85,7 +84,7 @@ $istanza = Domanda::loadDomandaFromAccount();
<div class="input-group-prepend"> <div class="input-group-prepend">
<div class="input-group-text">+39</div> <div class="input-group-text">+39</div>
</div> </div>
<input readonly type="text" class="form-control" required="" name="SPID_CELLULARE" id="SPID_CELLULARE" value="<?= $LoggedAccount->Anagrafica->SPID_CELLULARE ?>"> <input readonly type="text" class="form-control" required="" name="SPID_CELLULARE" id="SPID_CELLULARE" value="<?= htmlentities($LoggedAccount->Anagrafica->SPID_CELLULARE) ?>">
</div> </div>
</div> </div>
</div> </div>
@ -93,31 +92,31 @@ $istanza = Domanda::loadDomandaFromAccount();
<div class="col-sm-4"> <div class="col-sm-4">
<label for="SPID_CELLULARE">Email</label> <label for="SPID_CELLULARE">Email</label>
<div class="input-group mb-2"> <div class="input-group mb-2">
<input readonly type="text" class="form-control" required="" name="SPID_EMAIL" id="SPID_EMAIL" value="<?= $LoggedAccount->Anagrafica->SPID_EMAIL ?>"> <input readonly type="text" class="form-control" required="" name="SPID_EMAIL" id="SPID_EMAIL" value="<?= htmlentities($LoggedAccount->Anagrafica->SPID_EMAIL) ?>">
</div> </div>
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
<label for="SPID_TIPO_DOCUMENTO">Tipo documento</label> <label for="SPID_TIPO_DOCUMENTO">Tipo documento</label>
<input readonly type="text" class="form-control" required="" name="SPID_TIPO_DOCUMENTO" id="SPID_TIPO_DOCUMENTO" value="<?= $LoggedAccount->Anagrafica->SPID_TIPO_DOCUMENTO ?>"> <input readonly type="text" class="form-control" required="" name="SPID_TIPO_DOCUMENTO" id="SPID_TIPO_DOCUMENTO" value="<?= htmlentities($LoggedAccount->Anagrafica->SPID_TIPO_DOCUMENTO) ?>">
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
<label for="SPID_DOCUMENTO">N.ro Documento</label> <label for="SPID_DOCUMENTO">N.ro Documento</label>
<input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO" id="SPID_DOCUMENTO" value="<?= $LoggedAccount->Anagrafica->SPID_DOCUMENTO ?>"> <input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO" id="SPID_DOCUMENTO" value="<?= htmlentities($LoggedAccount->Anagrafica->SPID_DOCUMENTO) ?>">
</div> </div>
</div> </div>
<div class="form-group row" hidden> <div class="form-group row" hidden>
<div class="col-sm-4"> <div class="col-sm-4">
<label for="SPID_DOCUMENTO_ENTE">Ente rilascio documento</label> <label for="SPID_DOCUMENTO_ENTE">Ente rilascio documento</label>
<input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO_ENTE" id="SPID_DOCUMENTO_ENTE" value="<?= $LoggedAccount->Anagrafica->SPID_DOCUMENTO_ENTE ?>"> <input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO_ENTE" id="SPID_DOCUMENTO_ENTE" value="<?= htmlentities($LoggedAccount->Anagrafica->SPID_DOCUMENTO_ENTE) ?>">
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
<label for="SPID_DOCUMENTO_RILASCIO">Rilascio Documento</label> <label for="SPID_DOCUMENTO_RILASCIO">Rilascio Documento</label>
<input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO_RILASCIO" id="SPID_DOCUMENTO_RILASCIO" value="<?= $LoggedAccount->Anagrafica->SPID_DOCUMENTO_RILASCIO ?>"> <input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO_RILASCIO" id="SPID_DOCUMENTO_RILASCIO" value="<?= htmlentities($LoggedAccount->Anagrafica->SPID_DOCUMENTO_RILASCIO) ?>">
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
<label for="SPID_DOCUMENTO_SCADENZA">Scadenza Documento</label> <label for="SPID_DOCUMENTO_SCADENZA">Scadenza Documento</label>
<input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO_SCADENZA" id="SPID_DOCUMENTO_SCADENZA" value="<?= $LoggedAccount->Anagrafica->SPID_DOCUMENTO_SCADENZA ?>"> <input readonly type="text" class="form-control" required="" name="SPID_DOCUMENTO_SCADENZA" id="SPID_DOCUMENTO_SCADENZA" value="<?= htmlentities($LoggedAccount->Anagrafica->SPID_DOCUMENTO_SCADENZA) ?>">
</div> </div>
</div> </div>
</div> </div>
@ -152,16 +151,16 @@ $istanza = Domanda::loadDomandaFromAccount();
<div class="col-sm-3"> <div class="col-sm-3">
<label for="COMUNE_NASCITA"><span class="text-danger">*&nbsp;</span>Comune di nascita</label> <label for="COMUNE_NASCITA"><span class="text-danger">*&nbsp;</span>Comune di nascita</label>
<select <?= $state['readonly'] ?> style="width: 100%" required="" class="form-control cfinput" id="COMUNE_NASCITA" name="COMUNE_NASCITA"></select> <select <?= $state['readonly'] ?> style="width: 100%" required="" class="form-control cfinput" id="COMUNE_NASCITA" name="COMUNE_NASCITA"></select>
<!--input <?= $state['readonly'] ?> type="text" class="form-control" required="" name="COMUNE_NASCITA" id="COMUNE_NASCITA" value="<?= $LoggedAccount->Anagrafica->COMUNE_NASCITA ?>"--> <!--input <?= $state['readonly'] ?> type="text" class="form-control" required="" name="COMUNE_NASCITA" id="COMUNE_NASCITA" value="<?= htmlentities($LoggedAccount->Anagrafica->COMUNE_NASCITA) ?>"-->
<small class="text-info">Nel caso in cui il comune di nascita sia in uno Stato estero indicare tale Stato</small> <small class="text-info">Nel caso in cui il comune di nascita sia in uno Stato estero indicare tale Stato</small>
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
<label for="PROV_NASCITA"><span class="text-danger">*&nbsp;</span>Prov. di nascita</label> <label for="PROV_NASCITA"><span class="text-danger">*&nbsp;</span>Prov. di nascita</label>
<input readonly type="text" class="form-control cfinput" required="" name="PROV_NASCITA" id="PROV_NASCITA" value="<?= $LoggedAccount->Anagrafica->PROV_NASCITA ?>"> <input readonly type="text" class="form-control cfinput" required="" name="PROV_NASCITA" id="PROV_NASCITA" value="<?= htmlentities($LoggedAccount->Anagrafica->PROV_NASCITA) ?>">
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
<label for="CAP_NASCITA"><span class="text-danger">*&nbsp;</span>Cap comune di nascita</label> <label for="CAP_NASCITA"><span class="text-danger">*&nbsp;</span>Cap comune di nascita</label>
<input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control cfinput" required="" name="CAP_NASCITA" maxlength="5" id="CAP_NASCITA" value="<?= $LoggedAccount->Anagrafica->CAP_NASCITA ?>"> <input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control cfinput" required="" name="CAP_NASCITA" maxlength="5" id="CAP_NASCITA" value="<?= htmlentities($LoggedAccount->Anagrafica->CAP_NASCITA) ?>">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -184,26 +183,26 @@ $istanza = Domanda::loadDomandaFromAccount();
<div class="col-sm-6"> <div class="col-sm-6">
<label for="COMUNE_RESIDENZA"><span class="text-danger">*&nbsp;</span>Comune residenza</label> <label for="COMUNE_RESIDENZA"><span class="text-danger">*&nbsp;</span>Comune residenza</label>
<select <?= $state['disabled'] ?> autocomplete="new-password" required="" style="width: 100%" class="form-control" id="COMUNE_RESIDENZA" name="COMUNE_RESIDENZA"></select> <select <?= $state['disabled'] ?> autocomplete="new-password" required="" style="width: 100%" class="form-control" id="COMUNE_RESIDENZA" name="COMUNE_RESIDENZA"></select>
<!--input <?= $state['readonly'] ?> type="text" class="form-control" required="" name="COMUNE_RESIDENZA" id="COMUNE_RESIDENZA" value="<?= $LoggedAccount->Anagrafica->COMUNE_RESIDENZA ?>"--> <!--input <?= $state['readonly'] ?> type="text" class="form-control" required="" name="COMUNE_RESIDENZA" id="COMUNE_RESIDENZA" value="<?= htmlentities($LoggedAccount->Anagrafica->COMUNE_RESIDENZA) ?>"-->
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
<label for="PROV_RESIDENZA"><span class="text-danger">*&nbsp;</span>Prov. residenza</label> <label for="PROV_RESIDENZA"><span class="text-danger">*&nbsp;</span>Prov. residenza</label>
<input readonly type="text" autocomplete="new-password" class="form-control" required="" name="PROV_RESIDENZA" id="PROV_RESIDENZA" value="<?= $LoggedAccount->Anagrafica->PROV_RESIDENZA ?>"> <input readonly type="text" autocomplete="new-password" class="form-control" required="" name="PROV_RESIDENZA" id="PROV_RESIDENZA" value="<?= htmlentities($LoggedAccount->Anagrafica->PROV_RESIDENZA) ?>">
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
<label for="CAP_RESIDENZA"><span class="text-danger">*&nbsp;</span>Cap residenza</label> <label for="CAP_RESIDENZA"><span class="text-danger">*&nbsp;</span>Cap residenza</label>
<input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control" required="" name="CAP_RESIDENZA" id="CAP_RESIDENZA" maxlength="5" value="<?= $LoggedAccount->Anagrafica->CAP_RESIDENZA ?>"> <input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control" required="" name="CAP_RESIDENZA" id="CAP_RESIDENZA" maxlength="5" value="<?= htmlentities($LoggedAccount->Anagrafica->CAP_RESIDENZA) ?>">
</div> </div>
</div> </div>
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-9"> <div class="col-sm-9">
<label for="INDIRIZZO_RESIDENZA"><span class="text-danger">*&nbsp;</span>Indirizzo residenza</label><br> <label for="INDIRIZZO_RESIDENZA"><span class="text-danger">*&nbsp;</span>Indirizzo residenza</label><br>
<input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control" required="" name="INDIRIZZO_RESIDENZA" id="INDIRIZZO_RESIDENZA" value="<?= $LoggedAccount->Anagrafica->INDIRIZZO_RESIDENZA ?>"> <input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control" required="" name="INDIRIZZO_RESIDENZA" id="INDIRIZZO_RESIDENZA" value="<?= htmlentities($LoggedAccount->Anagrafica->INDIRIZZO_RESIDENZA) ?>">
</div> </div>
<div class="col-sm-3"> <div class="col-sm-3">
<label for="CIVICO_RESIDENZA"><span class="text-danger">*&nbsp;</span>Civico residenza</label> <label for="CIVICO_RESIDENZA"><span class="text-danger">*&nbsp;</span>Civico residenza</label>
<input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control" required="" name="CIVICO_RESIDENZA" id="CIVICO_RESIDENZA" maxlength="5" value="<?= $LoggedAccount->Anagrafica->CIVICO_RESIDENZA ?>"> <input <?= $state['readonly'] ?> autocomplete="new-password" type="text" class="form-control" required="" name="CIVICO_RESIDENZA" id="CIVICO_RESIDENZA" maxlength="5" value="<?= htmlentities($LoggedAccount->Anagrafica->CIVICO_RESIDENZA) ?>">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -211,11 +210,11 @@ $istanza = Domanda::loadDomandaFromAccount();
<div class="form-group row"> <div class="form-group row">
<div class="col-sm-6"> <div class="col-sm-6">
<label for="tel" ><span class="text-danger">*&nbsp;</span>Telefono </label><br> <label for="tel" ><span class="text-danger">*&nbsp;</span>Telefono </label><br>
<input <?= $state['readonly'] ?> autocomplete="new-password" required type="text" class="form-control" value="<?= $LoggedAccount->Anagrafica->RECAPITO ?>" id="RECAPITO" name="RECAPITO" > <input <?= $state['readonly'] ?> autocomplete="new-password" required type="text" class="form-control" value="<?= htmlentities($LoggedAccount->Anagrafica->RECAPITO) ?>" id="RECAPITO" name="RECAPITO" >
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<label for="pec" ><span class="text-danger">*&nbsp;</span>E-MAIL </label> <label for="pec" ><span class="text-danger">*&nbsp;</span>E-MAIL </label>
<input <?= $state['readonly'] ?> autocomplete="new-password" required type="email" value="<?= $LoggedAccount->Anagrafica->EMAIL ?>" class="form-control" name="EMAIL" > <input <?= $state['readonly'] ?> autocomplete="new-password" required type="email" value="<?= htmlentities($LoggedAccount->Anagrafica->EMAIL) ?>" class="form-control" name="EMAIL" >
<!-- <label for="pec" ><span class="text-danger">*&nbsp;</span>PEC</label><br> <!-- <label for="pec" ><span class="text-danger">*&nbsp;</span>PEC</label><br>
<input <?= $readOnlyTxt ?> required type="email" value="<?= $LoggedAccount->Anagrafica->PEC ?>" class="form-control" name="PEC" >--> <input <?= $readOnlyTxt ?> required type="email" value="<?= $LoggedAccount->Anagrafica->PEC ?>" class="form-control" name="PEC" >-->
</div> </div>

2
modules/private/gestione_allegati.php

@ -136,7 +136,7 @@ if(intval($istanza->STATO) == ANNULLATA){
<input type="hidden" name="ID" id="id_allegato"> <input type="hidden" name="ID" id="id_allegato">
<input type="hidden" name="module" id="module"> <input type="hidden" name="module" id="module">
<input type="hidden" name="action" id="action"> <input type="hidden" name="action" id="action">
<input class="form-control" type="file" id="documento" name="documento" required> <input accept="application/pdf" class="form-control" type="file" id="documento" name="documento" required>
</div> </div>
</div> </div>

10
modules/private/page_nucleo_familiare.php

@ -74,12 +74,12 @@ if ($componente->ID > 0 && $componente->ID_ACCOUNT != $LoggedAccount->ID) {
<div class="row"> <div class="row">
<div class='col-sm-6'> <div class='col-sm-6'>
<label for="COGNOME">Cognome:<span class="text-danger">*&nbsp;</span></label> <label for="COGNOME">Cognome:<span class="text-danger">*&nbsp;</span></label>
<input type="text" required autocomplete="new-password" maxlength="150" class="form-control" id="COGNOME" name="COGNOME" value="<?= $componente->COGNOME ?>"> <input type="text" required autocomplete="new-password" maxlength="150" class="form-control" id="COGNOME" name="COGNOME" value="<?= htmlentities($componente->COGNOME) ?>">
</div> </div>
<div class='col-sm-6'> <div class='col-sm-6'>
<label for="NOME">Nome:<span class="text-danger">*&nbsp;</span></label> <label for="NOME">Nome:<span class="text-danger">*&nbsp;</span></label>
<input type="text" autocomplete="new-password" maxlength="150" required class="form-control" id="NOME" name="NOME" value="<?= $componente->NOME ?>"> <input type="text" autocomplete="new-password" maxlength="150" required class="form-control" id="NOME" name="NOME" value="<?= htmlentities($componente->NOME) ?>">
</div> </div>
</div> </div>
</div> </div>
@ -87,7 +87,7 @@ if ($componente->ID > 0 && $componente->ID_ACCOUNT != $LoggedAccount->ID) {
<div class='row'> <div class='row'>
<div class='col-sm-6'> <div class='col-sm-6'>
<label for="CODICE_FISCALE" >Codice Fiscale:<span class="text-danger">*&nbsp;</span></label> <label for="CODICE_FISCALE" >Codice Fiscale:<span class="text-danger">*&nbsp;</span></label>
<input type="text" autocomplete="new-password" required minlength="16" maxlength="16" class="form-control" id="CODICE_FISCALE" name="CODICE_FISCALE" value="<?= $componente->CODICE_FISCALE ?>"> <input type="text" autocomplete="new-password" required minlength="16" maxlength="16" class="form-control" id="CODICE_FISCALE" name="CODICE_FISCALE" value="<?= htmlentities($componente->CODICE_FISCALE) ?>">
</div> </div>
<div class='col-sm-6'> <div class='col-sm-6'>
@ -113,11 +113,11 @@ if ($componente->ID > 0 && $componente->ID_ACCOUNT != $LoggedAccount->ID) {
</div> </div>
<div class='col-sm-3'> <div class='col-sm-3'>
<label for="PROV_RESIDENZA">Provincia di Residenza:<span class="text-danger">*&nbsp;</span></label> <label for="PROV_RESIDENZA">Provincia di Residenza:<span class="text-danger">*&nbsp;</span></label>
<input type="text" autocomplete="new-password" required="" style="width: 100%" class="form-control" id="PROV_RESIDENZA" name="PROV_RESIDENZA" value="<?= $componente->PROV_RESIDENZA ?>"> <input type="text" autocomplete="new-password" required="" style="width: 100%" class="form-control" id="PROV_RESIDENZA" name="PROV_RESIDENZA" value="<?= htmlentities($componente->PROV_RESIDENZA) ?>">
</div> </div>
<div class='col-sm-3'> <div class='col-sm-3'>
<label for="CAP_RESIDENZA">CAP di Residenza:<span class="text-danger">*&nbsp;</span></label> <label for="CAP_RESIDENZA">CAP di Residenza:<span class="text-danger">*&nbsp;</span></label>
<input type="text" autocomplete="new-password" required="" style="width: 100%" class="form-control" id="CAP_RESIDENZA" name="CAP_RESIDENZA" value="<?= $componente->CAP_RESIDENZA ?>"> <input type="text" autocomplete="new-password" required="" style="width: 100%" class="form-control" id="CAP_RESIDENZA" name="CAP_RESIDENZA" value="<?= htmlentities($componente->CAP_RESIDENZA) ?>">
</div> </div>
</div> </div>
</div> </div>

17
modules/private/page_sconto.php

@ -215,6 +215,12 @@ if ($oggiMeno30 < $data_inizio_bando) {
</div> </div>
</div> </div>
<!--id="rigaForzaResidenza"--> <!--id="rigaForzaResidenza"-->
<?
$dataAcquisto = new DateTime($sconto->DATA_ACQUISTO);
$dataAutodichiearazione = new DateTime(DATA_INIZIO_AUTODICHIARAZIONE_SCONTO);
if($dataAcquisto >= $dataAutodichiearazione){?>
<div class="form-group mb-3" id="rigaForzaResidenza"> <div class="form-group mb-3" id="rigaForzaResidenza">
<div class="row row-group card border-secondary mb-3 p-2"> <div class="row row-group card border-secondary mb-3 p-2">
<div class="col-lg-12"> <div class="col-lg-12">
@ -247,6 +253,9 @@ if ($oggiMeno30 < $data_inizio_bando) {
</div> </div>
</div>--> </div>-->
</div> </div>
<?}
?>
<? if ($sconto->STATO == RS_IN_ELABORAZIONE) { ?> <? if ($sconto->STATO == RS_IN_ELABORAZIONE) { ?>
<div class="form-group"> <div class="form-group">
<div class="row"> <div class="row">
@ -268,7 +277,7 @@ if ($oggiMeno30 < $data_inizio_bando) {
</div> </div>
<div class="input-group custom-file-button"> <div class="input-group custom-file-button">
<label class="input-group-text" for="FILEPATH_BIGLIETTO">Scegli il file</label> <label class="input-group-text" for="FILEPATH_BIGLIETTO">Scegli il file</label>
<input type="file" class="form-control" name="FILEPATH_BIGLIETTO" id="FILEPATH_BIGLIETTO" required> <input type="file" accept="application/pdf" class="form-control" name="FILEPATH_BIGLIETTO" id="FILEPATH_BIGLIETTO" required>
</div> </div>
</div> </div>
</div> </div>
@ -301,7 +310,7 @@ if ($oggiMeno30 < $data_inizio_bando) {
</div> </div>
<div class="input-group custom-file-button"> <div class="input-group custom-file-button">
<label class="input-group-text" for="FILEPATH_BIGLIETTO">Sostituisci il file</label> <label class="input-group-text" for="FILEPATH_BIGLIETTO">Sostituisci il file</label>
<input type="file" class="form-control" name="FILEPATH_BIGLIETTO" id="FILEPATH_BIGLIETTO"> <input type="file" accept="application/pdf" class="form-control" name="FILEPATH_BIGLIETTO" id="FILEPATH_BIGLIETTO">
</div> </div>
</div> </div>
</div> </div>
@ -329,7 +338,7 @@ if ($oggiMeno30 < $data_inizio_bando) {
</div> </div>
<div class="input-group custom-file-button"> <div class="input-group custom-file-button">
<label class="input-group-text" for="FILEPATH_CARTAIMBARCO">Scegli il file</label> <label class="input-group-text" for="FILEPATH_CARTAIMBARCO">Scegli il file</label>
<input type="file" class="form-control" name="FILEPATH_CARTAIMBARCO" id="FILEPATH_CARTAIMBARCO" required> <input type="file" accept="application/pdf" class="form-control" name="FILEPATH_CARTAIMBARCO" id="FILEPATH_CARTAIMBARCO" required>
</div> </div>
</div> </div>
</div> </div>
@ -362,7 +371,7 @@ if ($oggiMeno30 < $data_inizio_bando) {
</div> </div>
<div class="input-group custom-file-button"> <div class="input-group custom-file-button">
<label class="input-group-text" for="FILEPATH_CARTAIMBARCO">Sostituisci il file</label> <label class="input-group-text" for="FILEPATH_CARTAIMBARCO">Sostituisci il file</label>
<input type="file" class="form-control" name="FILEPATH_CARTAIMBARCO" id="FILEPATH_CARTAIMBARCO"> <input type="file" accept="application/pdf" class="form-control" name="FILEPATH_CARTAIMBARCO" id="FILEPATH_CARTAIMBARCO">
</div> </div>
</div> </div>
</div> </div>

7
statistiche.php

@ -4,7 +4,8 @@ include 'lib/api.php';
if ($_POST['periodo']) { if ($_POST['periodo']) {
$periodo = Utils::get_filter_string_POST('periodo'); $periodo = Utils::get_filter_string_POST('periodo');
} else { } else {
$periodo = date("m/Y"); // $periodo = date("m/Y");
$periodo = "DATI COMPLETI";
} }
$elencoRichieste= Utils::elaboraStatistiche($STATS_RICHIESTE); $elencoRichieste= Utils::elaboraStatistiche($STATS_RICHIESTE);
$dati = array(); $dati = array();
@ -46,7 +47,7 @@ if (array_key_exists($periodo, $elencoRichieste)) {
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="row"> <!-- <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<label for="periodo" class='h5'>Periodo di interesse:</label> <label for="periodo" class='h5'>Periodo di interesse:</label>
<select class="form-control" id='periodo' onchange='settaPeriodo(this)'> <select class="form-control" id='periodo' onchange='settaPeriodo(this)'>
@ -56,7 +57,7 @@ if (array_key_exists($periodo, $elencoRichieste)) {
<? } ?> <? } ?>
</select> </select>
</div> </div>
</div> </div>-->
<? if (count($dati) > 0) { ?> <? if (count($dati) > 0) { ?>
<div class='row mt-3'> <div class='row mt-3'>
<div class="col-sm-6"> <div class="col-sm-6">

4
webservice/domanda.php

@ -206,7 +206,7 @@ function saveAllegato() {
$fileFullPath = $folder . "/" . $fileName; $fileFullPath = $folder . "/" . $fileName;
$fileFullPathEstratto = $folder . "/" . $nomeFileTmp . ".pdf"; $fileFullPathEstratto = $folder . "/" . $nomeFileTmp . ".pdf";
$fileFullPathEstrattoPem = $folder . "/" . $nomeFileTmp . ".pem"; $fileFullPathEstrattoPem = $folder . "/" . $nomeFileTmp . ".pem";
if (copy($_FILES[$uploadedName]['tmp_name'], $fileFullPath)) { //move_uploaded_file if (move_uploaded_file($_FILES[$uploadedName]['tmp_name'], $fileFullPath)) { //move_uploaded_file
if (File::checkMd5File($_FILES[$uploadedName]['tmp_name'], $fileFullPath)) { if (File::checkMd5File($_FILES[$uploadedName]['tmp_name'], $fileFullPath)) {
$codicefiscaleFirmatario = $LoggedAccount->CODICE_FISCALE; $codicefiscaleFirmatario = $LoggedAccount->CODICE_FISCALE;
$hashfileDaControllare = $domanda->HASH_ALLEGATO2; $hashfileDaControllare = $domanda->HASH_ALLEGATO2;
@ -232,7 +232,7 @@ function saveAllegato() {
} else { } else {
$fileFullPath = $folder . "/" . $fileName; $fileFullPath = $folder . "/" . $fileName;
$md5File = File::getSha256File($_FILES[$uploadedName]['tmp_name']); $md5File = File::getSha256File($_FILES[$uploadedName]['tmp_name']);
if (copy($_FILES[$uploadedName]['tmp_name'], $fileFullPath)) { if (move_uploaded_file($_FILES[$uploadedName]['tmp_name'], $fileFullPath)) {
$allegato->FILEPATH = $fileName; $allegato->FILEPATH = $fileName;
$allegato->FILESIZE = filesize($fileFullPath); $allegato->FILESIZE = filesize($fileFullPath);
$allegato->TIPO_DOCUMENTO = $pathInfo["TIPO_DOCUMENTO"]; $allegato->TIPO_DOCUMENTO = $pathInfo["TIPO_DOCUMENTO"];

36
webservice/sconto.php

@ -26,6 +26,26 @@ function saveSconto() {
} }
$istanza = Domanda::loadDomandaFromAccount(); $istanza = Domanda::loadDomandaFromAccount();
$idDomandaSconto = intval(Utils::get_filter_int_POST('ID'));
if ($idDomandaSconto > 0) {
$idIstanzaMia = false;
foreach ($istanza->richieste_sconti as $mieiSconti) {
if ($mieiSconti['ID'] == $idDomandaSconto) {
$idIstanzaMia = true;
}
}
} else {
$idIstanzaMia = true;
}
if (!$idIstanzaMia) {
$return['erroreDescrizione'] = "Accesso non consentito (0)";
exit(json_encode($return));
}
// Utils::print_array($istanza);
// exit();
DomandaSconti::checkVerificaDatiPreSalvataggio(); DomandaSconti::checkVerificaDatiPreSalvataggio();
$richiesta = new DomandaSconti($_POST); $richiesta = new DomandaSconti($_POST);
@ -35,12 +55,12 @@ function saveSconto() {
$md5FileCartaImbarco = File::getSha256File($_FILES['FILEPATH_CARTAIMBARCO']['tmp_name']); $md5FileCartaImbarco = File::getSha256File($_FILES['FILEPATH_CARTAIMBARCO']['tmp_name']);
$folder = $istanza->generateDirForUpload(ROOT_UPLOAD_PRESENTAZIONE, 'biglietti'); $folder = $istanza->generateDirForUpload(ROOT_UPLOAD_PRESENTAZIONE, 'biglietti');
if ($folder) { if ($folder) {
if ($_FILES['FILEPATH_BIGLIETTO']) { if ($_FILES['FILEPATH_BIGLIETTO']['size'] > 0) {
$respBiglietto = File::checkFileAllegato('FILEPATH_BIGLIETTO', MAX_SIZE_FILE, 'pdf'); $respBiglietto = File::checkFileAllegato('FILEPATH_BIGLIETTO', MAX_SIZE_FILE, 'pdf');
if ($respBiglietto['esito'] == 1) { if ($respBiglietto['esito'] == 1) {
$fileNameBiglietto = time() . "_" . $richiesta->CODICE_FISCALE . "_BE_" . $richiesta->NUMERO_VOLO . "_" . File::GetValidFilename($_FILES['FILEPATH_BIGLIETTO']['name']); $fileNameBiglietto = time() . "_" . $richiesta->CODICE_FISCALE . "_BE_" . File::GetValidName($richiesta->NUMERO_VOLO) . "_" . File::GetValidFilename($_FILES['FILEPATH_BIGLIETTO']['name']);
$fileFullPathBiglietto = $folder . "/" . $fileNameBiglietto; $fileFullPathBiglietto = $folder . "/" . $fileNameBiglietto;
if (copy($_FILES['FILEPATH_BIGLIETTO']['tmp_name'], $fileFullPathBiglietto)) { if (move_uploaded_file($_FILES['FILEPATH_BIGLIETTO']['tmp_name'], $fileFullPathBiglietto)) {
if ($richiesta->FILEPATH_BIGLIETTO != "") { if ($richiesta->FILEPATH_BIGLIETTO != "") {
unlink($folder . "/" . $richiesta->FILEPATH_BIGLIETTO); unlink($folder . "/" . $richiesta->FILEPATH_BIGLIETTO);
} }
@ -49,19 +69,21 @@ function saveSconto() {
} else { } else {
$response['esito'] = -999; $response['esito'] = -999;
$response['erroreDescrizione'] = "Al momento non è possibile allegare il file, contattare un amministratore! (10996)"; $response['erroreDescrizione'] = "Al momento non è possibile allegare il file, contattare un amministratore! (10996)";
exit(json_encode($response));
} }
} else { } else {
$response['esito'] = -999; $response['esito'] = -999;
$response['erroreDescrizione'] = $respBiglietto['erroreDescrizione']; $response['erroreDescrizione'] = $respBiglietto['erroreDescrizione'];
exit(json_encode($response));
} }
} }
if ($_FILES['FILEPATH_CARTAIMBARCO']) { if ($_FILES['FILEPATH_CARTAIMBARCO']['size'] > 0) {
$respImbarco = File::checkFileAllegato('FILEPATH_CARTAIMBARCO', MAX_SIZE_FILE, 'pdf'); $respImbarco = File::checkFileAllegato('FILEPATH_CARTAIMBARCO', MAX_SIZE_FILE, 'pdf');
if ($respImbarco['esito'] == 1) { if ($respImbarco['esito'] == 1) {
$fileNameImbarco = time() . "_" . $richiesta->CODICE_FISCALE . "_CI_" . $richiesta->NUMERO_VOLO . "_" . File::GetValidFilename($_FILES['FILEPATH_CARTAIMBARCO']['name']); $fileNameImbarco = time() . "_" . $richiesta->CODICE_FISCALE . "_CI_" . File::GetValidName($richiesta->NUMERO_VOLO) . "_" . File::GetValidFilename($_FILES['FILEPATH_CARTAIMBARCO']['name']);
$fileFullPathImbarco = $folder . "/" . $fileNameImbarco; $fileFullPathImbarco = $folder . "/" . $fileNameImbarco;
if (copy($_FILES['FILEPATH_CARTAIMBARCO']['tmp_name'], $fileFullPathImbarco)) { if (move_uploaded_file($_FILES['FILEPATH_CARTAIMBARCO']['tmp_name'], $fileFullPathImbarco)) {
if ($richiesta->FILEPATH_CARTAIMBARCO != "") { if ($richiesta->FILEPATH_CARTAIMBARCO != "") {
unlink($folder . "/" . $richiesta->FILEPATH_CARTAIMBARCO); unlink($folder . "/" . $richiesta->FILEPATH_CARTAIMBARCO);
} }
@ -70,10 +92,12 @@ function saveSconto() {
} else { } else {
$response['esito'] = -999; $response['esito'] = -999;
$response['erroreDescrizione'] = "Al momento non è possibile allegare il file, contattare un amministratore! (10996)"; $response['erroreDescrizione'] = "Al momento non è possibile allegare il file, contattare un amministratore! (10996)";
exit(json_encode($response));
} }
} else { } else {
$response['esito'] = -999; $response['esito'] = -999;
$response['erroreDescrizione'] = $respImbarco['erroreDescrizione']; $response['erroreDescrizione'] = $respImbarco['erroreDescrizione'];
exit(json_encode($response));
} }
} }
} }

Caricamento…
Annulla
Salva