diff --git a/actions.php b/actions.php index d3f852b54..4d2d13b25 100644 --- a/actions.php +++ b/actions.php @@ -72,15 +72,15 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') { } elseif (post('op') == 'send-email') { $id_template = post('template'); - // Informazioni di log - Filter::set('get', 'id_email', $id_template); - // Inizializzazione $mail = new Notifications\EmailNotification(); $mail->setTemplate($id_template, $id_record); // Destinatari $receivers = post('destinatari'); + $receivers = array_filter($receivers, function ($value) { + return !empty($value); + }); $types = post('tipo_destinatari'); foreach ($receivers as $key => $receiver) { $mail->addReceiver($receiver, $types[$key]); @@ -120,6 +120,14 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') { try { $mail->send(true); // Il valore true impone la gestione degli errori tramite eccezioni + // Informazioni di log + Filter::set('get', 'id_email', $id_template); + Filter::set('get', 'operations_options', [ + 'receivers' => $receivers, + 'prints' => post('prints'), + 'attachments' => post('attachments'), + ]); + flash()->info(tr('Email inviata correttamente!')); } catch (PHPMailer\PHPMailer\Exception $e) { flash()->error(tr("Errore durante l'invio dell'email").': '.$e->errorMessage()); diff --git a/editor.php b/editor.php index 3ee37ea7c..00f4342d0 100755 --- a/editor.php +++ b/editor.php @@ -351,9 +351,6 @@ if ($read_only || !empty($block_edit)) { }); - - - diff --git a/lib/functions.php b/lib/functions.php index 861c537a5..cf5227dea 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -210,18 +210,20 @@ function translateTemplate() $id_record = filter('id_record'); $id_parent = filter('id_parent'); $id_email = filter('id_email'); + $info = filter('operations_options'); $id_module = Modules::getCurrent()['id']; $id_plugin = Plugins::getCurrent()['id']; - $template = ob_get_clean(); - $template = \HTMLBuilder\HTMLBuilder::replace($template); + $template = ob_get_clean(); $template = str_replace('$id_module$', $id_module, $template); $template = str_replace('$id_plugin$', $id_plugin, $template); $template = str_replace('$id_record$', $id_record, $template); + $template = \HTMLBuilder\HTMLBuilder::replace($template); + // Informazioni estese sulle azioni dell'utente if (Auth::check() && !empty(post('op'))) { $database = database(); @@ -233,6 +235,7 @@ function translateTemplate() 'id_email' => !empty($id_email) ? $id_email : null, 'id_utente' => Auth::user()['id'], 'op' => post('op'), + 'options' => !empty($info) ? json_encode($info) : null, ]); } diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index d37437137..c5ad1fa52 100644 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -264,7 +264,7 @@ if (!empty($google)) {
{[ "type": "select", "label": "", "name": "id_ritenuta_acconto_vendite", "values": "query=SELECT id, descrizione FROM co_ritenutaacconto ORDER BY descrizione ASC", "value": "$id_ritenuta_acconto_vendite$", "extra": "" ]}
- +
{[ "type": "select", "label": "", "name": "idlistino_vendite", "values": "query=SELECT id, nome AS descrizione FROM mg_listini ORDER BY nome ASC", "value": "$idlistino_vendite$", "extra": "" ]}
@@ -430,7 +430,7 @@ if (!empty($google)) { -{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} +{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} -{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} +{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} - - -{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} +{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} - +{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )} + -{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} +{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} diff --git a/modules/ordini/edit.php b/modules/ordini/edit.php index 78d8e038f..daea0e741 100644 --- a/modules/ordini/edit.php +++ b/modules/ordini/edit.php @@ -136,7 +136,9 @@ if ($module['name'] == 'Ordini cliente') { -{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} +{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} + +{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )} -{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} +{( "name": "filelist_and_upload", "id_module": "$id_module$", "id_record": "$id_record$" )} + +{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )} diff --git a/src/HTMLBuilder/HTMLBuilder.php b/src/HTMLBuilder/HTMLBuilder.php index c523b43ce..a09a921a5 100644 --- a/src/HTMLBuilder/HTMLBuilder.php +++ b/src/HTMLBuilder/HTMLBuilder.php @@ -79,6 +79,7 @@ class HTMLBuilder 'csrf' => Manager\CSRFManager::class, 'custom_fields' => Manager\FieldManager::class, 'widgets' => Manager\WidgetManager::class, + 'log_email' => Manager\EmailManager::class, ], 'instances' => [], ]; diff --git a/src/HTMLBuilder/Manager/EmailManager.php b/src/HTMLBuilder/Manager/EmailManager.php new file mode 100644 index 000000000..795ed41e5 --- /dev/null +++ b/src/HTMLBuilder/Manager/EmailManager.php @@ -0,0 +1,100 @@ +fetchArray('SELECT created_at, options, (SELECT name FROM zz_emails WHERE id = id_email) AS email, (SELECT username FROM zz_users WHERE id = id_utente) AS user FROM zz_operations WHERE id_record = '.prepare($options['id_record']).' AND id_module = '.prepare($options['id_module']).' AND op = "send-email" AND id_email IS NOT NULL ORDER BY created_at DESC'); + + if (empty($operations)) { + return ' '; + } + + // Codice HTML + $result .= ' +
+
+

'.tr('Email inviate: _NUM_', [ + '_NUM_' => count($operations), + ]).'

+
+ +
+
+
+
    '; + + foreach ($operations as $operation) { + $options = json_decode($operation['options'], true); + $receivers = $options['receivers']; + + $prints = []; + foreach ($options['prints'] as $print) { + $print = Prints::get($print); + + $prints[] = $print['title']; + } + + $attachments = []; + foreach ($options['attachments'] as $attachment) { + $attachment = $database->selectOne('zz_files', '*', ['id' => $attachment]); + ; + + $attachments[] = $attachment['name']; + } + + $result .= ' +
  • + '.tr('Email "_EMAIL_" inviata il _DATE_ alle _HOUR_ da _USER_', [ + '_EMAIL_' => $operation['email'], + '_DATE_' => Translator::dateToLocale($operation['created_at']), + '_HOUR_' => Translator::timeToLocale($operation['created_at']), + '_USER_' => $operation['user'], + ]).'. +
      +
    • '.tr('Destinatari').': '.implode(', ', $receivers).'.
    • '; + + if (!empty($prints)) { + $result .= ' +
    • '.tr('Stampe').': '.implode(', ', $prints).'.
    • '; + } + + if (!empty($attachments)) { + $result .= ' +
    • '.tr('Allegati').': '.implode(', ', $attachments).'.
    • '; + } + + $result .= ' +
    +
  • '; + } + + $result .= ' +
+
+
'; + + return $result; + } +} diff --git a/src/Prints.php b/src/Prints.php index 9599a6688..61eeb5378 100644 --- a/src/Prints.php +++ b/src/Prints.php @@ -126,7 +126,7 @@ class Prints $modutil = Modules::filepath($infos['id_module'], 'modutil.php'); if (!empty($modutil)) { - include $modutil; + include_once $modutil; } Permissions::addModule($infos['id_module']);