Rimozione di vari warning

This commit is contained in:
Thomas Zilio 2018-06-23 15:41:32 +02:00
parent 5a8deafa01
commit 893d1b6081
38 changed files with 334 additions and 348 deletions

View File

@ -102,7 +102,7 @@ if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom
// Query effettiva
$query = str_replace_once('SELECT', 'SELECT SQL_CALC_FOUND_ROWS', $result_query);
$rs = $dbo->fetchArray($query);
// Conteggio dei record filtrati
@ -187,7 +187,7 @@ if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom
// Colore del testo
if (!empty($column['data-background'])) {
$column['data-color'] = $column['data-color'] ?: color_inverse($column['data-background']);
$column['data-color'] = isset($column['data-color']) ? $column['data-color'] : color_inverse($column['data-background']);
}
// Link della colonna

View File

@ -72,7 +72,6 @@ if (filter('op') == 'send') {
}
$pageTitle = tr('Bug');
$jscript_modules[] = App::getPaths()['js'].'/ckeditor/ckeditor.js';
if (file_exists($docroot.'/include/custom/top.php')) {
include $docroot.'/include/custom/top.php';
@ -191,7 +190,9 @@ echo '
}
});
});
</script>';
</script>
<script type="text/javascript" charset="utf-8" src="'.App::getPaths()['js'].'/ckeditor/ckeditor.js'.'"></script>';
if (file_exists($docroot.'/include/custom/bottom.php')) {
include $docroot.'/include/custom/bottom.php';

View File

@ -41,5 +41,6 @@ $formatter = [
// Ulteriori file CSS e JS da includere
$assets = [
'css' => [],
'print' => [],
'js' => [],
];

View File

@ -65,7 +65,7 @@ if (!API::isAPIRequest()) {
// Impostazioni di debug
if (!empty($debug)) {
// Ignoramento degli avvertimenti e delle informazioni relative alla deprecazione di componenti
// Ignora gli avvertimenti e le informazioni relative alla deprecazione di componenti
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_USER_DEPRECATED);
// File di log ordinato in base alla data
@ -178,21 +178,13 @@ if (!API::isAPIRequest()) {
register_shutdown_function('translateTemplate');
// Impostazione della sessione di base
$_SESSION['infos'] = array_unique((array) $_SESSION['infos']);
$_SESSION['warnings'] = array_unique((array) $_SESSION['warnings']);
$_SESSION['errors'] = array_unique((array) $_SESSION['errors']);
$_SESSION['infos'] = isset($_SESSION['infos']) ? array_unique($_SESSION['infos']) : [];
$_SESSION['warnings'] = isset($_SESSION['warnings']) ? array_unique($_SESSION['warnings']) : [];
$_SESSION['errors'] = isset($_SESSION['errors']) ? array_unique($_SESSION['errors']) : [];
// Impostazione del tema grafico di default
$theme = !empty($theme) ? $theme : 'default';
$assets = App::getAssets();
// CSS di base del progetto
$css_modules = $assets['css'];
// JS di base del progetto
$jscript_modules = $assets['js'];
if ($continue) {
$id_module = filter('id_module');
$id_record = filter('id_record');
@ -211,11 +203,6 @@ if (!API::isAPIRequest()) {
$_SESSION['period_end'] = date('Y').'-12-31';
}
// Segmenti
if (empty($_SESSION['m'.$id_module]['id_segment'])) {
$_SESSION['m'.$id_module]['id_segment'] = Modules::getSegments($id_module)[0]['id'];
}
$user = Auth::user();
if (!empty($id_module)) {
@ -223,6 +210,12 @@ if (!API::isAPIRequest()) {
$pageTitle = $module['title'];
// Segmenti
if (!isset($_SESSION['m'.$id_module]['id_segment'])) {
$segments = Modules::getSegments($id_module);
$_SESSION['m'.$id_module]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null;
}
Permissions::addModule($id_module);
}

View File

@ -33,11 +33,16 @@ echo '<!DOCTYPE html>
<link href="'.$paths['img'].'/favicon.png" rel="icon" type="image/x-icon" />';
foreach ($css_modules as $style) {
$style = (is_array($style)) ? $style : ['href' => $style, 'media' => 'all'];
// CSS
foreach (App::getAssets()['css'] as $style) {
echo '
<link rel="stylesheet" type="text/css" media="'.$style['media'].'" href="'.$style['href'].'"/>';
<link rel="stylesheet" type="text/css" media="all" href="'.$style.'"/>';
}
// Print CSS
foreach (App::getAssets()['print'] as $style) {
echo '
<link rel="stylesheet" type="text/css" media="print" href="'.$style.'"/>';
}
if (Auth::check()) {
@ -128,7 +133,8 @@ if (Auth::check()) {
</script>';
}
foreach ($jscript_modules as $js) {
// JS
foreach (App::getAssets()['js'] as $js) {
echo '
<script type="text/javascript" charset="utf-8" src="'.$js.'"></script>';
}

View File

@ -131,8 +131,11 @@ echo '
<script>
var emails = [];
$(document).ready(function(){
$(document).ready(function(){';
// Autocompletamento destinatario
if (!empty($variables['id_anagrafica'])) {
echo '
$(document).load(globals.rootdir + "/ajax_complete.php?module=Anagrafiche&op=get_email&id_anagrafica='.$variables['id_anagrafica'].'", function(response) {
emails = JSON.parse(response);
@ -144,7 +147,10 @@ echo '
$(this).autocomplete("search", $(this).val())
});;
});
});
});';
}
echo '
CKEDITOR.replace("body", {
toolbar: globals.ckeditorToolbar,

View File

@ -4,9 +4,7 @@ include_once __DIR__.'/../../../core.php';
switch ($resource) {
case 'clienti':
//$citta_cliente = ", IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')'))";
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale $citta_cliente) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
$query = 'SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);

View File

@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
/**
* Funzione per inserire i movimenti di magazzino.
*/
function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '', $data='')
function add_movimento_magazzino($id_articolo, $qta, $array = [], $descrizone = '', $data = '')
{
$dbo = Database::getConnection();
@ -13,8 +13,12 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
return false;
}
//Info Articolo
$rs_art = $dbo->fetchArray("SELECT * FROM mg_articoli WHERE id='".$idarticolo."'");
$nome = null;
$tipo = null;
$numero = null;
// Informazioni articolo
$articolo = $dbo->fetchOne('SELECT * FROM mg_articoli WHERE id='.prepare($id_articolo));
$manuale = 0;
// Ddt
@ -22,7 +26,7 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
$rs = $dbo->fetchArray('SELECT numero, numero_esterno, dt_tipiddt.descrizione AS tipo, dt_tipiddt.dir FROM dt_ddt LEFT JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($array['idddt']));
$numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero'];
$tipo = strtolower($rs[0]['tipo']);
$rs_data = $dbo->fetchArray("SELECT data FROM dt_ddt WHERE id='".$array['idddt']."'");
$data = $rs_data[0]['data'];
}
@ -32,7 +36,7 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
$rs = $dbo->fetchArray('SELECT numero, numero_esterno, co_tipidocumento.descrizione AS tipo, co_tipidocumento.dir FROM co_documenti LEFT JOIN co_tipidocumento ON co_tipidocumento.id = co_documenti.idtipodocumento WHERE co_documenti.id='.prepare($array['iddocumento']));
$numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero'];
$tipo = strtolower($rs[0]['tipo']);
$rs_data = $dbo->fetchArray("SELECT data FROM co_documenti WHERE id='".$array['iddocumento']."'");
$data = $rs_data[0]['data'];
}
@ -54,20 +58,18 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
$new = ($qta < 0 ? '+' : '').-$qta;
$dbo->query('UPDATE mg_articoli_automezzi SET qta = qta + '.$new.' WHERE idarticolo = '.prepare($idarticolo).' AND idautomezzo = '.prepare($array['idautomezzo']));
$dbo->query('UPDATE mg_articoli_automezzi SET qta = qta + '.$new.' WHERE idarticolo = '.prepare($id_articolo).' AND idautomezzo = '.prepare($array['idautomezzo']));
$data = date('Y-m-d');
}
// Intervento
elseif (!empty($array['idintervento'])) {
$rs_data = $dbo->fetchArray('SELECT IFNULL(MAX(orario_fine), data_richiesta) AS data, codice FROM in_interventi LEFT JOIN in_interventi_tecnici ON in_interventi.id=in_interventi_tecnici.idintervento WHERE in_interventi.id = '.prepare($array['idintervento']));
$rs_data = $dbo->fetchArray('SELECT IFNULL(MAX(orario_fine), data_richiesta) AS data, codice FROM in_interventi LEFT JOIN in_interventi_tecnici ON in_interventi.id=in_interventi_tecnici.idintervento WHERE in_interventi.id = '.prepare($array['idintervento']));
$data = $rs_data[0]['data'];
$codice_intervento = $rs_data[0]['codice'];
$codice_intervento = $rs_data[0]['codice'];
$movimento = ($qta > 0) ? tr('Ripristino articolo da intervento _NUM_') : tr('Scarico magazzino per intervento _NUM_');
$numero = $codice_intervento;
}
// Manuale
@ -79,8 +81,8 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
if (empty($movimento)) {
$movimento = ($qta > 0) ? tr('Carico magazzino') : tr('Scarico magazzino');
}
if($data==''){
if ($data == '') {
$data = date('Y-m-d');
}
}
@ -99,16 +101,16 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = '
$new = ($qta > 0 ? '+' : '').$qta;
//Movimento il magazzino solo se l'articolo non è un servizio
if ($rs_art[0]['servizio'] == 0) {
// Movimento il magazzino solo se l'articolo non è un servizio
if ($articolo['servizio'] == 0) {
// Movimentazione effettiva
if (empty($array['idintervento']) || empty($array['idautomezzo'])) {
$dbo->query('UPDATE mg_articoli SET qta = qta + '.$new.' WHERE id = '.prepare($idarticolo));
$dbo->query('UPDATE mg_articoli SET qta = qta + '.$new.' WHERE id = '.prepare($id_articolo));
}
// Registrazione della movimentazione
$dbo->insert('mg_movimenti', array_merge($array, [
'idarticolo' => $idarticolo,
'idarticolo' => $id_articolo,
'qta' => $qta,
'movimento' => $movimento,
'data' => $data,

View File

@ -11,9 +11,9 @@ echo '
</div>
<div class="panel-body">';
$search_lotto = $get['search_lotto'];
$search_serial = $get['search_serial'];
$search_altro = $get['search_altro'];
$search_lotto = get('search_lotto');
$search_serial = get('search_serial');
$search_altro = get('search_altro');
// Calcolo prossimo lotto e serial number
$rs = $dbo->fetchArray('SELECT MAX(lotto) AS max_lotto, MAX(serial) AS max_serial, MAX(altro) AS max_altro FROM mg_prodotti WHERE id_articolo='.prepare($id_record));

View File

@ -418,7 +418,7 @@ if (!empty($fatture)) {
?>
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module; ?>", "id_record": "<?php echo $id_record; ?>", "ajax":"true" )}
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module; ?>", "id_record": "<?php echo $id_record; ?>", "ajax": "true" )}
<a class="btn btn-danger ask" data-backto="record-list">
<i class="fa fa-trash"></i> <?php echo tr('Elimina'); ?>

View File

@ -10,45 +10,37 @@ $disabled = '';
$hide = 'hide';
$op = 'edit-pianifica';
//mi ricavo informazioni del contratto
$data_conclusione = $dbo->fetchArray('SELECT `data_conclusione` FROM `co_contratti` WHERE `id` = '.prepare($id_record))[0]['data_conclusione'];
$idanagrafica = $dbo->fetchArray('SELECT `idanagrafica` FROM `co_contratti` WHERE `id` = '.prepare($id_record))[0]['idanagrafica'];
$list = '\"1\":\"'.tr('Pianificare a partire da oggi ').date('d/m/Y').'\"';
//promemoria esistente
if (!empty($get['idcontratto_riga'])){
$idcontratto_riga = $get['idcontratto_riga'];
$qp = 'SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_righe_contratti.idtipointervento) AS tempo_standard FROM co_righe_contratti WHERE id = '.$idcontratto_riga;
$rsp = $dbo->fetchArray($qp);
if (!empty($get['idcontratto_riga'])) {
$idcontratto_riga = $get['idcontratto_riga'];
$qp = 'SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_righe_contratti.idtipointervento) AS tempo_standard FROM co_righe_contratti WHERE id = '.$idcontratto_riga;
$rsp = $dbo->fetchArray($qp);
$data_richiesta = readDate($rsp[0]['data_richiesta']);
$matricoleimpianti = trim($rsp[0]['idimpianti']);
$idsede = $rsp[0]['idsede'];
$tempo_standard = $rsp[0]['tempo_standard'];
$readonly = 'readonly';
$hide = '';
$list .= ', \"0\":\"'.tr('Pianificare a partire da questo promemoria ').$data_richiesta.'\"';
$op = 'pianificazione';
$data_richiesta = readDate($rsp[0]['data_richiesta']);
$matricoleimpianti = trim($rsp[0]['idimpianti']);
$idsede = $rsp[0]['idsede'];
$tempo_standard = $rsp[0]['tempo_standard'];
$readonly = 'readonly';
$hide = '';
$list .= ', \"0\":\"'.tr('Pianificare a partire da questo promemoria ').$data_richiesta.'\"';
$op = 'pianificazione';
}
//se non è impostata idcontratto_riga allora sono in fase di inserimento di nuovo promemoria e mi calcolo il prossimo id per co_righe_contratti
(empty($idcontratto_riga)) ? $idcontratto_riga = $dbo->fetchArray('SELECT MAX(id) AS max_idcontratto_riga FROM `co_righe_contratti`')[0]['max_idcontratto_riga'] : '';
(empty($idcontratto_riga)) ? $idcontratto_riga = 1 : '';
//orari inizio fine interventi (8h standard)
$orario_inizio = '09:00';
$orario_fine = (!empty($tempo_standard)) ? date('H:i', strtotime($orario_inizio) + ((60 * 60 ) * $tempo_standard)) : '17:00';
$orario_fine = (!empty($tempo_standard)) ? date('H:i', strtotime($orario_inizio) + ((60 * 60) * $tempo_standard)) : '17:00';
echo '
<form id="add_form" action="'.$rootdir.'/editor.php?id_module='.Modules::get('Contratti')['id'].'&id_record='.$id_record.'&idcontratto_riga='.$idcontratto_riga.'" method="post">
@ -56,7 +48,7 @@ echo '
<input type="hidden" name="backto" value="record-edit">
<input type="hidden" name="op" value="'.$op.'">';
echo '
echo '
<!-- DATI PROMEMORIA? -->
<div class="panel panel-primary">
<div class="panel-heading">
@ -64,34 +56,34 @@ echo '
</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6">
{[ "type": "date", "label": "'.tr('Data promemoria').'", "name": "data_richiesta", "required": 1, "value": "'.$data_richiesta.'", "extra":"'.$readonly.'" ]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "id": "idtipointervento_", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "'.$rsp[0]['idtipointervento'].'", "extra": "'.$readonly.'", "ajax-source": "tipiintervento" ]}
</div>
</div>
<div class="row">
<div class="col-md-6">
{[ "type": "select", "multiple": "1", "label": "'.tr('Impianti').'", "name": "idimpianti[]", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_record.' ORDER BY descrizione", "value": "'.$matricoleimpianti.'", "extra":"'.$readonly.'" ]}
</div>
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Sede').'", "name": "idsede_c", "values": "query=SELECT 0 AS id, \'Sede legale\' AS descrizione UNION SELECT id, CONCAT( CONCAT_WS( \' (\', CONCAT_WS(\', \', `nomesede`, `citta`), `indirizzo` ), \')\') AS descrizione FROM an_sedi WHERE idanagrafica='.$idanagrafica.'", "value": "'.$idsede.'", "extra":"'.$readonly.'" ]}
</div>
</div>
<div class="row">
<div class="col-md-12">
@ -99,10 +91,9 @@ echo '
</div>
</div>';
?>
<!-- ARTICOLI -->
<div class="panel panel-primary">
<div class="panel-heading">
@ -115,16 +106,16 @@ echo '
</div>
<?php if (empty($readonly)) {
?>
?>
<button type="button" class="btn btn-primary" data-title="<?php echo tr('Aggiungi articolo'); ?>" data-target="#bs-popup2" data-toggle="modal" data-href="<?php echo $rootdir; ?>/modules/contratti/plugins/add_articolo.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>&idcontratto_riga=<?php echo $idcontratto_riga; ?>" ><i class="fa fa-plus"></i> <?php echo tr('Aggiungi articolo'); ?>...</button>
<?php
} ?>
} ?>
</div>
</div>
<!-- SPESE AGGIUNTIVE -->
<div class="panel panel-primary">
<div class="panel-heading">
@ -133,23 +124,23 @@ echo '
<div class="panel-body">
<div id="righe">
<?php include $docroot.'/modules/contratti/plugins/ajax_righe.php' ?>
<?php include $docroot.'/modules/contratti/plugins/ajax_righe.php'; ?>
</div>
<?php if (empty($readonly)) {
?>
?>
<button type="button" class="btn btn-primary" data-title="<?php echo tr('Aggiungi altre spese'); ?>" data-target="#bs-popup2" data-toggle="modal" data-href="<?php echo $rootdir; ?>/modules/contratti/plugins/add_righe.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>&idcontratto_riga=<?php echo $idcontratto_riga; ?>"><i class="fa fa-plus"></i> <?php echo tr('Aggiungi altre spese'); ?>...</button>
<?php
} ?>
} ?>
</div>
</div>
<?php
<?php
echo '
{( "name": "filelist_and_upload", "id_record": "'.$idcontratto_riga.'", "id_plugin": "'.$id_plugin.'", "ajax":"true", '.((!empty($readonly)) ? '"readonly":"true"' : '"readonly":"false"' ). ' )}
{( "name": "filelist_and_upload", "id_record": "'.$idcontratto_riga.'", "id_plugin": "'.$id_plugin.'", "ajax": "true", '.((!empty($readonly)) ? '"readonly": "true"' : '"readonly":"false"').' )}
</div>
</div>
@ -159,7 +150,6 @@ echo '
';
echo '
<!-- PIANIFICAZIONE CICLICA? -->
<div class="panel panel-primary '.$hide.'">
@ -168,17 +158,16 @@ echo '
</div>
<div class="panel-body">';
echo '<div class="row">
<div class="col-md-2">
{[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "class": "", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1" ]}
</div>';
?>
<div class="col-md-7">
{[ "type": "select", "label": "<?php echo tr('Inizio pianificazione'); ?>", "name": "parti_da_oggi", "values": "list=<?php echo $list ?>", "value": "" ]}
{[ "type": "select", "label": "<?php echo tr('Inizio pianificazione'); ?>", "name": "parti_da_oggi", "values": "list=<?php echo $list; ?>", "value": "" ]}
</div>
<?php
@ -192,13 +181,11 @@ echo '
</div>
</div>
</div>';
echo '
<!-- PIANIFICARE INTERVENTI? -->
<div class="panel panel-primary '.$hide.'">
@ -207,7 +194,7 @@ echo '
</div>
<div class="panel-body">
<div class="row">
@ -229,7 +216,7 @@ echo '
</div>
</div>
</div>
</div>

View File

@ -1,12 +1,9 @@
<?php
$rs = $dbo->fetchArray('SELECT *,
$r = $dbo->fetchOne('SELECT *,
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=co_contratti.idanagrafica) AS email
FROM co_contratti WHERE id='.prepare($id_record));
// Risultato effettivo
$r = $rs[0];
// Variabili da sostituire
return [
'email' => $r['email'],

View File

@ -65,7 +65,7 @@ for ($i = 0; $i < count($rs); ++$i) {
}
}
$checks .= "<li><input type='checkbox' id='idstato_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idstatiintervento', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idstati_count', $('#idstati_ul').find('input:checked').length ); \"> <label for='idstato_".$rs[$i]['id']."'> <span class='badge' style=\"color:".color_inverse($rs[$i]['colore'])."; background:".$rs[$i]['colore'].";\">".$rs[$i]['descrizione']."</span></label></li>\n";
$checks .= "<li><input type='checkbox' id='idstato_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idstatiintervento', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idstati_count', $('#idstati_ul').find('input:checked').length ); \"> <label for='idstato_".$rs[$i]['id']."'> <span class='badge' style=\"color:".color_inverse($rs[$i]['colore']).'; background:'.$rs[$i]['colore'].';">'.$rs[$i]['descrizione']."</span></label></li>\n";
$allchecksstati .= "session_set_array( 'dashboard,idstatiintervento', '".$rs[$i]['id']."', 0 ); ";
}
@ -176,7 +176,7 @@ for ($i = 0; $i < count($rs); ++$i) {
}
}
$checks .= "<li><input type='checkbox' id='tech_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idtecnici', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length ); \"> <label for='tech_".$rs[$i]['id']."'><span class='badge' style=\"color:#000; background:transparent; border: 1px solid ".$rs[$i]['colore'].";\">".$rs[$i]['ragione_sociale']."</span></label></li>\n";
$checks .= "<li><input type='checkbox' id='tech_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idtecnici', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtecnici_count', $('#idtecnici_ul').find('input:checked').length ); \"> <label for='tech_".$rs[$i]['id']."'><span class='badge' style=\"color:#000; background:transparent; border: 1px solid ".$rs[$i]['colore'].';">'.$rs[$i]['ragione_sociale']."</span></label></li>\n";
$allchecktecnici .= "session_set_array( 'dashboard,idtecnici', '".$rs[$i]['id']."', 0 ); ";
}
@ -234,6 +234,8 @@ if ($totale_tecnici == 0) {
<?php
// Zone
$allcheckzone = null;
$checks = '';
$count = 0;
$total = 0;
@ -253,7 +255,7 @@ for ($i = 0; $i < count($rs); ++$i) {
$checks .= "<li><input type='checkbox' id='idzone_".$rs[$i]['id']."' value=\"".$rs[$i]['id'].'" '.$attr." onclick=\"$.when ( session_set_array( 'dashboard,idzone', '".$rs[$i]['id']."' ) ).promise().then(function( ){ $('#calendar').fullCalendar('refetchEvents'); update_counter( 'idzone_count', $('#idzone_ul').find('input:checked').length ); }); \"> <label for='idzone_".$rs[$i]['id']."'> ".$rs[$i]['descrizione']."</label></li>\n";
$allcheckzone .= "session_set_array( 'dashboard,idzone', '".$rs[$i]['id']."', 0 ); ";
$allcheckzone = "session_set_array( 'dashboard,idzone', '".$rs[$i]['id']."', 0 ); ";
}
if ($count == $total) {
@ -304,8 +306,8 @@ if (!empty($rsp)) {
<h4>'.tr('Promemoria contratti da pianificare').'</h4>';
// Controllo pianificazioni mesi precedenti
$qp_old = "SELECT co_righe_contratti.id FROM co_righe_contratti INNER JOIN co_contratti ON co_righe_contratti.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_righe_contratti.data_richiesta)+86400<UNIX_TIMESTAMP(NOW())
UNION SELECT co_ordiniservizio.id FROM co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_ordiniservizio.data_scadenza)+86400<UNIX_TIMESTAMP(NOW())";
$qp_old = 'SELECT co_righe_contratti.id FROM co_righe_contratti INNER JOIN co_contratti ON co_righe_contratti.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_righe_contratti.data_richiesta)+86400<UNIX_TIMESTAMP(NOW())
UNION SELECT co_ordiniservizio.id FROM co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_ordiniservizio.data_scadenza)+86400<UNIX_TIMESTAMP(NOW())';
$rsp_old = $dbo->fetchNum($qp_old);
if ($rsp_old > 0) {

View File

@ -7,15 +7,13 @@ $module = Modules::get($id_module);
if ($module['name'] == 'Ddt di vendita') {
$dir = 'entrata';
$rs = $dbo->fetchArray("SELECT id FROM dt_tipiddt WHERE descrizione='Ddt di vendita' LIMIT 0,1");
$id_tipoddt = $rs[0]['id'];
$id_tipoddt = $dbo->fetchOne("SELECT id FROM dt_tipiddt WHERE descrizione='Ddt di vendita'")['id'];
$tipo_anagrafica = tr('Cliente');
} else {
$dir = 'uscita';
$rs = $dbo->fetchArray("SELECT id FROM dt_tipiddt WHERE descrizione='Ddt di acquisto' LIMIT 0,1");
$id_tipoddt = $rs[0]['id'];
$id_tipoddt = $dbo->fetchOne("SELECT id FROM dt_tipiddt WHERE descrizione='Ddt di acquisto'")['id'];
$tipo_anagrafica = tr('Fornitore');
}
@ -31,7 +29,7 @@ if ($module['name'] == 'Ddt di vendita') {
</div>
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo $tipo_anagrafica; ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='<?php echo $tipo_anagrafica; ?>' AND deleted=0 ORDER BY ragione_sociale", "value": "<?php echo $idanagrafica; ?>", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=<?php echo $tipo_anagrafica; ?>" ]}
{[ "type": "select", "label": "<?php echo $tipo_anagrafica; ?>", "name": "idanagrafica", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE descrizione='<?php echo $tipo_anagrafica; ?>' AND deleted=0 ORDER BY ragione_sociale", "value": "<?php echo $user['idanagrafica']; ?>", "icon-after": "add|<?php echo Modules::get('Anagrafiche')['id']; ?>|tipoanagrafica=<?php echo $tipo_anagrafica; ?>" ]}
</div>
<div class="col-md-4">

View File

@ -1,12 +1,9 @@
<?php
$rs = $dbo->fetchArray('SELECT *,
$r = $dbo->fetchOne('SELECT *,
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=dt_ddt.idanagrafica) AS email
FROM dt_ddt WHERE id='.prepare($id_record));
// Risultato effettivo
$r = $rs[0];
// Variabili da sostituire
return [
'email' => $r['email'],

View File

@ -1,12 +1,9 @@
<?php
$rs = $dbo->fetchArray('SELECT *,
$r = $dbo->fetchOne('SELECT *,
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=co_documenti.idanagrafica) AS email
FROM co_documenti WHERE id='.prepare($id_record));
// Risultato effettivo
$r = $rs[0];
// Variabili da sostituire
return [
'email' => $r['email'],

View File

@ -52,7 +52,7 @@ foreach ($records as $record) {
else {
$numerico = in_array($record['tipo'], ['integer', 'decimal']);
$tipo = (preg_match('/password/i', $record['nome'], $m)) ? 'password' : $tipo;
$tipo = preg_match('/password/i', $record['nome'], $m) ? 'password' : $record['tipo'];
$tipo = $numerico ? 'number' : 'text';
echo '

View File

@ -1,10 +1,11 @@
<?php
if (file_exists( __DIR__.'/../../../core.php')) {
include_once __DIR__.'/../../../core.php';
}else {
include_once __DIR__.'/../../core.php';
if (file_exists(__DIR__.'/../../../core.php')) {
include_once __DIR__.'/../../../core.php';
} else {
include_once __DIR__.'/../../core.php';
}
if (file_exists($docroot.'/modules/interventi/custom/modutil.php')) {
include_once $docroot.'/modules/interventi/custom/modutil.php';
} else {
@ -124,47 +125,26 @@ if (!empty($rs2)) {
<input type="hidden" name="prezzo_ore_unitario_tecnico['.$id.']" value="'.$costo_ore_unitario_tecnico.'" />
<input type="hidden" name="prezzo_km_unitario_tecnico['.$id.']" value="'.$costo_km_unitario_tecnico.'" />
<input type="hidden" name="prezzo_dirittochiamata_tecnico['.$id.']" value="'.$costo_dirittochiamata_tecnico.'" />';
echo '
<tr>
<td class="tecn_'.$r['idtecnico'].'" style="min-width:200px;" >';
if ($rs[0]['stato'] != 'Fatturato') {
// Elenco tipologie di interventi
echo '
{[ "type": "select", "name": "idtipointerventot['.$id.']", "value": "'.$r['idtipointervento'].'", "values": "query=SELECT idtipointervento AS id, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipointervento=in_tipiintervento.idtipointervento AND idtecnico='.prepare($r['idtecnico']).'), 0) AS costo_orario FROM in_tipiintervento ORDER BY descrizione", "extra": "'.$readonly.'" ]}';
}
<input type="hidden" name="prezzo_dirittochiamata_tecnico['.$id.']" value="'.$costo_dirittochiamata_tecnico.'" />
<tr>';
// Elenco tipologie di interventi
echo '
<td class="tecn_'.$r['idtecnico'].'" style="min-width:200px;">
{[ "type": "select", "name": "idtipointerventot['.$id.']", "value": "'.$r['idtipointervento'].'", "values": "query=SELECT idtipointervento AS id, descrizione, IFNULL((SELECT costo_ore FROM in_tariffe WHERE idtipointervento=in_tipiintervento.idtipointervento AND idtecnico='.prepare($r['idtecnico']).'), 0) AS costo_orario FROM in_tipiintervento ORDER BY descrizione", "extra": "'.$readonly.'" ]}
</td>';
// Orario di inizio
echo '
<td>';
if ($rs[0]['stato'] == 'Fatturato') {
echo '
<span>'.$orario_inizio.'</span>
<input type="hidden" name="orario_inizio['.$id.']" value="'.$orario_inizio.'">';
} else {
echo '
{[ "type": "timestamp", "name": "orario_inizio['.$id.']", "id": "inizio_'.$id.'", "value": "'.$orario_inizio.'", "class": "orari min-width", "extra": "'.$readonly.'" ]}';
}
echo '
<td>
{[ "type": "timestamp", "name": "orario_inizio['.$id.']", "id": "inizio_'.$id.'", "value": "'.$orario_inizio.'", "class": "orari min-width", "extra": "'.$readonly.'" ]}
</td>';
// Orario di fine
echo '
<td>';
if ($rs[0]['stato'] == 'Fatturato') {
echo '
<span>'.$orario_fine.'</span>
<input type="hidden" name="orario_fine['.$id.']" value="'.$orario_fine.'">';
} else {
echo '
{[ "type": "timestamp", "name": "orario_fine['.$id.']", "id": "fine_'.$id.'", "value": "'.$orario_fine.'", "class": "orari min-width", "min-date": "'.$orario_inizio.'", "extra": "'.$readonly.'" ]}';
}
echo '
<td>
{[ "type": "timestamp", "name": "orario_fine['.$id.']", "id": "fine_'.$id.'", "value": "'.$orario_fine.'", "class": "orari min-width", "min-date": "'.$orario_inizio.'", "extra": "'.$readonly.'" ]}
</td>';
// ORE
@ -296,18 +276,18 @@ if (!$flag_completato) {
<script type="text/javascript">
$(document).ready(function(){
<?php
if (count($rs2)==0) {
<?php
if (count($rs2) == 0) {
echo '$(".btn-details").attr("disabled", true);';
echo '$(".btn-details").addClass("disabled");';
echo '$("#showall_dettagli").removeClass("hide");';
echo '$("#dontshowall_dettagli").addClass("hide");';
}else{
} else {
echo '$(".btn-details").attr("disabled", false);';
echo '$(".btn-details").removeClass("disabled");';
echo '$(".btn-details").removeClass("disabled");';
}
?>
$('.orari').on("dp.change", function(){
idriga = $(this).attr('id').split('_')[1];

View File

@ -158,11 +158,11 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="row">
<div class="col-md-12" id="tecnici">
<?php
<?php
if (file_exists($docroot.'/modules/interventi/custom/ajax_tecnici.php')) {
?>
<script>$('#tecnici').load('<?php echo $rootdir; ?>/modules/interventi/custom/ajax_tecnici.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');</script>
<?php
<?php
}else{
?>
<script>$('#tecnici').load('<?php echo $rootdir; ?>/modules/interventi/ajax_tecnici.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');</script>
@ -183,7 +183,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="panel-body">
<div id="articoli">
<?php
<?php
if (file_exists($docroot.'/modules/interventi/custom/ajax_articoli.php')) {
include $docroot.'/modules/interventi/custom/ajax_articoli.php';
}else{
@ -234,11 +234,11 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
<div class="panel-body">
<div class="row">
<div class="col-md-12" id="costi">
<?php
<?php
if (file_exists($docroot.'/modules/interventi/custom/ajax_costi.php')) {
?>
<script>$('#costi').load('<?php echo $rootdir; ?>/modules/interventi/custom/ajax_costi.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');</script>
<?php
<?php
}else{
?>
<script>$('#costi').load('<?php echo $rootdir; ?>/modules/interventi/ajax_costi.php?id_module=<?php echo $id_module; ?>&id_record=<?php echo $id_record; ?>');</script>
@ -251,7 +251,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
</div>
</form>
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module; ?>", "id_record": "<?php echo $id_record; ?>", <?php echo ($records[0]['flag_completato']) ? '"readonly":"true"' : '"readonly":"false"'; ?> )}
{( "name": "filelist_and_upload", "id_module": "<?php echo $id_module; ?>", "id_record": "<?php echo $id_record; ?>", <?php echo ($records[0]['flag_completato']) ? '"readonly": "true"' : '"readonly":"false"'; ?> )}
<!-- EVENTUALE FIRMA GIA' EFFETTUATA -->
<div class="text-center">

View File

@ -1,13 +1,10 @@
<?php
$rs = $dbo->fetchArray('SELECT *,
$r = $dbo->fetchOne('SELECT *,
(SELECT MAX(orario_fine) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data_fine,
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=in_interventi.idanagrafica) AS email
FROM in_interventi WHERE id='.prepare($id_record));
// Risultato effettivo
$r = $rs[0];
// Variabili da sostituire
return [
'email' => $r['email'],

View File

@ -1,12 +1,9 @@
<?php
$rs = $dbo->fetchArray('SELECT *,
$r = $dbo->fetchOne('SELECT *,
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=or_ordini.idanagrafica) AS email
FROM or_ordini WHERE id='.prepare($id_record));
// Risultato effettivo
$r = $rs[0];
// Variabili da sostituire
return [
'email' => $r['email'],

View File

@ -1,12 +1,9 @@
<?php
$rs = $dbo->fetchArray('SELECT *,
$r = $dbo->fetchOne('SELECT *,
(SELECT email FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=co_preventivi.idanagrafica) AS email
FROM co_preventivi WHERE id='.prepare($id_record));
// Risultato effettivo
$r = $rs[0];
// Variabili da sostituire
return [
'email' => $r['email'],

View File

@ -131,7 +131,7 @@ class AJAX
$results = self::completeResults($query, $where, $filter, $search_fields, $custom);
}
return $results;
return isset($results) ? $results : null;
}
protected static function getSelectInfo()

View File

@ -18,10 +18,11 @@ class App
'app.min.css',
'style.min.css',
'themes.min.css',
[
'href' => 'print.min.css',
'media' => 'print',
],
],
// Print CSS
'print' => [
'print.min.css',
],
// JS
@ -155,49 +156,39 @@ class App
// Assets aggiuntivi
$config = self::getConfig();
$css = array_unique(array_merge(self::$assets['css'], $config['assets']['css']));
$js = array_unique(array_merge(self::$assets['js'], $config['assets']['js']));
// Impostazione dei percorsi
$paths = self::getPaths();
$lang = Translator::getInstance()->getCurrentLocale();
foreach ($css as $key => $value) {
if (is_array($value)) {
$path = $value['href'];
} else {
$path = $value;
// Sezioni: nome - percorso
$sections = [
'css' => 'css',
'print' => 'css',
'js' => 'js',
];
$assets = [];
foreach ($sections as $section => $dir) {
$result = array_unique(array_merge(self::$assets[$section], $config['assets'][$section]));
foreach ($result as $key => $element) {
$element = $paths[$dir].'/'.$element;
$element = str_replace('|lang|', $lang, $element);
$result[$key] = $element;
}
$path = $paths['css'].'/'.$path;
$path = str_replace('|lang|', $lang, $path);
if (is_array($value)) {
$value['href'] = $path;
} else {
$value = $path;
}
$css[$key] = $value;
}
foreach ($js as $key => $value) {
$value = $paths['js'].'/'.$value;
$value = str_replace('|lang|', $lang, $value);
$js[$key] = $value;
$assets[$section] = $result;
}
// JS aggiuntivi per gli utenti connessi
if (Auth::check()) {
$js[] = ROOTDIR.'/lib/functions.js';
$js[] = ROOTDIR.'/lib/init.js';
$assets['js'][] = ROOTDIR.'/lib/functions.js';
$assets['js'][] = ROOTDIR.'/lib/init.js';
}
return [
'css' => $css,
'js' => $js,
];
return $assets;
}
/**

View File

@ -286,8 +286,28 @@ class Database extends Util\Singleton
*/
public function fetchRow($query)
{
return $this->fetchOne($query);
}
/**
* Restituisce il primo elemento della selezione, strutturato in base ai nomi degli attributi.
* Attenzione: aggiunge il LIMIT relativo a fine della query.
*
* @since 2.4
*
* @param string $query Query da eseguire
*
* @return array
*/
public function fetchOne($query)
{
if (!str_contains($query, 'LIMIT')) {
$query .= ' LIMIT 1';
}
$result = $this->fetchArray($query);
if (is_array($result)) {
if (isset($result[0])) {
return $result[0];
}
@ -390,7 +410,7 @@ class Database extends Util\Singleton
throw new UnexpectedValueException();
}
if (!is_array($array[0])) {
if (!isset($array[0]) || !is_array($array[0])) {
$array = [$array];
}

View File

@ -204,7 +204,7 @@ class HTMLBuilder
unset($json[$key]);
}
// Sostituzione delle variabili $nome$ col relativo valore da database
elseif (preg_match_all('/\$([a-z0-9\_]+)\$/i', $json[$key], $m)) {
elseif (is_string($json[$key]) && preg_match_all('/\$([a-z0-9\_]+)\$/i', $json[$key], $m)) {
for ($i = 0; $i < count($m[0]); ++$i) {
$record = isset($records[0][$m[1][$i]]) ? $records[0][$m[1][$i]] : '';
$json[$key] = str_replace($m[0][$i], prepareToField($record), $json[$key]);

View File

@ -48,7 +48,7 @@ class ChoicesHandler implements HandlerInterface
// Generazione del codice HTML
// "+ this.checked" rende il valore booleano un numero
$result .= '
$result = '
<div class="input-group">
<span class="input-group-addon">
<input |attr| onchange="$(this).parent().find(\'[type=hidden]\').val( + this.checked)">

View File

@ -18,7 +18,7 @@ class DateHandler implements HandlerInterface
'min-date',
];
foreach ($detect as $attr) {
if ($values[$attr] == '-now-') {
if (isset($values[$attr]) && $values[$attr] == '-now-') {
$values[$attr] = date(\Intl\Formatter::getStandardFormats()['timestamp']);
}
}

View File

@ -46,8 +46,13 @@ class SelectHandler implements HandlerInterface
<option></option>';
}
// Gestione del select dal formato JSON completo, convertito in array
if (is_array($values['values'])) {
$result .= $this->selectArray($values['values'], $values['value']);
}
// Gestione del select da query specifica (se il campo "values" è impostato a "query=SQL")
if (preg_match_all('/^query=(.+?)$/', $values['values'], $matches)) {
elseif (preg_match_all('/^query=(.+?)$/', $values['values'], $matches)) {
$result .= $this->selectQuery($matches[1][0], $values['value']);
}
@ -55,11 +60,6 @@ class SelectHandler implements HandlerInterface
elseif (preg_match_all('/^list=(.+?)$/', $values['values'], $matches)) {
$result .= $this->selectList(json_decode('{'.$matches[1][0].'}', true), $values);
}
// Gestione del select dal formato JSON completo, convertito in array
elseif (is_array($values['values'])) {
$result .= $this->selectArray($values['values'], $values['value']);
}
}
// Impostazione del placeholder
@ -155,6 +155,8 @@ class SelectHandler implements HandlerInterface
*/
protected function selectArray($array, $values)
{
$result = '';
$prev = '';
foreach ($array as $element) {
if (!empty($element['optgroup'])) {

View File

@ -9,6 +9,8 @@ class ButtonManager implements ManagerInterface
{
public function manage($options)
{
$options['parameters'] = isset($options['parameters']) ? $options['parameters'] : null;
$result = '';
if (isset($options['id'])) {
@ -111,6 +113,7 @@ class ButtonManager implements ManagerInterface
'id_module' => $options['id_module'],
'id_record' => $options['id_record'],
'class' => $options['class'],
'parameters' => $options['parameters'],
]);
unset($list[$main]);
@ -131,6 +134,7 @@ class ButtonManager implements ManagerInterface
'id_module' => $options['id_module'],
'id_record' => $options['id_record'],
'class' => false,
'parameters' => $options['parameters'],
]).'</li>';
}
@ -144,6 +148,7 @@ class ButtonManager implements ManagerInterface
'id_module' => $options['id_module'],
'id_record' => $options['id_record'],
'class' => $options['class'],
'parameters' => $options['parameters'],
]);
} else {
$result = ' ';

View File

@ -9,27 +9,31 @@ namespace HTMLBuilder\Manager;
*/
class FileManager implements ManagerInterface
{
/**
* Gestione "filelist_and_upload".
/**
* Gestione "filelist_and_upload".
* Esempio: {( "name": "filelist_and_upload", "id_module": "2", "id_record": "1", "readonly": "false", "ajax": "true" )}.
*
* @param array $options
*
* @return string
*/
public function manage($options)
{
$options['readonly'] = ($options['readonly']=='true') ? true : false;
$options['readonly'] = !empty($options['readonly']) ? true : false;
$options['ajax'] = isset($options['ajax']) ? $options['ajax'] : false;
$options['showpanel'] = isset($options['showpanel']) ? $options['showpanel'] : true;
$options['showpanel'] = isset($options['showpanel']) ? $options['showpanel'] : true;
$options['label'] = isset($options['label']) ? $options['label'] : tr('Nuovo allegato').':';
// Riferimento ad un plugin
$plugin = null;
if (!empty($options['id_plugin'])) {
$plugin = '_'.$options['id_plugin'];
}
$dbo = \Database::getConnection();
$result .= '
<div id="attachments_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').'" >
$result = '
<div id="attachments_'.$options['id_record'].$plugin.'" >
<a name="attachments_'.rand().'"></a>';
if (!empty($options['showpanel'])) {
@ -65,43 +69,40 @@ $result .= '
</td>
<td>'.\Translator::timestampToLocale($r['created_at']).'</td>
<td class="text-center">
<a class="btn btn-sm btn-primary" href="'.ROOTDIR.'/actions.php?id_module='.$options['id_module'].'&op=download_file&id='.$r['id'].'&filename='.$r['filename'].'" target="_blank">
<i class="fa fa-download"></i>
</a>';
//Anteprime supportate dal browser
$extension = strtolower(end((explode('.', $r['original']))));
$supported_extensions = ['pdf','jpg','png','gif','jpeg','bmp'];
if ( in_array($extension, $supported_extensions)){
$result .= "<div class='hide' id='view-".$r['id']."' >";
if ($extension=='pdf'){
$result .= "
<iframe src=\"".ROOTDIR.'/files/'.\Modules::get($options['id_module'])['directory'].'/'.$r['filename']."\" frameborder=\"0\" scrolling=\"no\" width=\"100%\" height=\"550\"></iframe>";
}else{
$result .= "
<img src=\"".ROOTDIR.'/files/'.\Modules::get($options['id_module'])['directory'].'/'.$r['filename']."\" width=\"100%\" ></img>";
}
$result .= "</div>";
$result .= " <button class=\"btn btn-sm btn-info\" data-target=\"#bs-popup\" type=\"button\" data-title=\"".htmlentities($r['nome'], ENT_QUOTES, "UTF-8")." <small><em>(".$r['filename'].")</em></small>\" data-href=\"#view-".$r['id']."\" ><i class='fa fa-eye'></i></button>";
}else{
$result .= " <button class=\"btn btn-sm btn-default\" title=\"".tr('Anteprima file non disponibile').".\" onclick=\"alert('".tr('Anteprima file di tipo "'.$extension.'" non supportata.')."');\" ><i class='fa fa-eye'></i></button>\n";
}
if (!$options['readonly']){
$result .= '
//Anteprime supportate dal browser
$extension = strtolower(end((explode('.', $r['original']))));
$supported_extensions = ['pdf', 'jpg', 'png', 'gif', 'jpeg', 'bmp'];
if (in_array($extension, $supported_extensions)) {
$result .= "<div class='hide' id='view-".$r['id']."' >";
if ($extension == 'pdf') {
$result .= '
<iframe src="'.ROOTDIR.'/files/'.\Modules::get($options['id_module'])['directory'].'/'.$r['filename'].'" frameborder="0" scrolling="no" width="100%" height="550"></iframe>';
} else {
$result .= '
<img src="'.ROOTDIR.'/files/'.\Modules::get($options['id_module'])['directory'].'/'.$r['filename'].'" width="100%" ></img>';
}
$result .= '</div>';
$result .= ' <button class="btn btn-sm btn-info" data-target="#bs-popup" type="button" data-title="'.htmlentities($r['nome'], ENT_QUOTES, 'UTF-8').' <small><em>('.$r['filename'].')</em></small>" data-href="#view-'.$r['id']."\" ><i class='fa fa-eye'></i></button>";
} else {
$result .= ' <button class="btn btn-sm btn-default" title="'.tr('Anteprima file non disponibile').".\" onclick=\"alert('".tr('Anteprima file di tipo "'.$extension.'" non supportata.')."');\" ><i class='fa fa-eye'></i></button>\n";
}
if (!$options['readonly']) {
$result .= '
<a class="btn btn-sm btn-danger ask" data-backto="record-edit" data-msg="'.tr('Vuoi eliminare questo file?').'" data-op="unlink_file" data-id="'.$r['id'].'" data-filename="'.$r['filename'].'">
<i class="fa fa-trash"></i>
</a>';
}
$result .= '
}
$result .= '
</td>
</tr>';
}
@ -110,63 +111,69 @@ $result .= '
</table>
<div class="clearfix"></div>
<br>';
}else{
//in caso di readonly, se non è stato caricato nessun allegato mostro almeno box informativo
if ($options['readonly']){
$result .= '
} else {
//in caso di readonly, se non è stato caricato nessun allegato mostro almeno box informativo
if ($options['readonly']) {
$result .= '
<div class="alert alert-info" style="margin-bottom:0px;" >
<i class="fa fa-info-circle"></i>
'.tr('Nessun allegato è stato caricato', []).'.
</div>';
}
}
}
}
if (!$options['readonly']){
// Form per l'upload di un nuovo file
$result .= '
if (!$options['readonly']) {
// Form per l'upload di un nuovo file
$result .= '
<b>'.$options['label'].'</b>
<div class="row">
<div class="col-lg-4">
{[ "type": "text", "placeholder": "'.tr('Nome').'", "name": "nome_allegato", "id": "nome_allegato_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').'" ]}
{[ "type": "text", "placeholder": "'.tr('Nome').'", "name": "nome_allegato", "id": "nome_allegato_'.$options['id_record'].$plugin.'" ]}
</div>
<div class="col-lg-6">
{[ "type": "file", "placeholder": "'.tr('File').'", "name": "blob", "id": "blob_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').'", "required": 0 ]}
{[ "type": "file", "placeholder": "'.tr('File').'", "name": "blob", "id": "blob_'.$options['id_record'].$plugin.'", "required": 0 ]}
</div>';
$result .= '
$result .= '
<div class="col-lg-2 text-right">
<button type="button" class="btn btn-success" onclick="saveFile_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').' ( $(this) );">
<button type="button" class="btn btn-success" onclick="saveFile_'.$options['id_record'].$plugin.' ( $(this) );">
<i class="fa fa-upload"></i> '.tr('Carica').'
</button>
</div>';
$result .= '
$result .= '
</div>';
}
}
$result .= '
<script>
function saveFile_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').' (btn){
if(!$("#blob_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').'").val()){
function saveFile_'.$options['id_record'].$plugin.' (btn){
if(!$("#blob_'.$options['id_record'].$plugin.'").val()){
swal("'.addslashes(tr('Attenzione!')).'", "'.addslashes(tr('Devi selezionare un file con il tasto "Sfoglia"')).'...", "warning");
return false;
}
var file_data = $("#blob_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').'").prop("files")[0];
var file_data = $("#blob_'.$options['id_record'].$plugin.'").prop("files")[0];
var form_data = new FormData();
form_data.append("blob", file_data);
form_data.append("nome_allegato", $("input[id=nome_allegato_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').']").val());
form_data.append("nome_allegato", $("input[id=nome_allegato_'.$options['id_record'].$plugin.']").val());
form_data.append("op","link_file");
form_data.append("id_record","'.$options['id_record'].'");
form_data.append("id_module", "'.$options['id_module'].'");
form_data.append("id_plugin","'.$options['id_plugin'].'");
form_data.append("id_module", "'.$options['id_module'].'");';
if (!empty($options['id_plugin'])) {
$result .= '
form_data.append("id_plugin","'.$options['id_plugin'].'");';
}
$result .= '
prev_html = btn.html();
btn.html("<i class=\"fa fa-spinner fa-pulse fa-fw\"></i>'.tr("Attendere...").'");
btn.html("<i class=\"fa fa-spinner fa-pulse fa-fw\"></i>'.tr('Attendere...').'");
btn.prop("disabled", true);
$.ajax({
@ -178,17 +185,17 @@ $result .= '
dataType : "html",
data: form_data,
success: function(data) {
btn.html(prev_html);
btn.prop("disabled", false);';
if (($options['ajax'])) {
$result .= '$("#attachments_'.$options['id_record'].((!empty($options['id_plugin'])) ? '_'.$options['id_plugin'] : '').'").load( globals.rootdir + "/ajax.php?op=list_attachments&id_module='.$options['id_module'].'&id_record='.$options['id_record'].((!empty($options['id_plugin'])) ? '&id_plugin='.$options['id_plugin'].'#tab_'.$options['id_plugin'] : '').'" );';
}else{
$result .= 'location.href = globals.rootdir + "/editor.php?id_module='.$options['id_module'].'&id_record='.$options['id_record'].((!empty($options['id_plugin'])) ? '#tab_'.$options['id_plugin'] : '').'";';
}
$result .= '},
if ($options['ajax']) {
$result .= '$("#attachments_'.$options['id_record'].$plugin.'").load( globals.rootdir + "/ajax.php?op=list_attachments&id_module='.$options['id_module'].'&id_record='.$options['id_record'].((!empty($options['id_plugin'])) ? '&id_plugin='.$options['id_plugin'].'#tab_'.$options['id_plugin'] : '').'" );';
} else {
$result .= 'location.href = globals.rootdir + "/editor.php?id_module='.$options['id_module'].'&id_record='.$options['id_record'].((!empty($options['id_plugin'])) ? '#tab_'.$options['id_plugin'] : '').'";';
}
$result .= '},
error: function(data) {
alert(data);
}
@ -205,4 +212,4 @@ $result .= '
return $result;
}
}
}

View File

@ -81,12 +81,13 @@ class WidgetManager implements ManagerInterface
$value = null;
if (!empty($query)) {
$value = $database->fetchArray($query)[0]['dato'];
if (!preg_match('/\\d/', $value))
if (!preg_match('/\\d/', $value)) {
$value = '-';
}
}
// Generazione del codice HTML
$result .= '
$result = '
<button type="button" class="close" onclick="if(confirm(\'Disabilitare questo widget?\')) { $.post( \''.ROOTDIR.'/modules/aggiornamenti/actions.php?id_module='.$widget['id_module'].'\', { op: \'disable_widget\', id: \''.$widget['id'].'\' }, function(response){ location.reload(); }); };" >
<span aria-hidden="true">&times;</span><span class="sr-only">'.tr('Chiudi').'</span>
</button>';

View File

@ -12,8 +12,8 @@ class HTMLWrapper implements WrapperInterface
$result = '';
// Valori particolari
$values['icon-before'] = $this->parser($values, $values['icon-before']);
$values['icon-after'] = $this->parser($values, $values['icon-after']);
$values['icon-before'] = isset($values['icon-before']) ? $this->parser($values, $values['icon-before']) : null;
$values['icon-after'] = isset($values['icon-after']) ? $this->parser($values, $values['icon-after']) : null;
// Generazione dell'etichetta
if (!empty($values['label'])) {
@ -100,17 +100,15 @@ class HTMLWrapper implements WrapperInterface
$id_module = $pieces[1];
$extra = empty($pieces[2]) ? '' : '&'.$pieces[2];
$classes = empty($pieces[3]) ? '' : ' '.$pieces[3];
$extras = empty($pieces[4]) ? '' : ' '.$pieces[4];
$get = !empty($pieces[2]) ? '&'.$pieces[2] : null;
$classes = !empty($pieces[3]) ? ' '.$pieces[3] : null;
$extras = !empty($pieces[4]) ? ' '.$pieces[4] : null;
$module = \Modules::get($id_module);
if (in_array($module['permessi'], ['r', 'rw'])) {
$result = '
<button '.$extras.' data-href="'.ROOTDIR.'/add.php?id_module='.$id_module.$extra.'&select='.$values['id'].'&ajax=yes" data-target="#bs-popup2" data-toggle="modal" data-title="'.tr('Aggiungi').'" type="button" class="btn'.$classes.'">
<button '.$extras.' data-href="'.ROOTDIR.'/add.php?id_module='.$id_module.$get.'&select='.$values['id'].'&ajax=yes" data-target="#bs-popup2" data-toggle="modal" data-title="'.tr('Aggiungi').'" type="button" class="btn'.$classes.'">
<i class="fa fa-plus"></i>
</button>';
}
@ -124,7 +122,7 @@ class HTMLWrapper implements WrapperInterface
$pieces = explode('|', $string);
$type = $pieces[1];
$extra = $pieces[3];
$extra = !empty($pieces[3]) ? $pieces[3] : null;
if ($type == 'untprc') {
$choices = [

View File

@ -54,9 +54,7 @@ class Import
*/
public static function get($module)
{
if (!is_numeric($module) && !empty(self::getModules()[$module])) {
$module = self::getModules()[$module];
}
$module = Modules::get($module)['id'];
return self::getImports()[$module];
}

View File

@ -144,6 +144,7 @@ class Formatter
*/
public function parseNumber($value)
{
$sign = null;
if ($value[0] == '+' || $value[0] == '-') {
$sign = $value[0];
$value = substr($value, 1);

View File

@ -12,6 +12,7 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
/** @var array Elenco dei template email disponibili */
protected static $templates = [];
protected static $references = [];
/** @var array Elenco dei template email per modulo */
protected static $modules = [];
@ -80,18 +81,20 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
$templates = [];
// Inizializzazione dei riferimenti
foreach (Modules::getModules() as $module) {
self::$modules[$module['id']] = [];
}
foreach ($results as $result) {
$templates[$result['id']] = $result;
$templates[$result['name']] = $result['id'];
if (!isset(self::$modules[$result['id_module']])) {
self::$modules[$result['id_module']] = [];
}
$references[$result['name']] = $result['id'];
self::$modules[$result['id_module']][] = $result['id'];
}
self::$templates = $templates;
self::$references = $references;
}
return self::$templates;
@ -106,8 +109,8 @@ class Mail extends PHPMailer\PHPMailer\PHPMailer
*/
public static function getTemplate($template)
{
if (!is_numeric($template) && !empty(self::getTemplates()[$template])) {
$template = self::getTemplates()[$template];
if (!is_numeric($template) && !empty(self::$references[$template])) {
$template = self::$references[$template];
}
return self::getTemplates()[$template];

View File

@ -14,6 +14,7 @@ class Modules
/** @var array Elenco dei moduli disponibili */
protected static $modules = [];
protected static $references = [];
/** @var array Elenco delle condizioni aggiuntive disponibili */
protected static $additionals = [];
/** @var array Elenco dei segmenti disponibili */
@ -61,11 +62,12 @@ class Modules
unset($result['idmodule']);
$modules[$result['id']] = $result;
$modules[$result['name']] = $result['id'];
$references[$result['name']] = $result['id'];
}
}
self::$modules = $modules;
self::$references = $references;
}
return self::$modules;
@ -80,6 +82,7 @@ class Modules
{
// Individuazione dei moduli con permesso di accesso
$modules = self::getModules();
foreach ($modules as $key => $module) {
if ($module['permessi'] == '-') {
unset($modules[$key]);
@ -98,8 +101,8 @@ class Modules
*/
public static function get($module)
{
if (!is_numeric($module) && !empty(self::getModules()[$module])) {
$module = self::getModules()[$module];
if (!is_numeric($module) && !empty(self::$references[$module])) {
$module = self::$references[$module];
}
return self::getModules()[$module];
@ -129,7 +132,7 @@ class Modules
$module = self::get($module);
$user = Auth::user();
if (!isset(self::$additionals[$module])) {
if (!isset(self::$additionals[$module['id']])) {
$database = Database::getConnection();
$additionals['WHR'] = [];
@ -337,7 +340,7 @@ class Modules
$options = ($element['options2'] != '') ? $element['options2'] : $element['options'];
$link = ($options != '' && $options != 'menu') ? ROOTDIR.'/controller.php?id_module='.$element['id'] : 'javascript:;';
$title = $element['title'];
$target = ($element['new'] == 1) ? '_blank' : '_self';
$target = '_self'; // $target = ($element['new'] == 1) ? '_blank' : '_self';
$active = ($actual == $element['name']);
$show = (self::getPermission($element['id']) != '-' && !empty($element['enabled'])) ? true : false;

View File

@ -26,16 +26,17 @@ class Prints
$prints = [];
// Inizializzazione dei riferimenti
foreach (Modules::getModules() as $module) {
self::$modules[$module['id']] = [];
}
foreach ($results as $result) {
$result['full_directory'] = DOCROOT.'/templates/'.$result['directory'];
$prints[$result['id']] = $result;
$prints[$result['name']] = $result['id'];
if (!isset(self::$modules[$result['id_module']])) {
self::$modules[$result['id_module']] = [];
}
self::$modules[$result['id_module']][] = $result['id'];
}