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 .= '
+
+
+
+
';
+
+ 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']);