diff --git a/README.md b/README.md index eae78e63a..7a136b179 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 +### 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. @@ -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. 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/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/psalm.xml b/psalm.xml new file mode 100644 index 000000000..7c0333df3 --- /dev/null +++ b/psalm.xml @@ -0,0 +1,15 @@ + + + + + + + + + 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