diff --git a/plugins/exportFE/src/stylesheet-1.2.1.xsl b/assets/src/xml/fe-stylesheet-1.2.1.xsl similarity index 100% rename from plugins/exportFE/src/stylesheet-1.2.1.xsl rename to assets/src/xml/fe-stylesheet-1.2.1.xsl diff --git a/config/namespaces.php b/config/namespaces.php index d6c157fb6..d8c5086db 100644 --- a/config/namespaces.php +++ b/config/namespaces.php @@ -10,6 +10,7 @@ return [ 'modules/fatture' => 'Modules\Fatture', 'modules/ordini' => 'Modules\Ordini', 'modules/preventivi' => 'Modules\Preventivi', + 'modules/contratti' => 'Modules\Contratti', 'modules/interventi' => 'Modules\Interventi', 'plugins/exportFE' => 'Plugins\ExportFE', 'plugins/importFE' => 'Plugins\ImportFE', diff --git a/core.php b/core.php index 30f6a9eac..e29f09032 100644 --- a/core.php +++ b/core.php @@ -117,7 +117,7 @@ if (App::debug()) { 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), - 'trace' => null, + 'trace' => $exception->getTraceAsString(), ]); }); } diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php index 6f485293e..1967f6b41 100644 --- a/modules/anagrafiche/src/Anagrafica.php +++ b/modules/anagrafiche/src/Anagrafica.php @@ -70,7 +70,7 @@ class Anagrafica extends Model $new_numero = $rs[0]['max_numero'] + 1; $new_numero = str_pad($new_numero, 6, '0', STR_PAD_LEFT); - $database->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare(post('ragione_sociale')).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Crediti clienti e crediti diversi'), 1, 1)"); + $database->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare($anagrafica->ragione_sociale).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Crediti clienti e crediti diversi'), 1, 1)"); $idconto = $database->lastInsertedID(); // Collegamento conto @@ -90,7 +90,7 @@ class Anagrafica extends Model $new_numero = $rs[0]['max_numero'] + 1; $new_numero = str_pad($new_numero, 6, '0', STR_PAD_LEFT); - $database->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare(post('ragione_sociale')).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Debiti fornitori e debiti diversi'), 1, 1)"); + $database->query('INSERT INTO co_pianodeiconti3(numero, descrizione, idpianodeiconti2, can_delete, can_edit) VALUES('.prepare($new_numero).', '.prepare($anagrafica->ragione_sociale).", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Debiti fornitori e debiti diversi'), 1, 1)"); $idconto = $database->lastInsertedID(); // Collegamento conto diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 89d8f0534..496e8e9f2 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -2,40 +2,24 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Anagrafica; +use Modules\Contratti\Components\Articolo; +use Modules\Contratti\Components\Riga; +use Modules\Contratti\Contratto; + switch (post('op')) { case 'add': $idanagrafica = post('idanagrafica'); $nome = post('nome'); - // Verifico se c'è già un agente collegato all'anagrafica cliente, così lo imposto già - $q = 'SELECT idagente FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica); - $rs = $dbo->fetchArray($q); - $idagente = $rs[0]['idagente']; + $anagrafica = Anagrafica::find($idanagrafica); - // Codice contratto: calcolo il successivo in base al formato specificato - $rs = $dbo->fetchArray('SELECT numero FROM co_contratti ORDER BY id DESC LIMIT 0,1'); - $numero = Util\Generator::generate(setting('Formato codice contratti'), $rs[0]['numero']); + $contratto = Contratto::build($anagrafica, $nome); + $id_record = $contratto->id; - // Uso il tipo di pagamento specificato in anagrafica se c'è, altrimenti quello di default - $rsa = $dbo->fetchArray('SELECT idpagamento_vendite AS idpagamento FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica)); - - $idpagamento = (!empty($rsa[0]['idpagamento'])) ? $rsa[0]['idpagamento'] : setting('Tipo di pagamento predefinito'); - - if (post('idanagrafica') !== null) { - $dbo->query('INSERT INTO co_contratti(idanagrafica, nome, numero, idagente, idpagamento, idstato, data_bozza) VALUES ('.prepare($idanagrafica).', '.prepare($nome).', '.prepare($numero).', '.prepare($idagente).', '.prepare($idpagamento).", (SELECT `id` FROM `co_staticontratti` WHERE `descrizione`='Bozza'), NOW())"); - $id_record = $dbo->lastInsertedID(); - - // Aggiunta associazioni costi unitari al contratto - $rsi = $dbo->fetchArray('SELECT * FROM in_tipiintervento WHERE (costo_orario!=0 OR costo_km!=0 OR costo_diritto_chiamata!=0)'); - - for ($i = 0; $i < sizeof($rsi); ++$i) { - $dbo->query('INSERT INTO co_contratti_tipiintervento(idcontratto, idtipointervento, costo_ore, costo_km, costo_dirittochiamata, costo_ore_tecnico, costo_km_tecnico, costo_dirittochiamata_tecnico) VALUES('.prepare($id_record).', '.prepare($rsi[$i]['idtipointervento']).', '.prepare($rsi[$i]['costo_orario']).', '.prepare($rsi[$i]['costo_km']).', '.prepare($rsi[$i]['costo_diritto_chiamata']).', '.prepare($rsi[$i]['costo_orario_tecnico']).', '.prepare($rsi[$i]['costo_km_tecnico']).', '.prepare($rsi[$i]['costo_diritto_chiamata_tecnico']).')'); - } - - flash()->info(tr('Aggiunto contratto numero _NUM_!', [ - '_NUM_' => $numero, - ])); - } + flash()->info(tr('Aggiunto contratto numero _NUM_!', [ + '_NUM_' => $contratto['numero'], + ])); break; diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 71ee50ce6..1b6d8ed52 100644 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -142,7 +142,7 @@ if ($record['stato'] == 'Emessa') {
- {[ "type": "text", "label": "", "help": "Obbligatorio per valorizzare CIG/CUP. È possible inserire:
  • N. determina
  • RDO
  • Ordine MEPA
"); ?>","name": "id_documento_fe", "required": 0, "value": "$id_documento_fe$", "maxlength": 20 ]} + {[ "type": "text", "label": "", "help": "Obbligatorio per valorizzare CIG/CUP. È possible inserire:
  • N. determina
  • RDO
  • Ordine MEPA
'); ?>","name": "id_documento_fe", "required": 0, "value": "$id_documento_fe$", "maxlength": 20 ]}
diff --git a/modules/contratti/row-add.php b/modules/contratti/row-add.php index ba4e6d7de..3b44b342f 100644 --- a/modules/contratti/row-add.php +++ b/modules/contratti/row-add.php @@ -32,7 +32,7 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita'); // Aggiunta sconto di default da listino per le vendite $listino = $dbo->fetchArray('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($idanagrafica)); -if( $listino[0]['prc_guadagno'] > 0 ){ +if ($listino[0]['prc_guadagno'] > 0) { $result['sconto_unitario'] = $listino[0]['prc_guadagno']; $result['tipo_sconto'] = 'PRC'; } diff --git a/modules/contratti/src/Components/Articolo.php b/modules/contratti/src/Components/Articolo.php new file mode 100644 index 000000000..718e14057 --- /dev/null +++ b/modules/contratti/src/Components/Articolo.php @@ -0,0 +1,58 @@ +contratto; + $tipo = $contratto->tipo; + + $numero = $contratto->numero_esterno ?: $contratto->numero; + $data = $contratto->data; + + $carico = ($tipo->dir == 'entrata') ? tr('Ripristino articolo da _TYPE_ _NUM_') : tr('Carico magazzino da _TYPE_ numero _NUM_'); + $scarico = ($tipo->dir == 'entrata') ? tr('Scarico magazzino per _TYPE_ numero _NUM_') : tr('Rimozione articolo da _TYPE_ _NUM_'); + + $qta = ($tipo->dir == 'uscita') ? -$qta : $qta; + $movimento = ($qta < 0) ? $carico : $scarico; + + $movimento = replace($movimento, [ + '_TYPE_' => $tipo->descrizione, + '_NUM_' => $numero, + ]); + + $this->articolo->movimenta(-$qta, $movimento, $data, false, [ + 'iddocumento' => $contratto->id, + ]); + } + + public function getDirection() + { + return $this->contratto->tipo->dir; + } +} diff --git a/modules/contratti/src/Components/Descrizione.php b/modules/contratti/src/Components/Descrizione.php new file mode 100644 index 000000000..f5e83f131 --- /dev/null +++ b/modules/contratti/src/Components/Descrizione.php @@ -0,0 +1,27 @@ +belongsTo(Contratto::class, $this->getParentID()); + } + + public function contratto() + { + return $this->parent(); + } +} diff --git a/modules/contratti/src/Components/Riga.php b/modules/contratti/src/Components/Riga.php new file mode 100644 index 000000000..b9df4a0d2 --- /dev/null +++ b/modules/contratti/src/Components/Riga.php @@ -0,0 +1,27 @@ +scontoGlobale; + + if ($model == null) { + $model = parent::build(); + + $model->setContratto($contratto); + } + + return $model; + } +} diff --git a/modules/contratti/src/Contratto.php b/modules/contratti/src/Contratto.php new file mode 100644 index 000000000..7072005a9 --- /dev/null +++ b/modules/contratti/src/Contratto.php @@ -0,0 +1,157 @@ +first(); + + $id_anagrafica = $anagrafica->id; + $id_agente = $anagrafica->idagente; + + $id_pagamento = $anagrafica->idpagamento_vendite; + if (empty($id_pagamento)) { + $id_pagamento = setting('Tipo di pagamento predefinito'); + } + + $model->anagrafica()->associate($anagrafica); + $model->stato()->associate($stato_documento); + + $model->numero = static::getNextNumero(); + + // Salvataggio delle informazioni + $model->nome = $nome; + $model->data_bozza = Carbon::now(); + + if (!empty($id_agente)) { + $model->idagente = $id_agente; + } + + if (!empty($id_pagamento)) { + $model->idpagamento = $id_pagamento; + } + + $model->save(); + + $model->fixTipiSessioni(); + + return $model; + } + + public function fixTipiSessioni() + { + $database = database(); + $database->query('DELETE FROM co_contratti_tipiintervento WHERE idcontratto = '.prepare($this->id)); + + // Aggiunta associazioni costi unitari al contratto + $tipi = TipoSessione::where('costo_orario', '<>', 0) + ->where('costo_km', '<>', 0) + ->where('costo_diritto_chiamata', '<>', 0) + ->get(); + + foreach ($tipi as $tipo) { + $database->insert('co_contratti_tipiintervento', [ + 'idcontratto' => $this->id, + 'idtipointervento' => $tipo->id, + 'costo_ore' => $tipo->costo_orario, + 'costo_km' => $tipo->costo_km, + 'costo_dirittochiamata' => $tipo->costo_diritto_chiamata, + 'costo_ore_tecnico' => $tipo->costo_orario_tecnico, + 'costo_km_tecnico' => $tipo->costo_km_tecnico, + 'costo_dirittochiamata_tecnico' => $tipo->costo_diritto_chiamata_tecnico, + ]); + } + } + + /** + * Restituisce il nome del modulo a cui l'oggetto è collegato. + * + * @return string + */ + public function getModuleAttribute() + { + return 'Contratti'; + } + + public function updateSconto() + { + // Aggiornamento sconto + aggiorna_sconto([ + 'parent' => 'co_preventivi', + 'row' => 'co_righe_preventivi', + ], [ + 'parent' => 'id', + 'row' => 'idcontratto', + ], $this->id); + } + + public function anagrafica() + { + return $this->belongsTo(Anagrafica::class, 'idanagrafica'); + } + + public function stato() + { + return $this->belongsTo(Stato::class, 'idstato'); + } + + public function articoli() + { + return $this->hasMany(Components\Articolo::class, 'idcontratto'); + } + + public function righe() + { + return $this->hasMany(Components\Riga::class, 'idcontratto'); + } + + public function descrizioni() + { + return $this->hasMany(Components\Descrizione::class, 'idcontratto'); + } + + public function scontoGlobale() + { + return $this->hasOne(Components\Sconto::class, 'idcontratto'); + } + + // Metodi statici + + /** + * Calcola il nuovo numero di contratto. + * + * @return string + */ + public static function getNextNumero() + { + $maschera = setting('Formato codice contratti'); + + $ultimo = Generator::getPreviousFrom($maschera, 'co_contratti', 'numero'); + $numero = Generator::generate($maschera, $ultimo); + + return $numero; + } +} diff --git a/modules/contratti/src/Stato.php b/modules/contratti/src/Stato.php new file mode 100644 index 000000000..68998fb54 --- /dev/null +++ b/modules/contratti/src/Stato.php @@ -0,0 +1,15 @@ +hasMany(Contratto::class, 'idstato'); + } +} diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index c8fdf9aff..33278ae23 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -31,7 +31,7 @@ switch (post('op')) { flash()->info(tr('Aggiunto ddt in _TYPE_ numero _NUM_!', [ '_TYPE_' => $dir, - '_NUM_' => $numero, + '_NUM_' => $ddt->numero, ])); break; diff --git a/modules/ddt/edit.php b/modules/ddt/edit.php index c1d4549fb..c12440076 100644 --- a/modules/ddt/edit.php +++ b/modules/ddt/edit.php @@ -116,7 +116,7 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
- {[ "type": "select", "label": "", "name": "idporto", "placeholder": "-", "help": "
  • Franco: pagamento del trasporto a carico del mittente
  • Assegnato pagamento del trasporto a carico del destinatario
  • "); ?>", "values": "query=SELECT id, descrizione FROM dt_porto ORDER BY descrizione ASC", "value": "$idporto$", "readonly": "" ]} + {[ "type": "select", "label": "", "name": "idporto", "placeholder": "-", "help": "
  • Franco: pagamento del trasporto a carico del mittente
  • Assegnato pagamento del trasporto a carico del destinatario
  • '); ?>", "values": "query=SELECT id, descrizione FROM dt_porto ORDER BY descrizione ASC", "value": "$idporto$", "readonly": "" ]}
    diff --git a/modules/ddt/row-add.php b/modules/ddt/row-add.php index 729e932b1..8ec671dbb 100644 --- a/modules/ddt/row-add.php +++ b/modules/ddt/row-add.php @@ -38,7 +38,7 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita'); // Aggiunta sconto di default da listino per le vendite $listino = $dbo->fetchArray('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_'.($dir == 'uscita' ? 'acquisti' : 'vendite').'=mg_listini.id WHERE idanagrafica='.prepare($idanagrafica)); -if( $listino[0]['prc_guadagno'] > 0 ){ +if ($listino[0]['prc_guadagno'] > 0) { $result['sconto_unitario'] = $listino[0]['prc_guadagno']; $result['tipo_sconto'] = 'PRC'; } diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 184612ad7..4405199b9 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -520,7 +520,7 @@ include $docroot.'/modules/fatture/row-list.php'; '.tr('Per allegare un documento alla fattura elettronica caricare il file specificando come categoria "Fattura Elettronica"').'.
    '; } ?> diff --git a/modules/fatture/row-add.php b/modules/fatture/row-add.php index 11cc5a471..1157cf24e 100644 --- a/modules/fatture/row-add.php +++ b/modules/fatture/row-add.php @@ -47,7 +47,7 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita'); // Aggiunta sconto di default da listino per le vendite $listino = $dbo->fetchArray('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_'.($dir == 'uscita' ? 'acquisti' : 'vendite').'=mg_listini.id WHERE idanagrafica='.prepare($idanagrafica)); -if( $listino[0]['prc_guadagno'] > 0 ){ +if ($listino[0]['prc_guadagno'] > 0) { $result['sconto_unitario'] = $listino[0]['prc_guadagno']; $result['tipo_sconto'] = 'PRC'; } diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php index 1e37e9f14..73c7bc340 100644 --- a/modules/ordini/actions.php +++ b/modules/ordini/actions.php @@ -32,7 +32,7 @@ switch (post('op')) { $id_record = $ordine->id; flash()->info(tr('Aggiunto ordine numero _NUM_!', [ - '_NUM_' => $numero, + '_NUM_' => $ordine->numero, ])); break; diff --git a/modules/ordini/row-add.php b/modules/ordini/row-add.php index f4bc2ead3..2271c8b2a 100644 --- a/modules/ordini/row-add.php +++ b/modules/ordini/row-add.php @@ -38,7 +38,7 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita'); // Aggiunta sconto di default da listino per le vendite $listino = $dbo->fetchArray('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_'.($dir == 'uscita' ? 'acquisti' : 'vendite').'=mg_listini.id WHERE idanagrafica='.prepare($idanagrafica)); -if( $listino[0]['prc_guadagno'] > 0 ){ +if ($listino[0]['prc_guadagno'] > 0) { $result['sconto_unitario'] = $listino[0]['prc_guadagno']; $result['tipo_sconto'] = 'PRC'; } diff --git a/modules/preventivi/row-add.php b/modules/preventivi/row-add.php index 6be4e597a..a685a58a0 100644 --- a/modules/preventivi/row-add.php +++ b/modules/preventivi/row-add.php @@ -32,7 +32,7 @@ $result['idiva'] = $iva[0]['idiva'] ?: setting('Iva predefinita'); // Aggiunta sconto di default da listino per le vendite $listino = $dbo->fetchArray('SELECT prc_guadagno FROM an_anagrafiche INNER JOIN mg_listini ON an_anagrafiche.idlistino_vendite=mg_listini.id WHERE idanagrafica='.prepare($idanagrafica)); -if( $listino[0]['prc_guadagno'] > 0 ){ +if ($listino[0]['prc_guadagno'] > 0) { $result['sconto_unitario'] = $listino[0]['prc_guadagno']; $result['tipo_sconto'] = 'PRC'; } diff --git a/modules/tecnici_tariffe/edit.php b/modules/tecnici_tariffe/edit.php index bb33e3334..e6840e75e 100644 --- a/modules/tecnici_tariffe/edit.php +++ b/modules/tecnici_tariffe/edit.php @@ -23,13 +23,13 @@ if (!empty($tecnici)) { '.$tecnico['ragione_sociale'].' '.tr('Attività').' - '.tr('Addebito orario').' - '.tr('Addebito km').' - '.tr('Addebito diritto ch.').' + '.tr('Addebito orario').' + '.tr('Addebito km').' + '.tr('Addebito diritto ch.').' - '.tr('Costo orario').' - '.tr('Costo km').' - '.tr('Costo diritto ch.').' + '.tr('Costo orario').' + '.tr('Costo km').' + '.tr('Costo diritto ch.').' '; diff --git a/plugins/exportFE/edit.php b/plugins/exportFE/edit.php index cc707b054..18ac02db6 100644 --- a/plugins/exportFE/edit.php +++ b/plugins/exportFE/edit.php @@ -141,17 +141,19 @@ echo ' '.tr('Scarica').' '; + $file = $generated ? Models\Upload::where('filename', $fattura_pa->getFilename())->where('id_record', $id_record)->first() : null; + echo ' - + '.tr('Visualizza').' '; - $send = Interaction::isEnabled() && $generated && $record['codice_stato_fe'] == 'GEN'; +$send = Interaction::isEnabled() && $generated && $record['codice_stato_fe'] == 'GEN'; - echo ' +echo ' diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 87effbb8b..5460c0ec3 100644 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -465,9 +465,10 @@ class FatturaElettronica if (!empty($anagrafica['provincia']) && $anagrafica->nazione->iso2 == 'IT') { $result['Provincia'] = strtoupper($anagrafica['provincia']); } - - if (!empty($anagrafica->nazione->iso2)) - $result['Nazione'] = $anagrafica->nazione->iso2; + + if (!empty($anagrafica->nazione->iso2)) { + $result['Nazione'] = $anagrafica->nazione->iso2; + } return $result; } diff --git a/plugins/exportFE/view.php b/plugins/exportFE/view.php deleted file mode 100644 index ae8922eb7..000000000 --- a/plugins/exportFE/view.php +++ /dev/null @@ -1,17 +0,0 @@ -loadXML($fattura_pa->toXML()); - -// XSL -$xsl = new DOMDocument(); -$xsl->load(__DIR__.'/src/stylesheet-1.2.1.xsl'); - -// XSLT -$xslt = new XSLTProcessor(); -$xslt->importStylesheet($xsl); - -echo $xslt->transformToXML($xml); diff --git a/src/Extensions/MessageHandler.php b/src/Extensions/MessageHandler.php index 44d0318da..0ca6ccebd 100644 --- a/src/Extensions/MessageHandler.php +++ b/src/Extensions/MessageHandler.php @@ -13,7 +13,7 @@ class MessageHandler extends AbstractProcessingHandler { protected function write(array $record) { - if (isAjaxRequest()) { + if (\Whoops\Util\Misc::isAjaxRequest()) { return; } diff --git a/src/HTMLBuilder/HTMLBuilder.php b/src/HTMLBuilder/HTMLBuilder.php index 04d900d8e..275a2e197 100644 --- a/src/HTMLBuilder/HTMLBuilder.php +++ b/src/HTMLBuilder/HTMLBuilder.php @@ -106,7 +106,18 @@ class HTMLBuilder $json = self::decode($value, 'manager'); $class = self::getManager($json['name']); - $result = !empty($class) ? $class->manage($json) : ''; + $result = ''; + try { + $result = !empty($class) ? $class->manage($json) : ''; + } catch (\Exception $exception) { + logger()->error($exception->getMessage(), [ + 'code' => $exception->getCode(), + 'message' => $exception->getMessage(), + 'file' => $exception->getFile(), + 'line' => $exception->getLine(), + 'trace' => $exception->getTraceAsString(), + ]); + } // Ricorsione if ($depth < self::$max_recursion) { @@ -121,7 +132,19 @@ class HTMLBuilder foreach ($handlers[0] as $value) { $json = self::decode($value, 'handler'); - $result = self::generate($json); + + $result = null; + try { + $result = self::generate($json); + } catch (\Exception $exception) { + logger()->error($exception->getMessage(), [ + 'code' => $exception->getCode(), + 'message' => $exception->getMessage(), + 'file' => $exception->getFile(), + 'line' => $exception->getLine(), + 'trace' => $exception->getTraceAsString(), + ]); + } // Ricorsione if ($depth < self::$max_recursion) { diff --git a/src/HTMLBuilder/Manager/FileManager.php b/src/HTMLBuilder/Manager/FileManager.php index 68227b6ef..179897476 100644 --- a/src/HTMLBuilder/Manager/FileManager.php +++ b/src/HTMLBuilder/Manager/FileManager.php @@ -2,6 +2,8 @@ namespace HTMLBuilder\Manager; +use Models\Upload; + /** * Gestione allegati. * @@ -77,13 +79,14 @@ class FileManager implements ManagerInterface '; foreach ($rs as $r) { - $extension = pathinfo($r['original'])['extension']; + $file = Upload::find($r['id']); + $result .= ' '.$r['name'].' - ('.$extension.')'.' + ('.$file->extension.')'.' '.\Translator::timestampToLocale($r['created_at']).' @@ -92,31 +95,11 @@ class FileManager implements ManagerInterface '; // Anteprime supportate dal browser - $supported_extensions = ['pdf', 'jpg', 'png', 'gif', 'jpeg', 'bmp']; - if (in_array(strtolower($extension), $supported_extensions)) { - $result .= " -
    "; - - if ($extension == 'pdf') { - $result .= ' - '; - } else { - $result .= ' - '; - } - + if ($file->hasPreview()) { $result .= ' -
    '; - - $result .= ' - '; - } elseif (strtolower($extension) == 'xml') { - $result .= ' - - - '; } else { $result .= '