From 6d797329a1cedfe25cb760a6848c1055746275cf Mon Sep 17 00:00:00 2001 From: "kilian (dks-laptop)" Date: Sun, 8 Mar 2020 21:29:58 +0100 Subject: [PATCH] v202003 --- backoffice/api/lib/sendemail.pm | 112 ++++++------------ .../tmpl/skeleton/login/forgotpassword.tt | 2 +- dev/sourcefiles.local.txt | 9 +- dev/sourcefiles.remote.txt | 29 +---- 4 files changed, 46 insertions(+), 106 deletions(-) diff --git a/backoffice/api/lib/sendemail.pm b/backoffice/api/lib/sendemail.pm index 24159e9a..08069d9b 100644 --- a/backoffice/api/lib/sendemail.pm +++ b/backoffice/api/lib/sendemail.pm @@ -5,8 +5,11 @@ use lib ('./lib/perl5'); use lib ('./lib'); use lib ('./'); use Data::Dumper; +use Template; +use CGI; use File::Basename qw/dirname basename/; use dksdb; + use dksconfig qw($sitecfg); sub new { @@ -17,90 +20,51 @@ sub new { $self->{user} = $sitecfg->{mail}->{user}; $self->{password} = $sitecfg->{mail}->{password}; $self->{from} = $sitecfg->{mail}->{from}; + $self->{templates} = $sitecfg->{mail}->{templates}; return $self; } -sub sendemail(){ +sub gentemplate(){ my $self = shift; my $template = shift; my $iduser = shift; - my $sendto = shift; - my $data = shift; - my $attach = shift; - my $body = ""; - my $subject = ""; - my $maildata = (); - my $db = dksdb->new(); - my $send = -1; - my $tmpl = $db->dbquerysorted("select *,ml.mailtemplate from mailtemplates mt join maillayouts ml on (mt.id_maillayout=ml.id) where templatename='".$template."';"); - if (keys(%{$tmpl}) > 0){ - $tmpl = $tmpl->{0}; - } - my $datasql = $tmpl->{'emaildatasql'}; - $data->{id} = $iduser; - foreach my $key (keys(%{$data})){ - my $srch = '%%'.lc($key).'%%'; - my $repl = $data->{$key}; - $datasql =~ s/$srch/$repl/g; + my $otherdata = shift; + my $vars = $sitecfg; + foreach my $tk (keys(%{$otherdata})){ + $vars->{$tk} = $otherdata->{$tk}; } - $maildata = $db->dbquerysorted($datasql); - - $body = $tmpl->{'emailtext'}; - $subject = $tmpl->{'mailsubject'}; - foreach my $key (keys(%{$maildata->{0}})){ - $data->{$key} = $maildata->{0}->{$key}; - } - foreach my $key (keys(%{$data})){ - my $srch = '%%'.lc($key).'%%'; - my $repl = $data->{$key}; - $body =~ s/$srch/$repl/g; - $subject =~ s/$srch/$repl/g; - } - my $bodytmpl = $tmpl->{mailtemplate}; - $bodytmpl =~ s/%%BODYCONTENT%%/$body/; - my $siteurl = $ENV{'REQUEST_SCHEME'}.'://'.$ENV{"HTTP_HOST"}; - $bodytmpl =~ s/%%siteurl%%/$siteurl/g; - $bodytmpl =~ s/%%SITEURL%%/$siteurl/g; - $bodytmpl =~ s/\r//g; - if (($bodytmpl ne "") && ($subject ne "") && ($sendto =~ /.+\@.+\..+/)){ + $vars->{bodytemplate} = $template.".tt"; + $vars->{userid} = $iduser; + $vars->{siteurl} = CGI::url({-base=>1}).dirname($vars->{basepath}); - - my $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/sendEmail'; - my $f = dirname($ENV{SCRIPT_FILENAME}).'/tmp/mailbody_'.$sendto.'.txt'; - $f =~ s/\@/_/g; - if (! -e $binsemail){ - $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/api/sendEmail'; - $f = dirname($ENV{SCRIPT_FILENAME}).'/api/tmp/mailbody_'.$sendto.'.txt'; - $f =~ s/\@/_/g; - if (! -e $binsemail){ - return 256; - } - } - - my $cmd= 'perl "'.$binsemail.'" -f '.$tmpl->{mailfrom}.' '; + print STDERR $sitecfg->{docroot}.$sitecfg->{apidatapath}.'mail'; + chdir($sitecfg->{docroot}.$sitecfg->{apidatapath}.'mail'); + my $bodyfile = dirname($ENV{SCRIPT_FILENAME}).'/tmp/'.$template.'_'.$iduser.'.mail'; + my $template = Template->new({INCLUDE_PATH => [$sitecfg->{docroot}.$sitecfg->{apidatapath}.'mail'],OUTPUT => $bodyfile}); + $template->process("mail.tt",$vars) || die "Template process failed: ", $template->error(), "\n"; + my $db = dksdb->new(); + my $usermail = $db->dbquerysorted("select username from public.users where id='".$iduser."';"); + + my $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/sendEmail'; + if (! -e $binsemail){ + return 256; + } + my $cmd= 'perl "'.$binsemail.'" -f '.$self->{mailfrom}.' '; $cmd .= ' -s "'.$self->{server}.':'.$self->{port}.'" -xu "'.$self->{user}.'" -xp "'.$self->{password}.'" -q '; $cmd .= '-o tls=auto '; - $cmd .= '-t "'.$sendto.'" '; - $cmd .= '-u "'.$subject.'" '; + $cmd .= '-t "'.$$usermail->{0}->{username}.'" '; + $cmd .= '-u "'.$self->{templates}->{$template}.'" '; $cmd .= '-o message-content-type=html '; $cmd .= '-o message-charset=ISO-8859-1 '; - $cmd .= '-o message-file='.$f.' '; - open(EML,">".$f); - print EML $bodytmpl; - close(EML); - # $cmd .= '-m "'.$bodytmpl.'" '; - if ($attach != undef){ - $cmd .= " -a"; + $cmd .= '-o message-file='.$bodyfile.' '; + # if ($attach != undef){ + # $cmd .= " -a"; - foreach my $a (@{$attach}){ - $cmd .= " ".$a." "; - } - } - $send = system($cmd); - - unlink($f); - } - return $send; -} - -1; \ No newline at end of file + # foreach my $a (@{$attach}){ + # $cmd .= " ".$a." "; + # } + # } + my $send = system($cmd); + return $send; + unlink($bodyfile); +} \ No newline at end of file diff --git a/backoffice/tmpl/skeleton/login/forgotpassword.tt b/backoffice/tmpl/skeleton/login/forgotpassword.tt index bf4feb58..c6f40ba6 100644 --- a/backoffice/tmpl/skeleton/login/forgotpassword.tt +++ b/backoffice/tmpl/skeleton/login/forgotpassword.tt @@ -5,7 +5,7 @@
- +
diff --git a/dev/sourcefiles.local.txt b/dev/sourcefiles.local.txt index f570716e..8baf2896 100644 --- a/dev/sourcefiles.local.txt +++ b/dev/sourcefiles.local.txt @@ -648,7 +648,7 @@ ./backoffice/api/lib/perl5/x86_64-linux-gnu-thread-multi/Text/Soundex.pm|8345 ./backoffice/api/lib/sendemail_new.pm|4865 ./backoffice/api/lib/sendemail.pm|3038 -./backoffice/api/lib/session.pm|9650 +./backoffice/api/lib/session.pm|9683 ./backoffice/api/report.cgi|3938 ./backoffice/api/sendEmail|80246 ./backoffice/api/upload.cgi|9418 @@ -678,7 +678,7 @@ ./backoffice/data/reports/pot/pot_period.conf|259 ./backoffice/data/reports/pot/pot_period.footer.tt|1381 ./backoffice/data/reports/pot/pot_period.header.tt|1205 -./backoffice/data/reports/pot/pot_period.tt|3247 +./backoffice/data/reports/pot/pot_period.tt|4146 ./backoffice/data/schemata/defaultcompany.schema.sql|47179 ./backoffice/data/schemata/.htaccess|167 ./backoffice/.htaccess|202 @@ -832,10 +832,9 @@ ./backoffice/img/toplogo.png|31456 ./backoffice/index.cgi|5552 ./backoffice/js/admin.js|2596 -./backoffice/js/.DS_Store|6148 ./backoffice/js/formsave.js|8472 ./backoffice/js/module_global.js|4107 -./backoffice/js/request.js|2967 +./backoffice/js/request.js|3007 ./backoffice/tmpl/block/cgu.tt|9358 ./backoffice/tmpl/block/dlgaction.tt|2865 ./backoffice/tmpl/block/dlgdataload.tt|1293 @@ -1173,7 +1172,7 @@ ./backoffice/vendors/tinymce/js/tinymce/tinymce.min.js|438407 ./css/site.css|181 ./css/w3pro.css|26847 -./.gitignore|26 +./.gitignore|74 ./.htaccess|277 ./img/favicon/android-icon-144x144.png|12179 ./img/favicon/android-icon-192x192.png|16669 diff --git a/dev/sourcefiles.remote.txt b/dev/sourcefiles.remote.txt index c8260b15..d2c1c399 100644 --- a/dev/sourcefiles.remote.txt +++ b/dev/sourcefiles.remote.txt @@ -648,7 +648,7 @@ ./backoffice/api/lib/perl5/x86_64-linux-gnu-thread-multi/Text/Soundex.pm|8345 ./backoffice/api/lib/sendemail_new.pm|4865 ./backoffice/api/lib/sendemail.pm|3038 -./backoffice/api/lib/session.pm|9650 +./backoffice/api/lib/session.pm|9669 ./backoffice/api/report.cgi|3938 ./backoffice/api/sendEmail|80246 ./backoffice/api/tmp/mailbody_fiduciairetiger_gmail.com.txt|1026 @@ -836,10 +836,9 @@ ./backoffice/img/toplogo.png|31456 ./backoffice/index.cgi|5552 ./backoffice/js/admin.js|2596 -./backoffice/js/.DS_Store|6148 ./backoffice/js/formsave.js|8472 ./backoffice/js/module_global.js|4107 -./backoffice/js/request.js|2967 +./backoffice/js/request.js|3007 ./backoffice/tmpl/block/cgu.tt|9358 ./backoffice/tmpl/block/dlgaction.tt|2865 ./backoffice/tmpl/block/dlgdataload.tt|1293 @@ -855,10 +854,6 @@ ./backoffice/tmpl/module/companies/index.js|186 ./backoffice/tmpl/module/companies/index.tt|8478 ./backoffice/tmpl/module/companies/staffgroups.js|2346 -./backoffice/tmpl/module/companies/widgets/companies/companies.js|4126 -./backoffice/tmpl/module/companies/widgets/companies/frm_companies.tt|1897 -./backoffice/tmpl/module/companies/widgets/companies/tbar_companies.tt|694 -./backoffice/tmpl/module/companies/widgets/companies/tbl_companies.tt|133 ./backoffice/tmpl/module/companies/worktimes.js|3616 ./backoffice/tmpl/module/dashboard/index.js|165 ./backoffice/tmpl/module/dashboard/index.tt|1163 @@ -874,23 +869,11 @@ ./backoffice/tmpl/module/staff/index.tt|5754 ./backoffice/tmpl/module/staff/staffcontract.js|6449 ./backoffice/tmpl/module/staff/staff.js|3528 -./backoffice/tmpl/module/staff/widgets/staffcontract/dlg_staffcontract.tt|1344 -./backoffice/tmpl/module/staff/widgets/staffcontract/staffcontract.js|4239 -./backoffice/tmpl/module/staff/widgets/staffcontract/tbar_staffcontract.tt|645 -./backoffice/tmpl/module/staff/widgets/staffcontract/tbl_staffcontract.tt|276 -./backoffice/tmpl/module/staff/widgets/staff/frm_staff.tt|1848 -./backoffice/tmpl/module/staff/widgets/staff/staff.js|3787 -./backoffice/tmpl/module/staff/widgets/staff/tbar_staff.tt|672 -./backoffice/tmpl/module/staff/widgets/staff/tbl_staff.tt|125 ./backoffice/tmpl/module/timetrackers/index.js|401 ./backoffice/tmpl/module/timetrackers/index.tt|1310 ./backoffice/tmpl/module/users/index.js|126 ./backoffice/tmpl/module/users/index.tt|3043 ./backoffice/tmpl/module/users/users.js|6741 -./backoffice/tmpl/module/users/widgets/users/dlg_users.tt|1765 -./backoffice/tmpl/module/users/widgets/users/tbar_users.tt|601 -./backoffice/tmpl/module/users/widgets/users/tbl_users.tt|125 -./backoffice/tmpl/module/users/widgets/users/users.js|6218 ./backoffice/tmpl/module/workplans/index.js|169 ./backoffice/tmpl/module/workplans/index.tt|5446 ./backoffice/tmpl/module/workplans/workplans.js|6385 @@ -904,6 +887,7 @@ ./backoffice/tmpl/skeleton/login/validationcode.tt|954 ./backoffice/tmpl/skeleton/module_file.tt|84 ./backoffice/tmpl/skeleton/module.tt|2584 +./backoffice/tmp/sql.log|2224 ./backoffice/vendors/choices/base.css|2320 ./backoffice/vendors/choices/base.min.css|1391 ./backoffice/vendors/choices/choices.css|8549 @@ -948,13 +932,6 @@ ./backoffice/vendors/flatpickr/plugins/weekSelect/weekSelect.js|3500 ./backoffice/vendors/flatpickr/themes/airbnb.css|21148 ./backoffice/vendors/flatpickr/themes/airbnb.min.css|17638 -./backoffice/vendors/flatpickr/themes/confetti.css|19048 -./backoffice/vendors/flatpickr/themes/dark.css|18875 -./backoffice/vendors/flatpickr/themes/light.css|18996 -./backoffice/vendors/flatpickr/themes/material_blue.css|19048 -./backoffice/vendors/flatpickr/themes/material_green.css|19048 -./backoffice/vendors/flatpickr/themes/material_orange.css|19048 -./backoffice/vendors/flatpickr/themes/material_red.css|19048 ./backoffice/vendors/flatpickr/types/globals.d.ts|546 ./backoffice/vendors/flatpickr/types/instance.d.ts|4386 ./backoffice/vendors/flatpickr/types/locale.d.ts|2263 -- 2.39.5