<?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 .= "[&quot;".$sezione."&quot;]\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)." = &quot;".save($valore)."&quot;\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 &egrave; gi&agrave; 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&agrave; 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&agrave; 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&agrave; 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";
	}
?>


