448 lines
16 KiB
PHP
448 lines
16 KiB
PHP
<?php
|
|
include_once(__DIR__."/../../../core.php");
|
|
|
|
switch( $html->form('op') ){
|
|
case "updatecomponente":
|
|
$idcomponente = save( $_GET['id'] );
|
|
$matricola = $id_record;
|
|
$data = savedate( $_POST['data'] );
|
|
|
|
$post_array = array();
|
|
foreach( $_POST as $impostazione_post=>$valore_impostazione_post ){
|
|
//Creo l'array con tutti i valori passati dal POST
|
|
$impostazione_post = str_replace( "_", " ", $impostazione_post);
|
|
$impostazione_post = htmlentities( $impostazione_post, ENT_QUOTES, "UTF-8" );
|
|
$post_array[$impostazione_post] = save ($valore_impostazione_post);
|
|
}
|
|
$nome = $post_array['Nome'];
|
|
|
|
// mi ricavo il valore di contenuto leggendolo dal db
|
|
$query = "SELECT * FROM my_impianto_componenti WHERE idimpianto=\"$matricola\" AND id=\"$idcomponente\" ";
|
|
$rs = $dbo->fetchArray( $query );
|
|
$contenuto = $rs[0]['contenuto'];
|
|
$contenuto = read( $contenuto );
|
|
|
|
|
|
|
|
//Converto 'contenuto' di questo componente in un array
|
|
$ini_array = parse_ini_string( $contenuto, true );
|
|
|
|
//Creo variabile contenuto temporaneo
|
|
$contenuto_tmp = array();
|
|
|
|
//Resetto il valore di contenuto
|
|
$contenuto = '';
|
|
|
|
//Per ogni sezione dell'array estratto dal file ini
|
|
foreach ($ini_array as $sezione => $array_impostazioni){
|
|
$sezione = str_replace( "\r\n", "\n", $sezione );
|
|
$sezione = str_replace( "\n", "<br/>", $sezione );
|
|
$contenuto .= "["".$sezione.""]\n";
|
|
|
|
//Per ogni impostazione
|
|
foreach ($array_impostazioni as $impostazione => $valore_impostazione){
|
|
|
|
//Quando trovo l'impostazione 'valore' la sostituisco con il valore passato dal post
|
|
if ($impostazione=='valore'){
|
|
|
|
$da = array($impostazione => $valore_impostazione);
|
|
$a = array($impostazione => $post_array[$sezione]);
|
|
|
|
$contenuto_tmp = array_replace($ini_array[$sezione], $da, $a);
|
|
|
|
foreach ($contenuto_tmp as $impostazione_tmp => $valore_impostazione_tmp){
|
|
$valore = $valore_impostazione_tmp;
|
|
$valore = str_replace( "\r\n", "\n", $valore );
|
|
$valore = str_replace( "\n", "<br/>", $valore );
|
|
|
|
$contenuto .= save($impostazione_tmp)." = "".save($valore).""\n";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$query = "UPDATE my_impianto_componenti SET data=\"".$data."\", contenuto=\"".$contenuto."\" WHERE idimpianto=\"$matricola\" AND id=\"$idcomponente\" ";
|
|
|
|
$dbo->query( $query );
|
|
|
|
array_push( $_SESSION['infos'], "Informazioni componente aggiornate correttamente!" );
|
|
|
|
|
|
$_SESSION['id'] = $idcomponente;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "linkcomponente":
|
|
|
|
if($_GET['filename'] != "0"){
|
|
$filename = save( $_GET['filename'] );
|
|
$matricola = $id_record;
|
|
|
|
$contenuto = file_get_contents($docroot."/files/my_impianti/".$filename);
|
|
$contenuto = str_replace( ".", " ", $contenuto );
|
|
|
|
|
|
$values = parse_ini_string( $contenuto, true );
|
|
$nome = mb_convert_encoding( $values['Nome']['valore'], "iso-8859-1", "utf-8" );
|
|
|
|
$query = "INSERT INTO my_impianto_componenti( filename, idimpianto, contenuto, nome, data ) VALUES( \"$filename\", \"$matricola\", \"".save( $contenuto )."\", \"$nome\", NOW() )";
|
|
$dbo->query( $query );
|
|
|
|
$idcomponente = $dbo->last_inserted_id();
|
|
|
|
array_push( $_SESSION['infos'], "Aggiunto un nuovo componente all'impianto!" );
|
|
|
|
redirect($rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&id=".$idcomponente."#tab_3");
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case "sostituiscicomponente":
|
|
|
|
$filename = save( $_GET['filename'] );
|
|
$matricola = $id_record;
|
|
$id = save( $_GET['id'] );
|
|
|
|
$contenuto = file_get_contents($docroot."/files/my_impianti/".$filename);
|
|
$contenuto = str_replace( ".", " ", $contenuto );
|
|
$contenuto = mb_convert_encoding( $contenuto, "UTF-8", "ISO-8859-1" );
|
|
|
|
$values = parse_ini_string( $contenuto, true );
|
|
$nome = $values['Nome']['valore'];
|
|
|
|
// Verifico che questo componente non sia già stato sostituito
|
|
$query = "SELECT * FROM my_impianto_componenti WHERE idsostituto = $id";
|
|
$rs = $dbo->fetchArray( $query );
|
|
$n = sizeof($rs);
|
|
|
|
if ($n==0){
|
|
//Inserisco il nuovo componente in sostituzione
|
|
$query = "INSERT INTO my_impianto_componenti( idsostituto, filename, idimpianto, contenuto, nome, data ) VALUES( $id, \"$filename\", \"$matricola\", \"".save( $contenuto )."\", \"$nome\", NOW() )";
|
|
$dbo->query( $query );
|
|
$idcomponente = $dbo->last_inserted_id();
|
|
|
|
//Aggiorno la data di sostituzione del componente precedente
|
|
$query = "UPDATE my_impianto_componenti SET data_sostituzione = NOW() WHERE idimpianto=\"$matricola\" AND id = $id ";
|
|
$dbo->query( $query );
|
|
|
|
array_push( $_SESSION['infos'], "Aggiunto un nuovo componente in sostituzione al precedente!" );
|
|
|
|
}else{
|
|
|
|
array_push( $_SESSION['errors'], "Questo componente è già stato sostituito. Nessuna modifica applicata." );
|
|
|
|
}
|
|
|
|
redirect($rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&id=".$idcomponente."#tab_3");
|
|
|
|
break;
|
|
|
|
|
|
case "unlinkcomponente":
|
|
|
|
$idcomponente = save( $_GET['id'] );
|
|
|
|
$matricola = $id_record;
|
|
$query = "DELETE FROM my_impianto_componenti WHERE id=\"".$idcomponente."\" AND idimpianto=\"$matricola\"";
|
|
$dbo->query( $query );
|
|
|
|
array_push( $_SESSION['infos'], "Rimosso componente dall'impianto!" );
|
|
|
|
|
|
redirect($rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&id=".$idcomponente."#tab_3");
|
|
|
|
break;
|
|
|
|
|
|
|
|
//Carica i campi da compilare del componente
|
|
case "load_componente":
|
|
|
|
/* 12-10-2014 FabioP: funzione spostata in ajax_autocomplete.php per via del controllo sulla variabile $docroot su questo file! */
|
|
|
|
$filename = save( $_GET['filename'] );
|
|
$idarticolo = save( $_GET['idarticolo'] );
|
|
|
|
|
|
//Se è stato specificato un idarticolo, carico il file .ini dal campo `contenuto` di quell'idarticolo
|
|
$rs = $dbo->fetchArray("SELECT contenuto, componente_filename FROM mg_articoli WHERE id=\"".$idarticolo."\"");
|
|
|
|
|
|
//Se i campi da caricare sono del componente già salvato leggo dal campo `contenuto`...
|
|
if( $rs[0]['componente_filename'] == $filename )
|
|
$contenuto = read($rs[0]['contenuto']);
|
|
|
|
//...altrimenti carico dal file .ini
|
|
else{
|
|
if( file_exists( $docroot."/files/my_impianti/".$filename ) )
|
|
$contenuto = file_get_contents( $docroot."/files/my_impianti/".$filename );
|
|
}
|
|
|
|
$contenuto = str_replace( "`", "\"", $contenuto );
|
|
$ini_array = parse_ini_string( read($contenuto), true );
|
|
|
|
|
|
//Caricamento form per attributi componente
|
|
if( is_array($ini_array) && $ini_array['Nome']['valore']!='' ){
|
|
echo "<h3 class='fascia'>Attributi ".$ini_array['Nome']['valore']."</h3>\n";
|
|
echo "<input type='hidden' name='Nome' value=\"".$ini_array['Nome']['valore']."\" />\n";
|
|
|
|
echo "<table cellspacing=\"0\">\n";
|
|
|
|
|
|
//per ogni sezione
|
|
$i = 0;
|
|
foreach ($ini_array as $sezione => $array_impostazioni){
|
|
if( $sezione!='Nome' ){
|
|
if ( ($i==0) || ($i%2==0) ){
|
|
echo "<tr>\n";
|
|
}
|
|
|
|
$i++;
|
|
|
|
echo "<td align=\"right\" class=\"first_cell\" valign=\"middle\" style=\"width:170px;\">\n";
|
|
echo "<span><b>".$sezione.": </b></span>";
|
|
echo "</td>\n";
|
|
|
|
|
|
$nome = htmlentities($sezione, ENT_QUOTES, "UTF-8");
|
|
$tipo = $ini_array[$sezione]['tipo'];
|
|
$valore = $ini_array[$sezione]['valore'];
|
|
$opzioni = $ini_array[$sezione]['opzioni'];
|
|
|
|
( $tipo=='textarea' ) ? $valign="top" : $valign="middle";
|
|
echo "<td align=\"left\" class=\"table_cell\" valign=\"".$valign."\" >\n";
|
|
genera_campo( $nome, $tipo, $valore, $opzioni );
|
|
echo "</td>\n";
|
|
|
|
if ($i%2==0){
|
|
echo "</tr>\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
echo "</table>\n";
|
|
}
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
//Componenti non ancora collegati
|
|
if( $id_list=='' )
|
|
$id_list='0';
|
|
|
|
//Funzione per elencare i componenti disponibili
|
|
$cmp = get_componenti( $docroot."/files/my_impianti/", $id_list );
|
|
|
|
echo "<div class='row'>\n";
|
|
echo " <div class='col-md-4'>\n";
|
|
|
|
echo " <select class=\"superselect\" id=\"filename\" name=\"filename\">\n";
|
|
echo " <option value=\"0\">- Aggiungi un componente -</option>\n";
|
|
|
|
if( sizeof($cmp)>0 ){
|
|
for( $c=0; $c<sizeof($cmp); $c++ ){
|
|
echo " <option value=\"".$cmp[$c][0]."\">".$cmp[$c][1]."</option>\n";
|
|
}
|
|
}
|
|
|
|
else{
|
|
echo " <option value=\"0\">- Hai già aggiunto tutti i componenti -</option>\n";
|
|
}
|
|
|
|
echo " </select>\n";
|
|
echo " </div>\n";
|
|
|
|
echo " <div class='col-md-2'>\n";
|
|
echo " <a class=\"btn btn-primary\" id=\"addta\" href=\"javascript:;\" onclick=\"if ( $('#filename').val()!='0' ){location.href='".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&op=linkcomponente&matricola=".$id_record."&filename='+$('#filename').val();}else{ alert('Seleziona prima un componente'); $('#filename').focus(); }\"><i class='fa fa-plus'></i> Aggiungi</a>\n";
|
|
echo " </div>\n";
|
|
echo "</div>\n";
|
|
echo "<br>\n";
|
|
|
|
|
|
|
|
//Mostro tutti i componenti utilizzati elencando quelli attualmente installati per primi.
|
|
$q2 = "SELECT *, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.idintervento WHERE in_interventi.idintervento=my_impianto_componenti.idintervento) AS data_intervento FROM my_impianto_componenti WHERE idimpianto = \"".$id_record."\" ORDER by nome ASC, data_intervento DESC, idsostituto DESC";
|
|
$rs2 = $dbo->fetchArray($q2);
|
|
$n2 = sizeof($rs2);
|
|
|
|
|
|
|
|
if( $n2 > 0 ){
|
|
$prev_componente = '';
|
|
|
|
echo "<h3>Componenti già installati</h3>\n";
|
|
|
|
|
|
echo "<div class=\"panel-group\" id=\"accordion\">\n";
|
|
|
|
//Ciclo tra tutti i componenti
|
|
for( $j=0; $j<$n2; $j++ ){
|
|
|
|
$contenuto = $rs2[$j]['contenuto'];
|
|
$contenuto = str_replace( "`", "\"", $contenuto );
|
|
|
|
|
|
$ini_array = parse_ini_string( read($contenuto), true );
|
|
$nome_componente = $rs2[$j]['nome'];
|
|
$filename = $rs2[$j]['filename'];
|
|
|
|
|
|
if ($rs2[$j]['data_sostituzione']=='0000-00-00 00:00:00'){
|
|
$statocomponente = "INSTALLATO in data ".date("d/m/Y", strtotime($rs2[$j]['data']) );
|
|
}else{
|
|
$statocomponente = "SOSTITUITO in data ".date("d/m/Y", strtotime($rs2[$j]['data_sostituzione']) );
|
|
}
|
|
|
|
|
|
//Per più "versioni" dello stesso componente mostro un riga meno evidente
|
|
//per non confonderlo come componente in uso in questo momento
|
|
if( $prev_componente == $nome_componente ){
|
|
echo " <div class=\"panel panel-default\">\n";
|
|
echo " <div class=\"panel-heading mini\">\n";
|
|
echo " <h4 class=\"panel-title mini\">\n";
|
|
echo " <a data-toggle='collapse' data-parent='#accordion' href='#collapse_".$j."'><small>".$nome_componente." (".$statocomponente.")</small></a>\n";
|
|
echo " </h4>\n";
|
|
echo " </div>\n";
|
|
|
|
}
|
|
|
|
else{
|
|
echo " <div class=\"panel panel-primary\">\n";
|
|
echo " <div class=\"panel-heading\">\n";
|
|
echo " <h4 class=\"panel-title\">\n";
|
|
echo " <a data-toggle='collapse' data-parent='#accordion' href='#collapse_".$j."'>".$nome_componente." (".$statocomponente.")</a>\n";
|
|
echo " </h4>\n";
|
|
echo " </div>\n";
|
|
}
|
|
|
|
|
|
|
|
if ($_GET['id'] == $rs2[$j]['id']):
|
|
unset($_SESSION['id']);
|
|
$in = 'in';
|
|
elseif ($_SESSION['id'] == $rs2[$j]['id'] ):
|
|
$in = 'in';
|
|
else:
|
|
$in = '';
|
|
endif;
|
|
|
|
|
|
|
|
echo " <div id='collapse_".$j."' class='panel-collapse collapse ".$in." '>\n";
|
|
echo " <div class=\"panel-body\">\n";
|
|
//FORM COMPONENTE
|
|
echo " <form method=\"post\" action=\"".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&op=updatecomponente&matricola=".$id_record."&id=".$rs2[$j]['id']."\">\n";
|
|
echo " <input type='hidden' name='backto' value='record-edit'>\n";
|
|
|
|
echo " <div class='row'>\n";
|
|
|
|
//Nome
|
|
echo " <div class='col-md-6'>\n";
|
|
echo " <label>Nome:</label><br>\n";
|
|
echo " ".$rs2[$j]['nome']."\n";
|
|
echo " </div>\n";
|
|
|
|
//Data
|
|
echo " <div class='col-md-6'>\n";
|
|
echo " <label>Data:</label>\n";
|
|
echo " <input type='text' class='form-control datepicker text-center' name='data' value=\"".date("d/m/Y", strtotime($rs2[$j]['data']) )."\">\n";
|
|
echo " </div>\n";
|
|
|
|
|
|
//per ogni sezione
|
|
foreach ($ini_array as $sezione => $array_impostazioni){
|
|
//$sezione = html_entity_decode( $sezione, ENT_QUOTES, "UTF-8" );
|
|
if( $sezione!='Nome' ){
|
|
$sezione = $sezione;
|
|
$tipo = $ini_array[$sezione]['tipo'];
|
|
$valore = $ini_array[$sezione]['valore'];
|
|
$opzioni = $ini_array[$sezione]['opzioni'];
|
|
|
|
( $tipo=='textarea' ) ? $valign="top" : $valign="middle";
|
|
|
|
echo " <div class='col-md-6'>\n";
|
|
echo " <label>".$sezione.":</label>\n";
|
|
genera_campo( $sezione, $tipo, $valore, $opzioni );
|
|
echo " </div>\n";
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$interventi = $dbo->fetchArray("SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=in_interventi.idtipointervento) AS tipo, (SELECT descrizione FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS stato, (SELECT colore FROM in_statiintervento WHERE idstatointervento=in_interventi.idstatointervento) AS colore FROM in_interventi INNER JOIN my_componenti_interventi ON my_componenti_interventi.id_intervento=in_interventi.idintervento WHERE id_componente=\"".$rs2[$j]["id"]."\" ORDER BY id_intervento");
|
|
if($interventi != null){
|
|
|
|
//Collegamento a intervento se c'è
|
|
echo " <div class='col-md-12'>\n";
|
|
echo " <b>Interventi collegati:</b>\n";
|
|
echo '
|
|
<table class="table table-condensed">
|
|
<tr>
|
|
<th>Codice</th>
|
|
<th>Tipo</th>
|
|
<th>Stato</th>
|
|
<th>Data richiesta</th>
|
|
<th>Dettagli</th>
|
|
</tr>';
|
|
|
|
foreach ($interventi as $intervento){
|
|
echo '
|
|
<tr bgcolor="'.$intervento["colore"].'">
|
|
<td>'.$intervento["id_intervento"].'</td>
|
|
<td>'.$intervento["tipo"].'</td>
|
|
<td>'.$intervento["stato"].'</td>
|
|
<td>'.$intervento["data_richiesta"].'</td>
|
|
<td><a href="'.$rootdir.'/editor.php?id_module='.$modules_info["Interventi"]["id"].'&id_record='.$intervento["id_intervento"].'">Dettagli</a></td>
|
|
</tr>';
|
|
}
|
|
|
|
|
|
echo '
|
|
</table>';
|
|
echo " </div>\n";
|
|
}
|
|
else
|
|
|
|
|
|
|
|
echo " <div class='clearfix'></div><br>\n";
|
|
|
|
|
|
|
|
//Pulsante Salva/Elimina
|
|
echo " <div class='col-md-12'>\n";
|
|
echo " <button type=\"submit\" class=\"btn-app btn-success\"><i class='fa fa-check'></i> Salva</button>\n";
|
|
echo " <button type=\"button\" class=\"btn-app btn-danger\" onclick=\"location.href='".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&op=unlinkcomponente&matricola=$matricola&id=".$rs2[$j]['id']."';\"><i class='fa fa-trash-o'></i> Elimina</button>\n";
|
|
|
|
|
|
//Sostituisci componente con un altro dello stesso tipo, posso sostituire solo i componenti installati
|
|
if ($rs2[$j]['data_sostituzione']=='0000-00-00 00:00:00'){
|
|
echo " <br><br><a href=\"javascript:;\" class=\"text-warning\" onclick=\"if( confirm('Vuoi sostituire questo componente con un altro dello stesso tipo?') ){ location.href='".$rootdir."/editor.php?id_module=".$id_module."&id_record=".$id_record."&op=sostituiscicomponente&filename=".$filename."&id=".$rs2[$j]['id']."'; }\"><i class='fa fa-refresh'></i> Sostituisci questo componente</a><br><br>\n";
|
|
}
|
|
|
|
else{
|
|
echo " <br><br><p class='text-danger'>Componente già sostituito</p>\n";
|
|
}
|
|
|
|
echo " </div>\n";
|
|
echo " </div>\n";
|
|
echo " </form>\n";
|
|
echo " </div>\n";
|
|
echo " </div>\n";
|
|
echo " </div>\n";
|
|
|
|
$prev_componente = $nome_componente;
|
|
}
|
|
|
|
echo "</div>\n";
|
|
}
|
|
?>
|
|
|
|
|