fetchArray($query); $contenuto = $rs[0]['contenuto']; $contenuto = \Util\Ini::write($contenuto, $post); $query = 'UPDATE my_impianto_componenti SET data='.prepare($data).', contenuto='.prepare($contenuto).' WHERE idimpianto='.prepare($id_record).' AND id='.prepare($idcomponente); $dbo->query($query); flash()->info(tr('Informazioni componente aggiornate correttamente!')); $_SESSION['idcomponente'] = $idcomponente; break; case 'linkcomponente': $filename = get('filename'); if (!empty($filename)) { $contenuto = file_get_contents($docroot.'/files/my_impianti/'.$filename); $nome = \Util\Ini::getValue(\Util\Ini::readFile($docroot.'/files/my_impianti/'.$filename), 'Nome'); $query = 'INSERT INTO my_impianto_componenti(filename, idimpianto, contenuto, nome, data) VALUES('.prepare($filename).', '.prepare($id_record).', '.prepare($contenuto).', '.prepare($nome).', NOW())'; $dbo->query($query); $idcomponente = $dbo->lastInsertedID(); $_SESSION['idcomponente'] = $idcomponente; flash()->info(tr("Aggiunto un nuovo componente all'impianto!")); } break; case 'sostituiscicomponente': $filename = get('filename'); $id = get('id'); $nome = \Util\Ini::getValue(\Util\Ini::readFile($docroot.'/files/my_impianti/'.$filename), 'Nome'); $contenuto = file_get_contents($docroot.'/files/my_impianti/'.$filename); // Verifico che questo componente non sia già stato sostituito $query = 'SELECT * FROM my_impianto_componenti WHERE idsostituto = '.prepare($id); $rs = $dbo->fetchArray($query); if (empty($rs)) { // Inserisco il nuovo componente in sostituzione $query = 'INSERT INTO my_impianto_componenti(idsostituto, filename, idimpianto, contenuto, nome, data) VALUES('.prepare($id).', '.prepare($filename).', '.prepare($id_record).', '.prepare($contenuto).', '.prepare($nome).', NOW())'; $dbo->query($query); $idcomponente = $dbo->lastInsertedID(); $_SESSION['idcomponente'] = $idcomponente; // Aggiorno la data di sostituzione del componente precedente $query = 'UPDATE my_impianto_componenti SET data_sostituzione = NOW() WHERE idimpianto = '.prepare($id_record).' AND id = '.prepare($id); $dbo->query($query); flash()->info(tr('Aggiunto un nuovo componente in sostituzione al precedente!')); } else { flash()->error(tr('Questo componente è già stato sostituito!').' '.('Nessuna modifica applicata')); } break; case 'unlinkcomponente': $idcomponente = filter('id'); $query = 'DELETE FROM my_impianto_componenti WHERE id='.prepare($idcomponente).' AND idimpianto='.prepare($id_record); $dbo->query($query); flash()->info(tr("Rimosso componente dall'impianto!")); break; } // Componenti non ancora collegati if (empty($id_list)) { $id_list = '0'; } echo '

'.tr('Componenti installati').'

'; // Elenca i componenti disponibili $cmp = \Util\Ini::getList($docroot.'/files/my_impianti/', $id_list); echo '
'; echo " ".tr('Aggiungi').''; echo '

'; // 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.id WHERE in_interventi.id=my_impianto_componenti.idintervento) AS data_intervento FROM my_impianto_componenti WHERE idimpianto = '.prepare($id_record).' ORDER by nome ASC, data_intervento DESC, idsostituto DESC'; $rs2 = $dbo->fetchArray($q2); $n2 = count($rs2); if (!empty($rs2)) { $prev_componente = ''; echo '
'; // Ciclo tra tutti i componenti for ($j = 0; $j < $n2; ++$j) { $contenuto = $rs2[$j]['contenuto']; $nome_componente = $rs2[$j]['nome']; $filename = $rs2[$j]['filename']; if (empty($rs2[$j]['data_sostituzione'])) { $statocomponente = tr('INSTALLATO in data _DATE_', [ '_DATE_' => Translator::dateToLocale($rs2[$j]['data']), ]); } else { $statocomponente = tr('SOSTITUITO in data _DATE_', [ '_DATE_' => Translator::dateToLocale($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 $same = ($prev_componente == $nome_componente); if (get('id') == $rs2[$j]['id']) { $collapsed = ''; $icon = 'minus'; } elseif ($_SESSION['idcomponente'] == $rs2[$j]['id']) { unset($_SESSION['idcomponente']); $collapsed = ''; $icon = 'minus'; } else { $collapsed = 'collapsed-box'; $icon = 'plus'; } echo '

'. ($same ? '' : '').$nome_componente.' ('.$statocomponente.')'.($same ? '' : '').'

'; echo '
'; // FORM COMPONENTE echo '
'; // Nome echo '
{[ "type": "span", "label": "'.tr('Nome').':", "name": "nome", "value": "'.$rs2[$j]['nome'].'" ]}
'; // Data echo '
{[ "type": "date", "label": "'.tr('Data').':", "name": "data_componente", "id": "data_componente'.$j.'", "value": "'.$rs2[$j]['data'].'" ]}
'; $fields = \Util\Ini::getFields($contenuto); array_shift($fields); foreach ($fields as $field) { echo '
'.$field.'
'; } $interventi = $dbo->fetchArray('SELECT *, DATE_FORMAT(data_richiesta,"%d/%m/%Y") AS data_richiesta, (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.id WHERE id_componente='.prepare($rs2[$j]['id']).' ORDER BY id_intervento'); if ($interventi != null) { // Collegamento a intervento se c'è echo '
'.tr('Interventi collegati').': '; foreach ($interventi as $intervento) { echo ' '; } echo '
'.tr('Codice').' '.tr('Tipo').' '.tr('Stato').' '.tr('Data richiesta').' '.tr('Dettagli').'
'.$intervento['codice'].' '.$intervento['tipo'].' '.$intervento['stato'].' '.$intervento['data_richiesta'].' '.Modules::link('Interventi', $intervento['id_intervento'], null, '-').'
'; } else { echo '
'.tr('Nessun intervento collegato a questo componente!').'
'; } if (!empty($rs2[$j]['idintervento'])) { echo ' '.Modules::link('Interventi', $rs2[$j]['idintervento'], tr('Intervento num. _NUM_ del _DATE_', [ '_NUM_' => $rs2[$j]['codice'], '_DATE_' => Translator::dateToLocale($rs2[$j]['data_intervento']), ])).'
'; } echo '

'; // Pulsante Salva/Elimina echo '
'.tr('Elimina').''; // Sostituisci componente con un altro dello stesso tipo, posso sostituire solo i componenti installati if (empty($rs2[$j]['data_sostituzione'])) { echo " '; } else { echo ' '; } echo ' '; echo '
'; $prev_componente = $nome_componente; } echo '
'; } else { echo '
'.tr('Nessun componente inserito').'.
'; } echo '
';