From 028f8adcfdd7cdca01a76f47a418f35585395b8e Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sat, 28 Mar 2020 21:34:58 +0100 Subject: [PATCH 1/6] configurable license warning --- lam/lib/config.inc | 50 ++++++++++++++++++++++++++++++-- lam/tests/lib/LAMCfgMainTest.php | 21 ++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/lam/lib/config.inc b/lam/lib/config.inc index 8637d8e0..65db3327 100644 --- a/lam/lib/config.inc +++ b/lam/lib/config.inc @@ -2548,6 +2548,15 @@ class LAMCfgMain { /** PHP error reporting setting as E_ALL | E_STRICT */ const ERROR_REPORTING_ALL = 'all'; + /** send license warnings via email */ + const LICENSE_WARNING_EMAIL = 'email'; + /** display license warnings on screen */ + const LICENSE_WARNING_SCREEN = 'screen'; + /** send license warnings via email + display on screen */ + const LICENSE_WARNING_ALL = 'all'; + /** no license warning */ + const LICENSE_WARNING_NONE = 'none'; + /** Default profile */ public $default; @@ -2617,6 +2626,18 @@ class LAMCfgMain { /** license data */ private $license = ''; + /** license warning email from address */ + public $licenseEmailFrom = ''; + + /** license warning email TO addresses (comma separated) */ + public $licenseEmailTo = ''; + + /** license warning email was last sent for this expiration date */ + public $licenseEmailDateSent = ''; + + /** type of license warning (email/screen/both/none) */ + public $licenseWarningType = ''; + /** mail server (server:port) */ public $mailServer = ''; @@ -2634,7 +2655,8 @@ class LAMCfgMain { 'passwordMustNotContainUser', 'passwordMustNotContain3Chars', 'externalPwdCheckUrl', 'errorReporting', 'encryptSession', 'allowedHostsSelfService', - 'license', 'mailServer', 'mailUser', 'mailPassword' + 'license', 'licenseEmailFrom', 'licenseEmailTo', 'licenseWarningType', 'licenseEmailDateSent', + 'mailServer', 'mailUser', 'mailPassword' ); /** @@ -2783,6 +2805,18 @@ class LAMCfgMain { if (!in_array("license", $saved)) { array_push($file_array, "\n\n# License\n" . "license: " . $this->license); } + if (!in_array("licenseEmailFrom", $saved)) { + array_push($file_array, "\n" . "licenseEmailFrom: " . $this->licenseEmailFrom); + } + if (!in_array("licenseEmailTo", $saved)) { + array_push($file_array, "\n" . "licenseEmailTo: " . $this->licenseEmailTo); + } + if (!in_array("licenseEmailDateSent", $saved)) { + array_push($file_array, "\n" . "licenseEmailDateSent: " . $this->licenseEmailDateSent); + } + if (!in_array("licenseWarningType", $saved)) { + array_push($file_array, "\n" . "licenseWarningType: " . $this->licenseWarningType); + } if (!in_array("mailServer", $saved)) { array_push($file_array, "\n" . "mailServer: " . $this->mailServer); } @@ -3094,12 +3128,24 @@ class LAMCfgMain { /** * Sets the license key as multiple lines. * - * @param String $license license + * @param String[] $licenseLines license lines */ public function setLicenseLines($licenseLines) { $this->license = implode(LAMConfig::LINE_SEPARATOR, $licenseLines); } + /** + * Returns the license warning type (screen/email/both/none). + * + * @return string warning type + */ + public function getLicenseWarningType() { + if (empty($this->licenseWarningType)) { + return self::LICENSE_WARNING_SCREEN; + } + return $this->licenseWarningType; + } + } ?> diff --git a/lam/tests/lib/LAMCfgMainTest.php b/lam/tests/lib/LAMCfgMainTest.php index 827c3213..7a41aceb 100644 --- a/lam/tests/lib/LAMCfgMainTest.php +++ b/lam/tests/lib/LAMCfgMainTest.php @@ -71,4 +71,25 @@ class LAMCfgMainTest extends TestCase { $this->assertEquals('user123', $this->conf->mailUser); } + /** + * License related settings. + */ + public function testLicense() { + $this->assertEquals(LAMCfgMain::LICENSE_WARNING_SCREEN, $this->conf->getLicenseWarningType()); + $this->conf->licenseEmailTo = 'TO'; + $this->conf->licenseEmailFrom = 'FROM'; + $this->conf->licenseEmailDateSent = 'date'; + $this->conf->licenseWarningType = LAMCfgMain::LICENSE_WARNING_ALL; + $this->conf->setLicenseLines(array('123', '456')); + + $this->conf->save(); + $this->conf = new LAMCfgMain($this->file); + + $this->assertEquals('TO', $this->conf->licenseEmailTo); + $this->assertEquals('FROM', $this->conf->licenseEmailFrom); + $this->assertEquals('date', $this->conf->licenseEmailDateSent); + $this->assertEquals(LAMCfgMain::LICENSE_WARNING_ALL, $this->conf->licenseWarningType); + $this->assertEquals(array('123', '456'), $this->conf->getLicenseLines()); + } + } \ No newline at end of file From 394cbedb2a752c4f75cb0c988020ca9d75da7fc9 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sat, 28 Mar 2020 21:57:04 +0100 Subject: [PATCH 2/6] configurable license warning --- lam/help/help.inc | 6 +++++ lam/templates/config/mainmanage.php | 35 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/lam/help/help.inc b/lam/help/help.inc index 5719c896..b3cbe109 100644 --- a/lam/help/help.inc +++ b/lam/help/help.inc @@ -237,6 +237,12 @@ $helpArray = array ( "Text" => _('Password to unlock SSH key file.')), '287' => array ("Headline" => _('Licence'), "Text" => _('Please enter your licence key.')), + '288' => array ("Headline" => _('Expiration warning'), + "Text" => _('Please select how to be warned before your license expires.')), + '289' => array ("Headline" => _('From address'), + "Text" => _('This email address will be set as sender address of all mails.')), + '290' => array ("Headline" => _('TO address'), + "Text" => _('This email address will be set as TO address for the mails.')), // 300 - 399 // profile editor, file upload "301" => array ("Headline" => _("RDN identifier"), diff --git a/lam/templates/config/mainmanage.php b/lam/templates/config/mainmanage.php index 1bc22955..5562d4f7 100644 --- a/lam/templates/config/mainmanage.php +++ b/lam/templates/config/mainmanage.php @@ -106,6 +106,17 @@ if (isset($_POST['submitFormData'])) { $licenseLines = explode("\n", $_POST['license']); $licenseLines = array_map('trim', $licenseLines); $cfg->setLicenseLines($licenseLines); + $cfg->licenseWarningType = $_POST['licenseWarningType']; + $cfg->licenseEmailFrom = $_POST['licenseEmailFrom']; + $cfg->licenseEmailTo = $_POST['licenseEmailTo']; + if ((($cfg->licenseWarningType === LAMCfgMain::LICENSE_WARNING_EMAIL) || ($cfg->licenseWarningType === LAMCfgMain::LICENSE_WARNING_ALL)) + && !get_preg($cfg->licenseEmailFrom, 'email')) { + $errors[] = _('License') . ': ' . _('From address') . ' - ' . _('Please enter a valid email address!'); + } + if ((($cfg->licenseWarningType === LAMCfgMain::LICENSE_WARNING_EMAIL) || ($cfg->licenseWarningType === LAMCfgMain::LICENSE_WARNING_ALL)) + && !get_preg($cfg->licenseEmailTo, 'email')) { + $errors[] = _('License') . ': ' . _('TO address') . ' - ' . _('Please enter a valid email address!'); + } } // set session timeout $cfg->sessionTimeout = $_POST['sessionTimeout']; @@ -307,6 +318,30 @@ printHeaderContents(_("Edit general settings"), '../..'); if (isLAMProVersion()) { $row->add(new htmlSubTitle(_('Licence')), 12); $row->add(new htmlResponsiveInputTextarea('license', implode("\n", $cfg->getLicenseLines()), null, 10, _('Licence'), '287'), 12); + $warningOptions = array( + _('Screen') => LAMCfgMain::LICENSE_WARNING_SCREEN, + _('Email') => LAMCfgMain::LICENSE_WARNING_EMAIL, + _('Both') => LAMCfgMain::LICENSE_WARNING_ALL, + _('None') => LAMCfgMain::LICENSE_WARNING_NONE, + ); + $warningTypeSelect = new htmlResponsiveSelect('licenseWarningType', $warningOptions, array($cfg->getLicenseWarningType()), _('Expiration warning'), '288'); + $warningTypeSelect->setHasDescriptiveElements(true); + $warningTypeSelect->setSortElements(false); + $warningTypeSelect->setTableRowsToHide(array( + LAMCfgMain::LICENSE_WARNING_SCREEN => array('licenseEmailFrom', 'licenseEmailTo'), + LAMCfgMain::LICENSE_WARNING_NONE => array('licenseEmailFrom', 'licenseEmailTo'), + )); + $warningTypeSelect->setTableRowsToShow(array( + LAMCfgMain::LICENSE_WARNING_EMAIL => array('licenseEmailFrom', 'licenseEmailTo'), + LAMCfgMain::LICENSE_WARNING_ALL => array('licenseEmailFrom', 'licenseEmailTo'), + )); + $row->add($warningTypeSelect, 12); + $licenseFrom = new htmlResponsiveInputField(_('From address'), 'licenseEmailFrom', $cfg->licenseEmailFrom, '289'); + $licenseFrom->setRequired(true); + $row->add($licenseFrom, 12); + $licenseTo = new htmlResponsiveInputField(_('TO address'), 'licenseEmailTo', $cfg->licenseEmailTo, '290'); + $licenseTo->setRequired(true); + $row->add($licenseTo, 12); $row->add(new htmlSpacer(null, '1rem'), true); } From 0609c748ea95a6dcdedc18cf4bc10a8ce1b37f32 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Thu, 2 Apr 2020 21:02:06 +0200 Subject: [PATCH 3/6] 7.2 --- lam/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lam/VERSION b/lam/VERSION index 0f0fefae..610207b4 100644 --- a/lam/VERSION +++ b/lam/VERSION @@ -1 +1 @@ -7.1 +7.2.DEV From 365389cd0bb78afac6e7ceab46d22acd08506228 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Thu, 2 Apr 2020 21:19:23 +0200 Subject: [PATCH 4/6] show license message depending on setting --- lam/lib/config.inc | 20 ++++++++++++++++++++ lam/templates/login.php | 2 +- lam/tests/lib/LAMCfgMainTest.php | 25 +++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/lam/lib/config.inc b/lam/lib/config.inc index 65db3327..ca8c3770 100644 --- a/lam/lib/config.inc +++ b/lam/lib/config.inc @@ -3146,6 +3146,26 @@ class LAMCfgMain { return $this->licenseWarningType; } + /** + * Returns if the license warning should be shown on screen. + * + * @return bool show on screen + */ + public function showLicenseWarningOnScreen() { + $type = $this->getLicenseWarningType(); + return ($type === self::LICENSE_WARNING_ALL) || ($type === self::LICENSE_WARNING_SCREEN); + } + + /** + * Returns if the license warning should be sent via email. + * + * @return bool send via email + */ + public function sendLicenseWarningByEmail() { + $type = $this->getLicenseWarningType(); + return ($type === self::LICENSE_WARNING_ALL) || ($type === self::LICENSE_WARNING_EMAIL); + } + } ?> diff --git a/lam/templates/login.php b/lam/templates/login.php index 4ff31b6e..7106e2d9 100644 --- a/lam/templates/login.php +++ b/lam/templates/login.php @@ -452,7 +452,7 @@ function display_LoginPage($licenseValidator, $error_message) { ?>

isExpiringSoon()) { + if (isLAMProVersion() && $cfgMain->showLicenseWarningOnScreen() && $licenseValidator->isExpiringSoon()) { $licenseMessage = sprintf(_('Your licence expires on %s. You need to purchase a new licence to be able to use LAM Pro after this date.'), $licenseValidator->getLicense()->getExpirationDate()->format('Y-m-d')); StatusMessage('WARN', $licenseMessage); } diff --git a/lam/tests/lib/LAMCfgMainTest.php b/lam/tests/lib/LAMCfgMainTest.php index 7a41aceb..b17cfdb7 100644 --- a/lam/tests/lib/LAMCfgMainTest.php +++ b/lam/tests/lib/LAMCfgMainTest.php @@ -92,4 +92,29 @@ class LAMCfgMainTest extends TestCase { $this->assertEquals(array('123', '456'), $this->conf->getLicenseLines()); } + /** + * License warning type related settings. + */ + public function testLicenseWarningTypes() { + $this->conf->licenseWarningType = LAMCfgMain::LICENSE_WARNING_ALL; + + $this->assertTrue($this->conf->sendLicenseWarningByEmail()); + $this->assertTrue($this->conf->showLicenseWarningOnScreen()); + + $this->conf->licenseWarningType = LAMCfgMain::LICENSE_WARNING_EMAIL; + + $this->assertTrue($this->conf->sendLicenseWarningByEmail()); + $this->assertFalse($this->conf->showLicenseWarningOnScreen()); + + $this->conf->licenseWarningType = LAMCfgMain::LICENSE_WARNING_SCREEN; + + $this->assertFalse($this->conf->sendLicenseWarningByEmail()); + $this->assertTrue($this->conf->showLicenseWarningOnScreen()); + + $this->conf->licenseWarningType = LAMCfgMain::LICENSE_WARNING_NONE; + + $this->assertFalse($this->conf->sendLicenseWarningByEmail()); + $this->assertFalse($this->conf->showLicenseWarningOnScreen()); + } + } \ No newline at end of file From ffb8fca488ec21c5c7481538a7c4507b569cf650 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Fri, 3 Apr 2020 16:53:55 +0200 Subject: [PATCH 5/6] show license message depending on setting --- lam/HISTORY | 1 + .../manual-sources/chapter-configuration.xml | 4 ++++ .../manual-sources/images/configGeneral7.png | Bin 13623 -> 71960 bytes lam/lib/config.inc | 12 ++++++++++++ lam/templates/login.php | 16 +++++++++++++--- lam/tests/lib/LAMCfgMainTest.php | 7 +++++-- 6 files changed, 35 insertions(+), 5 deletions(-) diff --git a/lam/HISTORY b/lam/HISTORY index 5ee66f67..b71088c7 100644 --- a/lam/HISTORY +++ b/lam/HISTORY @@ -1,6 +1,7 @@ June 2020 7.2 - LAM Pro: -> EMail sending can be done via SMTP without local mail server + -> License expiration warning can be sent via email or disabled 17.03.2020 7.1 diff --git a/lam/docs/manual-sources/chapter-configuration.xml b/lam/docs/manual-sources/chapter-configuration.xml index 27481c7f..cc1ce670 100644 --- a/lam/docs/manual-sources/chapter-configuration.xml +++ b/lam/docs/manual-sources/chapter-configuration.xml @@ -60,6 +60,10 @@ When you entered the license key then the license details can be seen on LAM configuration overview page. + By default, LAM Pro will show a warning message on the login page + 3 weeks before expiration. You can disable this here and/or send out an + email instead. + diff --git a/lam/docs/manual-sources/images/configGeneral7.png b/lam/docs/manual-sources/images/configGeneral7.png index dd4e186940702124c9020398ff30a6512a7cad77..c0decd8db9603419fb14f08bead23516865f86a0 100644 GIT binary patch literal 71960 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%0DlOe`>FX}JW6Bm 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%0A{R z7Qi5&yu@aiDpc4E@05vHXhMX5`Rm4Dq9{zWzIk%ex}!j;9P1DT*M$x@@5ga&Q)Q+7 zcv6+e&H3ft)OOY}+R7^0OJD!`dN*({ES)#-tkxbc$0xy+T*JXd^QMjbZdg6?mU96~ zM@BRYE3er$B%d7MnOOA~VjRCVz4KpPX$VTd#KYtWMv(_HaYSl9t~PBaDZ7Cun9Qrmu%jHoRpZD=nu0Bz)D~9tnXrMQW8z9 z_!HtzOZ&5KJDm!qe2apjaWkl2U3<6!|Aj8VT6L@hi-@WTff7?|j&C@q?$L3McY9*jh2$cIruH}+;_WLU8i zDbbhlD=o+$YQcmPV>*hK#>bzjT$uGe3w*`DePFY>b9OZDUT9h@x&6%$*bBgwwAggD zp&iVd$E#7-K%sKeRpCG((&!!|gn`h|VEsjLQPBhz!vgKaX2{a|cF(%)d#nK9kH6^`4iD1H3w1n#;19bAE27-Ou^v!-ejg0)xyVZzEvBgrdY zd1QQ4Y=2@g`5fQ77tZqi5D+@4!XJ_YMWLS&e2D4g@7fY_uYC+L-Q*wQ%t-oajQq8f_Vmy}Gc)j0Se7G0^f5BxKr$dgl6&QYXU zU0n@8#uI+k4qzRG7(fT&XYbyXfFP*T_&IC>Dt76V_fQZZ4t2tg1!PdACC2{hmDVx+ zU|VagXZ~EP!D#bhAHra|(tc~2k47m898<|P9Yj{l-5`BjVYB|Rvwg5&ASaJV2-Gk{$hr6eIK`;+u|cIpqn@dY8F$V)$p z_6~mn-nFfzS48PL*cHq1Qn;ZT4R0jATP=!9)#G_={*mD;LVE@ajuqO2ez`ZxZrK}y zr&2N(SbM#Wh4>!-4@kfAqa(QQ9XipQ9cC}q)?zT})GQV%sp&a)I;#q^prOV4de7Lo zaFL&BUEcfj_s7wxA52xBhbL?m#?!+MBudHsP15XKA(wyxbxHTa{JiQasIj+VjS2P3 zFBoguSbnF`0C}pxX^|Zf>)|yT0eCr1VvI|Ddh?e8XYcVx#shqQIN-nmZ#QQ12x#tGaE-p& zYyXELfUDi^`X5C=XCR5S#%f+%T>RwpRDY3)nHi7Eaqr2H^cz6jR6BSCk&hq6vPS?E z#yhw?K2GHG;!Sn{;du z{q4~lC1oYc#j;a-=US2b8jBF>yRq$2SOJTfBRfD~L;V^XvmYpkeI6LdZna>5Qm_mu z7Ph;Xb0G|`v74O$aRu!yM0#y;prIyVJzGY$w^e4P+0Z=Jk;>qCx0lE~y&w4H3pm}t z(BQrS4`uy}7y2QD_rKS~(57hyk~qkiXoASUA@6$Wm27msZo4GnPKb(Q5S%v7TNzP}8d|on2f(Bs&}p=>lr3lil`S1y(xYm$YEd=46Uod42uN z6`}#CvY)cvpP<4FH8@Uq78b=qfqb|qVtYSXRk+x3+2RpK&Y2!@V`DMZZ(?<*p3|KL003VM~0DF76L|;-Q+vKsl+erw6!Rr@O0TfT_gDqparZJ%IPd2LZ+E z?=NMuSFZ+;PdtfQ@%^*}2S9GK(VTs4`M_ zPKeD`r15aC#|e|i3>Io~ySxGD4EHxcA^zvZ~s zEJ6^P@&EJ!0E%ok*<*ePh$vu@jH+8pV&XK=-&9JpG#3$`gh%s9`ZgX*K&{<}8iPSD zKHA!<2biQPW0Pb~hk|8^Kp|9oe0&RrLnly0d)*y(#Rugd>U<;}j(Q^z_x6+gVF}|) zV<2`SV$t8tLOl{-#Ks~wsw*jVSQUM$l7EXCkj{}cYyu_%@KtTK_@H&Tfaj$JBi<}YiwB!MI=aCnwQ~Tpi}l?<7oNCSGZV=SRhY+I!(GPDAGz$ zWqkL}dO9c;jB|^#yy?nP;TLM3#)tAvDvwUeZS#zqV8~z$m~bFd(=!uO*5>Ajknte@ ziPK`cR5tJwY@VPGP!O2@MH5Q@9u6+$M&V^xfrlpZVVgI2bh$;1(2ykdl4&*zOAGDl z$VuK2l{$V9`G3=Xn67tDW;yQI4Auo2#4>4jrfO(f{n!C1F?LX+77^uCppfh#h&ZX4 z_aCkO_Zu1}9s+eNAB zL}Y)R2;tY2YZ`@O2b(bj&zwf{_4UC(BoGmOT2Q`BjJ%s0Ghv`+6;4HXP$9i%>XU37 zt8(tJZ6|#VK}Sbt8)6HwSR0g~KkmiKGveq}L+d!Q(p$Agz$mDzl^KL7gYaz*UuTjNDyst z8tfT9o=dd37la4Z*j@s_rGn|*>$EC!vsI%lplrp5*zZi0HS06x*r?;-NgxIT9Eode z+gUWtPDV4V77erk01RBth3|utCIujkR<`5oWh2#Z*p0v zsHg>ng@AB#bY$Zia7&&j-hGP+nbXi@W+E&lh&nt!K!yZ2Yo^4;(na^Qh7qQ6TGk6^ zy?)^b1Vw-eK>f-_NohPDgaK6bs@?w0QyAee*~0OPP1uh1_TKdqKss^=*aZg%pEC-g zp+Tsq=|V$-4uWZ%F5DGo7pe|x68xL&vj5_ zA`?y{A#dFk`N5vD>F-o+D477yh=qx1b!Rv_@a>zUmDOHxkUxwN>F_HrFJL3?`P)eb zOrJpg@~-6px7_$0Bm@`ZmuGNv78=Cj&QQTjElI6dT3kAfl~OcoxKU5SMDU#homLq> zAZmX5z$>Y!45o3hlQ5Rm*K^)4G;!GRvF<%*&xyoq>qb;e{x^01pCa$IT?&^NL<|z( z%fyiwDMP_aYAf+Y*PGP)!^1VvbAD7E3WNTSI`n3}Ap}ol3gBDOxNz?#_GcGT8{8XA zhJBA$AFO}70}9UbaKZR=15eo1#ntof*Z^W4`Z8=vuARIBp1bb;~i9z?S_9lpc zA>;99L_}(XBb{cW^G#(wrA(@LjQD*3vi|Dg{`BcZDi>2?(QQK$#GAawP$C}bxWwsa zJKX8U{c9pH%Xa>tR+!=e9+Ph^k9DV;=ds7f+n8u*T>2AxGem)el*~}>;m_kQlBR9m8<1vQJYd<$CnYB8KaE8 z-yV$*z_b1!A0WlUTi%eDVkdR)?t*_78L{AY&PUpmQ@mGHP=4-Z^CUW2=du;6BMc;3 zn(F>uwwc{tO|q}`w1!fsG=b$xbg4)Q63wH6mU`xpLS z>$U{=dzA3-ggmyYk0!3*S$R#3oDO@~u3I)!!&!hS1O>y^d_%k}mBsM)jz>DxQvKNp zQ-z$PYj+S(5BGOr1RUHn#5yZ$;hOV2NL}^2;CLSpP&}DDk^mu_K6tpb-}KI)W4pugY|xQDXCtw%7UkPAn}HF(*YQ!%2nArsuDA)d6^3s$TU{Ip6^DrlzE5M-?*uOBwsqTq zfdRKmS0_+>rh8rFH&Xy#O(w!c%Va~1DmiMf5X{Xb3K#kfdmKleM^943@#M;QUzzCw z_g?q%rAR1{cvp^{E!AosSg1^nG6W#R=+BU5WXMA2u)zX(PMoJ%bGOJ3&bi8<79GN% z5%k&y2MWcP`;`q2TADQJ(5FBLBU0gZ1QHb3r{B?MXE`9XZE>qJg-u9l5Va;;2R*60 zXGyaS)NQw}C^WPSNms~|7mtlmuehSg!DJ#dl!24VB) z(Xl6LmC_TDr?ds!xhd`iJv2%$d^{|t)g25+59cCspyMi)^G%vDvojYn10m|p_E}vg zFdmQ#Bumt4ynK$7l~vU=^SWtHEXa2YL1@iGFx${Lc{DbrFc!B}P;vlQsHz%{1VyCd z$vCp*Fam@GOLexv=Sg_wPKRZH|2{ihtPpWxXJ?m?kO))-3hgHi4O@2V?UD7qn!`C= zY@<05B9DqAb8hRc?6bXlE#SICS@c@WYA69(JfI~2Dg+ffuvex|Qlfd1fw(vG_C_2S z$S6U0ee3NWfuJTmvZ zLBzy9SUbI@jR$)cllmq_L?F&<3S_^LFcA6_E1U(VBN|0&*Y`~vu8ky9{)&!DgH zw-zwfSOeNc=GO2x9+=fc3Z3zz23H{r;#JD|BdFw))BdB`$isE4+d3bg)$+f3y zGzIysFLD&&Av)9>suJ%vzEfy*BmdL$i^oTL@_{F9(9Pot`b#qm)RQdg@Z)z%yo4_` z>e~(-YKn*Zf|WeyrwF4vUh6>%%*RPX06*pZK1+@fZMPP;{O1>1AQaCQFB~^B#g%~r z14a=h;QM?0F#ca&|DU&BP*ht?mjecm9lye1cLLZMx3xDmHy=;>-T|erySI15ghg6f znwOWi!f4>+{QN$EhQsx23yo6xM{aIIU0suS|08Vi@GJ7?NX0ZRIZBGq0=BSLumW2q zNo%&xzdBpacCJ#&Od$`xBxqd7JN5+KJk&z=?w$7ANQk#`A>6MgU&PR(nu*C4ppXH6 zI(Gx!IbgzU^0>W_O67Do-57xW0vU|bt=EdZOrT_2N31Qljb|~Gc~8o0VwD@y7aMCB zg-OS8H+gBl%{9fS`2^v142+G{-$cWB$K@=>aIR_`gB(clsoDZZe+jtw5WLg99;R(_ zn|*lRzJ1HUP+DK_I#sF*+_E(9-o^K=1L6u;giv4j0cj;mB)n6hAXknirlYRihjynu zS}73AMXgwMPVyIXEO=%oWy%lv!Tb}#f(#m^)6Ro}2|+iytOnfrI0Rxup+gO?fVOmZ%Cq#>3uc|0 z%H;%H9M`wEcsaYST3T9wa6s@5#bala6$RurFm|ZbSkXP%Ix>TU`+#TFOww9eR`wM- z`r6hO6>1<*9up!XL6+gefTy%4F1x*0z z1NZTI(wB5!VP)Kpc!36aXk3<9$Q4SG=g3!USR9Et(_zBh!#pDR&MYYU8Jqogqx zYhu1(7gl#{Xt~d_K`S6ys67RSm#;7)$H!MLM4sV(`olKc^k~tU!97EoF-*FVHry|) zvfJ9+Wz8ObbLtR1u{Ejmn)R>{BCos89#E@Y;pu!{p5XF8i4M%VW(Y#U!od0}ldrgQ zX<%do#BN45HZ~@vsQKvh^hLmM0CuMg#9{LsDC5E0gBzzWiDbUfpEy~fjo@8SK;!1- z<|jDZ;^lSkL>=1;tQ#6lt`4I)QUU@3dw7d%~A> zp%kgHc||B!Mq&B0zeW{OE1;R^_tj3re0)7Hz~AlXrT10sFXdUI;Ofc=vEKs)6@)ka zaC`eX1Wbz#@NcymRg0Car^~ZTOJ%c$(Xp_IIPJUJ+sSEYXecQILO)fS09G@c)9C;o z0|U$j7z6}h0f77Mg=L#GuWs)aPxjGD>B8j~&ahNf z%B^Xd)Ym=*)STZ|X#Cw;WN-NvQ^h3 z9$+xvX}YfOj8n>_)1bdd%IWLtL(3j1o~=P4BkFS31-6h!iYBv>xLQ3%MQo-mA*m5?{g;5 z!ynp3`23u*B*knT-z8!6 zO`nn$`(Q8e`SUe&#_Els-+{#ZUD+9lIMlBrIQ{eT;E|D`=}BJ8lR|ycfV0II{S!&4 z@H+9jzTG0~g8*%EP7z8NU{^rJ-Y{_k((Ml7dq9Dkn&t-t1QZsU?>pi6<1p&A0~1I} zYN~O6!fSkdz6812)4LfD6^Xcs{E4+;b7zRc+50X zPL7oq54ijTh(dQ)R(HqqPr>^@O&piuSJf^9ZzBkP(A1pufAk#5Rc8klI9hT8pkipH zasu`t0dV}EcdJ4Bpg^g%o*&6_yHv<+)7R7AEp-3<`4|X|i@UpF zvGIAbl?lr>=0zK_$Ci?2M~BPqcT@>y$1yJ#2m%m7diw@TJOpu@_|IeYCEvUjEGeFo z7wv`OMUeFSwTY^RTZ_+t5k)Q*(-XKS2;8A_s5!M!6k=Zo-#Fuc{r(J%muzYKM>uhA zUf`~e2XKC$IVLgaw)V!-zSFEn$H#B9S#HHW%*oCkNaezU@PY>^aq^}8?;9ex?6-z& zN`X88)@K1z1PmlIGxN)rFJfY1?=X%w>0qMPf+V55Gfgv_@U#ozzmi{5kOxQ{FZz?r ziD%pPR&E3F?WUcAhLe+q)3s;C8m24U*vWry{`S6}2q`)blAof!`qNn%5JFSO zXts8C=a#WX+Es?Td?EpxYfhHU8i8Moitl zgcWdharr1L+`DcYDjXdd30C?%huAndu~TI5!hSsNFM?HegqFaIYV$zD<3E~V<*Knp z@D@X(T#%7SeXk1*v6yLm14vo(czT4(Ly2#}p^X^FZI_Gc>gpw*@QMz*78(r;{rs*U zn%sUIdyz|^h5Heh&KHcI&|%^(H=TWLW25@==)El!3kf~j-VuoiLcrA( zY+C|yiv_4O7wJBsI@~Iojm&RxIeFgbrt%X5U~`_&Yd+ZQF`6S;_xZdx^;@#GXPI}~ z^4?S(Eh}B|7X@RxFQIV|#Z_dgZ7 zVV3HT-vXOmx8(u9hyKxWpe*kWSj$*l^q!J9I)@nKs609ZVVK!?p%Gc1DzN-0A8~I`Hc_ z+SwuVl=6|#Uu;FT0YO$epoIaUnK3jaHYLUVYU#_5cHhM?f;VQx-3I^V-!XVW75yPU zB$Mjvgg_lM4Z1;KNIz{r2zNK#mmsseh|!F!4rqVUOhtH{!GtMEigoJi$`G0&^4@h> zx%n8S*1xr7rkgsHhx9vs337A<~=d1L&xOS68 z$#EIo696qYl$)OR-sR*G^KFKyTBdBo57EN$DDs}wW3Y1Ly;DwPmC;h=&jB6*X3$i%b&GtNxsYH|Iw}` ze)Wv)u|9DB;_Tw&#dMSTuU`V$@CtZ)iw&C{w+b6={x5ml4(_UUC;Mn=ka9WjFw z$3J#i0q1>jd4bt&SZZ!t8_!OQp}r(g3(_f`>5clQ&(>I@K!Dc+aM_Zgl8v8FDcod{ z5lmQ>hdcJt%XZy;`d{R-{q`C|3S z1!hr+?65jv-P7j&<{VU51O5GgHwFAVk;mCESRXJ=0)e~&Ma01YAtq*AWMt;J z+5Y~1018nvSYzPveZ=IKmx#3V%LYzwU^lH=loAtzg9LrQ0a0G>?y_?xLltCe=deFt zsPg!5KjY@iA`6@pLCJ-Mb#)vNe7?`nkd6Md0Sf20fNh2xU7U;^$`y{0i`h~YYz$-+ zz0JnCP51(VAkT>j2`I{MuZ|Ab#FVR&@60z$9_C6^)WNdm4Lw;Kgt#&eg5+0 zOSXi|2D{BaPfM^RIsl{awD72Eml!n=7$C|GdZJvtLO;JpCej4t7tY-^X?`BXUE7)eYkNNqHM!L>gjIRQ6H3ZS{oCkh0Tkz~pqJZ4M); zI7viwTGr(?acI|mEj0QcyyN|1v4r^Dr&T=L0aG5#ZzR?WTm z<~A9+uN+hJ%45~44eW-6ya?V&eOWsUxlkKROTYUBR&uMVsbb%GJgbcJT+R{p5zA-X z;XZ0X-ByDk!o6#_c=NM^HjWH45CYaAmwu_%H6Ziyv<*~g=4b6=%!zuIIhmOFtQKGJ zn@(}-|zlyP*4Bc=4dN(<;#By zxkq9&_y6ab))gBnNcW#VMno7Jwolf95f&a=s;!l531F(GiKTh-#t>LIfOEaYY5^L8 z!o&>pSm6-d*oX*OP0iwA6YzwHY14(-N-Is{GRV@#PEzEt_kM(XiIX)%^=yBosK_Ew z64UW)Ys_?%6*p9tDyDB8%=}kNZDqi;R;XMA7QYr~8uO+TG1&U56{qn~Qc+MS)5qs# z=K_ULT|=WN{B=?SgkQ|m)Ic#tKEDX~)4>vgfYr{5`2@3Z#KDh;GgWSb3m%~K1gj%v zL9yQ8#TVX(jLlKr9BpK<3|x`e{@3omzj8%J+SWA!pTz3BWH6E{?d`MNT-j6mWQ*2J1z{%9r-!zaQ!x6sjRv5>r-qkm ztQIdo=?~lm6d^>HUWgkK*&}Cem%PdBiwq-uqo=FkU`CQiW+M|p;&b41*H{v2g8=9a z(8;*Uo;TFJlb`S2T$TCuO2=rf6pzb};&;UzJ_~HTN2|d!Aht&K7|bv3!$HW!=+)~D zzCAA86f^;IJm1Rd;o=~0;J;`Pd5ej1e97nZ(AdlbW-UEEJ>&i)&D&MrvA?~#tLks4 zsc|~0clfAxDq<^PemfmGHZc?Jl`exw0#Mz!~|r#>n#4?z^wb7v&^Y0@Tdl8OGEF)1$tMGu`2-4`KPSgHd~Jr|K_ z^iMwzuea1Vyf8tPWpjFN&)V7_zRkJBwfMS6J868bf?ZdCM3y|sAXo;2?SgNx?J?i3 zc0?v)gC;rCo3djBML+(C7E_@TR8i`?nrE-SEdp?UOd{qp$;Zj^PpEug57H3HkHaPd zI}OmDEkAcRZ>$NrrpHV5=aX2YDWsUBMn9)ezjdgPmHnf= z+Omy-G}6XFX*?~b^I_tQPusEcY`enf&s<&MXHe6B;m;`36>)J%>{`VEF6br)2LP;F zgVy`#`g#WjidCI0?G#p5J_Z-W&$GGgRDKz(zqG?QR{79IP*d_Ope@dDAcaw1{k|~E zt0j1L!#KV8XF-rqYmP4Z+U6iVoyXF{ZQ4w!z_a7wE+Q2CI;;JphRI@NKf$m`F6)K4 z87R1LyQ)a-onc4Ej|4o8~$I1)>dX3Rki?5Wa?tO zxVWqvs#v;gXM?8pOUUtG9?q3{2)NX(o^xs)I$&TlIPKrzb>ZK+^psPbR$XmQQg;t7 z&X3g^9Ixmwm?Rm=vD8=RY~1vUllXR3Bh2w()%7q(_CO=kM3X`x8S3Bb-8h??2tG44 z8DaZj`68U!;=@M5&p}6@Fs@$OrnsYoRyIFN(GPZ`KVwFk+#4IoW7b_`9*XtA-ls=Z z4ztyE?+OYF9&Tl^VX*)${V%mqZ*V4_}-HQ&D6hA@oI?{nr&UC&KG5If*0D`Rs#k zd`=YI)RabCc-w}QNV1cqW2NMJa|)7ZcscXkuj)pUIcsK9W{0QaMQJ=m)Rpo-iXevf zD1a@kbf~E5={=9HHay4CgMw&F613&zQJ=xOhmFq9&o3-IEzYW0blLRz z5bz_0olf)S$OnbN`by>kWCo@$>#s8Er-{EotdL+oQRcEQdURR02keA+grB@1hVa z9XwL6m|CMG+p8b0CvL-b6Xz}(=^}DS=N9QF12P2#L214W$obD|PO)lsu@WU|-@JC1 z5Mo7D_7id%sQKGX8^C(o+3-GzSJ@akj?mvHAWMfq>2EY|CwDV(~~lo-3m6 zO)yqd<9h5&ef<|}wYaL~z%FW3eoPl6Mz8WMseA(C7*!djL{!0of}FG<>iN(4h2Od8 zqs0LC?{+&Ulzwzu`3bGc{GEaY*=!$PVVHtIGnNCiw z)#KXL_h0yz$|Z7R<71VSm6QB`Yb;ym6&BM4VeVU+Ua$1M10ty4?vm8Xj9HlwH$h1$+K+KChCu@6zE$O!7(FwxX)>- zNzm7|sr;IVLHmnUA`@SMw+9F9$+Z;F%up)mtbkXr@XNO){A(n>awBsYuGY~Wp*hP<3 z#6|g}OW(Y+?k=-W6v1x4WJ2od$?u%dPeI_rt=8;w^-Y>xBuI%JMiDO*H2yZ^!m?_ q|7nBx-$vR0*Dd^~!T*&O7=D#_FB;X|NmurU4j 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 N`AAkgTU6)m{{s27FqQxS diff --git a/lam/lib/config.inc b/lam/lib/config.inc index ca8c3770..fef1ae1c 100644 --- a/lam/lib/config.inc +++ b/lam/lib/config.inc @@ -3166,6 +3166,18 @@ class LAMCfgMain { return ($type === self::LICENSE_WARNING_ALL) || ($type === self::LICENSE_WARNING_EMAIL); } + /** + * Returns if the license warning was already sent. + * + * @param int $timeStamp time stamp + */ + public function wasLicenseWarningSent($timeStamp) { + if (empty($this->licenseEmailDateSent)) { + return false; + } + return $timeStamp == $this->licenseEmailDateSent; + } + } ?> diff --git a/lam/templates/login.php b/lam/templates/login.php index 7106e2d9..4cb74df6 100644 --- a/lam/templates/login.php +++ b/lam/templates/login.php @@ -452,9 +452,19 @@ function display_LoginPage($licenseValidator, $error_message) { ?>

showLicenseWarningOnScreen() && $licenseValidator->isExpiringSoon()) { - $licenseMessage = sprintf(_('Your licence expires on %s. You need to purchase a new licence to be able to use LAM Pro after this date.'), $licenseValidator->getLicense()->getExpirationDate()->format('Y-m-d')); - StatusMessage('WARN', $licenseMessage); + if (isLAMProVersion() && $licenseValidator->isExpiringSoon()) { + $expirationDate = $licenseValidator->getLicense()->getExpirationDate()->format('Y-m-d'); + $expirationTimeStamp = $licenseValidator->getLicense()->getExpirationDate()->getTimestamp(); + if ($cfgMain->showLicenseWarningOnScreen()) { + $licenseMessage = sprintf(_('Your licence expires on %s. You need to purchase a new licence to be able to use LAM Pro after this date.'), $expirationDate); + StatusMessage('WARN', $licenseMessage); + } + if ($cfgMain->sendLicenseWarningByEmail() && !$cfgMain->wasLicenseWarningSent($expirationTimeStamp)) { + $cfgMain->licenseEmailDateSent = $expirationTimeStamp; + $cfgMain->save(); + $mailer = new \LAM\ENV\LicenseWarningMailer($cfgMain); + $mailer->sendMail($expirationDate); + } } ?>

diff --git a/lam/tests/lib/LAMCfgMainTest.php b/lam/tests/lib/LAMCfgMainTest.php index b17cfdb7..aa4b2d64 100644 --- a/lam/tests/lib/LAMCfgMainTest.php +++ b/lam/tests/lib/LAMCfgMainTest.php @@ -75,19 +75,22 @@ class LAMCfgMainTest extends TestCase { * License related settings. */ public function testLicense() { + $timestamp = '12345'; $this->assertEquals(LAMCfgMain::LICENSE_WARNING_SCREEN, $this->conf->getLicenseWarningType()); + $this->assertFalse($this->conf->wasLicenseWarningSent($timestamp)); $this->conf->licenseEmailTo = 'TO'; $this->conf->licenseEmailFrom = 'FROM'; - $this->conf->licenseEmailDateSent = 'date'; $this->conf->licenseWarningType = LAMCfgMain::LICENSE_WARNING_ALL; $this->conf->setLicenseLines(array('123', '456')); + $this->conf->licenseEmailDateSent = $timestamp; $this->conf->save(); $this->conf = new LAMCfgMain($this->file); $this->assertEquals('TO', $this->conf->licenseEmailTo); $this->assertEquals('FROM', $this->conf->licenseEmailFrom); - $this->assertEquals('date', $this->conf->licenseEmailDateSent); + $this->assertEquals($timestamp, $this->conf->licenseEmailDateSent); + $this->assertTrue($this->conf->wasLicenseWarningSent($timestamp)); $this->assertEquals(LAMCfgMain::LICENSE_WARNING_ALL, $this->conf->licenseWarningType); $this->assertEquals(array('123', '456'), $this->conf->getLicenseLines()); } From e9eca9ab747cc656c053a6b3d7d31c4d855536c1 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Fri, 3 Apr 2020 16:57:22 +0200 Subject: [PATCH 6/6] docs --- lam/lib/config.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lam/lib/config.inc b/lam/lib/config.inc index fef1ae1c..87616d83 100644 --- a/lam/lib/config.inc +++ b/lam/lib/config.inc @@ -2629,7 +2629,7 @@ class LAMCfgMain { /** license warning email from address */ public $licenseEmailFrom = ''; - /** license warning email TO addresses (comma separated) */ + /** license warning email TO address */ public $licenseEmailTo = ''; /** license warning email was last sent for this expiration date */