<?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"; } ?>