From 98c5bf135d70eac8affacbabba6ae97b0c1a6a1e Mon Sep 17 00:00:00 2001 From: Matteo Date: Mon, 14 Nov 2022 16:58:00 +0100 Subject: [PATCH 1/4] Task per l'invio delle mail con procedura in cron --- modules/emails/src/EmailTask.php | 56 ++++++++++++++++++++++++++++++++ update/2_4_37.sql | 2 ++ 2 files changed, 58 insertions(+) create mode 100644 modules/emails/src/EmailTask.php diff --git a/modules/emails/src/EmailTask.php b/modules/emails/src/EmailTask.php new file mode 100644 index 000000000..0bb48e7bb --- /dev/null +++ b/modules/emails/src/EmailTask.php @@ -0,0 +1,56 @@ +. + */ + +namespace Modules\Emails; + +use Carbon\Carbon; +use Notifications\EmailNotification; +use PHPMailer\PHPMailer\Exception; +use Tasks\Manager; + +class EmailTask extends Manager +{ + + public function needsExecution() + { + $lista = database()->fetchArray("SELECT * FROM em_emails WHERE (sent_at IS NULL OR failed_at IS NOT NULL) AND attempt<".prepare(setting('Numero massimo di tentativi'))." ORDER BY created_at"); + $remaining = sizeof($lista); + + return !empty($remaining); + } + + public function execute() + { + $lista = database()->fetchArray("SELECT * FROM em_emails WHERE (sent_at IS NULL OR failed_at IS NOT NULL) AND attempt<".prepare(setting('Numero massimo di tentativi'))." ORDER BY created_at LIMIT 0,".setting('Numero email da inviare in contemporanea per account')); + + foreach ($lista as $mail) { + + $mail = Mail::find($mail['id']); + + try { + $email = EmailNotification::build($mail); + $email->send(); + } catch (Exception $e) { + echo $e; + } + } + + return $lista; + } +} \ No newline at end of file diff --git a/update/2_4_37.sql b/update/2_4_37.sql index b8cdd23a5..44f4ca790 100644 --- a/update/2_4_37.sql +++ b/update/2_4_37.sql @@ -72,3 +72,5 @@ INSERT INTO `co_tipidocumento` (`id`, `descrizione`, `dir`, `reversed`, `codice_ -- Fix vista Ddt in entrata UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`order_by` = 'CAST(IF(numero_esterno="", numero, numero_esterno) AS UNSIGNED)' WHERE `zz_modules`.`name` = 'Ddt di acquisto' AND `zz_views`.`name` = 'Numero' + +INSERT INTO `zz_tasks` (`id`, `name`, `class`, `expression`, `next_execution_at`, `last_executed_at`) VALUES (NULL, 'Invio automatico mail', 'Modules\\Emails\\EmailTask', '*/1 * * * *', NULL, NULL); \ No newline at end of file From a53373a2d83c48e04d8f57a3cebbd7ce54009ba7 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 14 Nov 2022 22:25:54 +0100 Subject: [PATCH 2/4] Aggiunta psalm per migliorare lo sviluppo --- gulpfile.js | 3 ++- psalm.xml | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 psalm.xml diff --git a/gulpfile.js b/gulpfile.js index 0809c04e5..e487e3404 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -402,7 +402,7 @@ function release(done) { archive.pipe(output); - // Individuazione dei file da aggiungere + // Individuazione dei file da aggiungere e escludere glob([ '**/*', '!checksum.json', @@ -417,6 +417,7 @@ function release(done) { 'files/temp/.gitkeep', '!logs/**', '!config.inc.php', + '!psalm.xml', '!update/structure.php', '!**/*.(lock|phar|log|zip|bak|jar|txt)', '!**/~*', diff --git a/psalm.xml b/psalm.xml new file mode 100644 index 000000000..7c0333df3 --- /dev/null +++ b/psalm.xml @@ -0,0 +1,15 @@ + + + + + + + + + From 56c69bab0853183a5083cddb7b79684982d31af8 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 14 Nov 2022 22:40:13 +0100 Subject: [PATCH 3/4] Aggiunta strumenti di debug --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eae78e63a..a6181b48a 100755 --- a/README.md +++ b/README.md @@ -43,7 +43,8 @@ La documentazione ufficiale è disponibile all'indirizzo ), evitando di utilizzare direttamente il codice della repository. Se siete inoltre interessati a supporto e assistenza professionali, li potete richiedere nella [sezione dedicata](https://www.openstamanager.com/per-le-aziende/). -### GitHub +### Come contribuire Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di GitHub, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto. @@ -141,6 +142,12 @@ yarn run develop-OSM Per ulteriori informazioni, visitare le sezioni [Assets](https://docs.openstamanager.com/docs/base/assets) e [Framework](https://docs.openstamanager.com/docs/base/framework) della documentazione. +## Strumenti di sviluppo e debug + +Consigliamo di installare [psalm](https://github.com/vimeo/psalm) e configurarlo nel proprio IDE se supportato, in modo che vengano eseguiti ulteriori controlli automatici sul codice scritto. + +E' già configurato su **composer** l'inclusione di [PHP-CS-Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer), uno strumento che permette di formattare in modo uniforme il codice scritto. Si può configurare nel proprio IDE se supportato. Il percorso dell'eseguibile è `vendor/bin/php-cs-fixer`. + ## Perché software open-source Il progetto è un software open-source perché permette agli utilizzatori di studiarne il funzionamento ed adattarlo alle proprie esigenze; inoltre, in ambito commerciale, non obbliga l'utilizzatore ad essere legato allo stesso fornitore di assistenza. From 181e5c9aacd4b9c0767eb2b3c9dcd71a020c9da9 Mon Sep 17 00:00:00 2001 From: loviuz Date: Mon, 14 Nov 2022 22:41:12 +0100 Subject: [PATCH 4/4] Fix README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a6181b48a..7a136b179 100755 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ Per vedere tutte le versioni disponibili al download, visitare la [pagina relati Nel caso utilizziate il programma per uso commerciale, si consiglia di scaricare le release disponibili nel sito ufficiale del progetto (), evitando di utilizzare direttamente il codice della repository. Se siete inoltre interessati a supporto e assistenza professionali, li potete richiedere nella [sezione dedicata](https://www.openstamanager.com/per-le-aziende/). -### Come contribuire +### Build Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di GitHub, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto.