diff options
author | Kate Butler <kate@innocraft.com> | 2019-10-11 01:20:09 +0300 |
---|---|---|
committer | Thomas Steur <tsteur@users.noreply.github.com> | 2019-10-11 01:20:09 +0300 |
commit | da92367838fa85b806dfd2486b6e91c308cb5e46 (patch) | |
tree | b680b8311c69ea8d9dad409c8fcd1f1f410b5486 /plugins/CoreAdminHome | |
parent | 2956209a7af53cfad8231a1f0625a19bb20decf1 (diff) |
Allow noreply email address/from to be set in admin panel (#14975)
Diffstat (limited to 'plugins/CoreAdminHome')
-rw-r--r-- | plugins/CoreAdminHome/Controller.php | 24 | ||||
-rw-r--r-- | plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js | 2 | ||||
-rw-r--r-- | plugins/CoreAdminHome/lang/en.json | 1 | ||||
-rw-r--r-- | plugins/CoreAdminHome/templates/generalSettings.twig | 26 |
4 files changed, 46 insertions, 7 deletions
diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php index 51c03b89d2..cfe6090540 100644 --- a/plugins/CoreAdminHome/Controller.php +++ b/plugins/CoreAdminHome/Controller.php @@ -13,6 +13,7 @@ use Piwik\API\ResponseBuilder; use Piwik\ArchiveProcessor\Rules; use Piwik\Common; use Piwik\Config; +use Piwik\Mail; use Piwik\Menu\MenuTop; use Piwik\Piwik; use Piwik\Plugin; @@ -124,6 +125,8 @@ class Controller extends ControllerAdmin 'ssl' => 'SSL', 'tls' => 'TLS' ); + $mail = new Mail(); + $view->mailHost = $mail->getMailHost(); $view->language = LanguagesManager::getLanguageCodeForCurrentUser(); $this->setBasicVariablesView($view); @@ -161,6 +164,22 @@ class Controller extends ControllerAdmin Config::getInstance()->mail = $mail; + $general = Config::getInstance()->General; + $fromName = Common::getRequestVar('mailFromName', ''); + $general['noreply_email_name'] = Common::unsanitizeInputValue($fromName); + + $mailFrom = Common::getRequestVar('mailFromAddress', ''); + if (empty($mailFrom)) { + $mailFrom = 'noreply@{DOMAIN}'; + } else { + $mailFrom = Common::unsanitizeInputValue($mailFrom); + } + if (!Piwik::isValidEmailString($mailFrom) && !Common::stringEndsWith($mailFrom, '@{DOMAIN}')) { + throw new Exception(Piwik::translate('CoreAdminHome_ErrorEmailFromAddressNotValid')); + } + $general['noreply_email_address'] = $mailFrom; + Config::getInstance()->General = $general; + Config::getInstance()->forceSave(); $toReturn = $response->getResponse(); @@ -275,7 +294,10 @@ class Controller extends ControllerAdmin $view->todayArchiveTimeToLiveDefault = Rules::getTodayArchiveTimeToLiveDefault(); $view->enableBrowserTriggerArchiving = $enableBrowserTriggerArchiving; - $view->mail = Config::getInstance()->mail; + $mail = Config::getInstance()->mail; + $mail['noreply_email_address'] = Config::getInstance()->General['noreply_email_address']; + $mail['noreply_email_name'] = Config::getInstance()->General['noreply_email_name']; + $view->mail = $mail; } } diff --git a/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js b/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js index 98b8f9743d..e90503b883 100644 --- a/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js +++ b/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js @@ -29,6 +29,8 @@ mailHost: this.mailHost, mailType: this.mailType, mailUsername: this.mailUsername, + mailFromAddress: this.mailFromAddress, + mailFromName: this.mailFromName, mailEncryption: this.mailEncryption }; diff --git a/plugins/CoreAdminHome/lang/en.json b/plugins/CoreAdminHome/lang/en.json index 3ae7269d9f..c84b970b4a 100644 --- a/plugins/CoreAdminHome/lang/en.json +++ b/plugins/CoreAdminHome/lang/en.json @@ -4,6 +4,7 @@ "Administration": "Administration", "ArchivingSettings": "Archiving settings", "BrandingSettings": "Branding settings", + "ErrorEmailFromAddressNotValid": "The SMTP from address is not valid", "ReleaseChannel": "Release channel", "ClickHereToOptIn": "Click here to opt in.", "ClickHereToOptOut": "Click here to opt out.", diff --git a/plugins/CoreAdminHome/templates/generalSettings.twig b/plugins/CoreAdminHome/templates/generalSettings.twig index 84a47c88e5..d959492b89 100644 --- a/plugins/CoreAdminHome/templates/generalSettings.twig +++ b/plugins/CoreAdminHome/templates/generalSettings.twig @@ -51,7 +51,7 @@ {{ 'General_ReportsContainingTodayWillBeProcessedAtMostEvery'|translate }} </h3> <div class="input-field col s12 m6"> - <input type="text" value='{{ todayArchiveTimeToLive }}' id='todayArchiveTimeToLive' {% if not isGeneralSettingsAdminEnabled %}disabled="disabled"{% endif %} /> + <input type="text" value='{{ todayArchiveTimeToLive|e('html_attr') }}' id='todayArchiveTimeToLive' {% if not isGeneralSettingsAdminEnabled %}disabled="disabled"{% endif %} /> <span class="form-description"> {{ 'General_RearchiveTimeIntervalOnlyForTodayReports'|translate }} </span> @@ -93,26 +93,26 @@ <div piwik-field uicontrol="text" name="mailHost" ng-model="mailSettings.mailHost" data-title="{{ 'General_SmtpServerAddress'|translate|e('html_attr') }}" - value="{{ mail.host }}"> + value="{{ mail.host|e('html_attr') }}"> </div> <div piwik-field uicontrol="text" name="mailPort" ng-model="mailSettings.mailPort" data-title="{{ 'General_SmtpPort'|translate|e('html_attr') }}" - value="{{ mail.port }}" inline-help="{{ 'General_OptionalSmtpPort'|translate|e('html_attr') }}"> + value="{{ mail.port|e('html_attr') }}" inline-help="{{ 'General_OptionalSmtpPort'|translate|e('html_attr') }}"> </div> <div piwik-field uicontrol="select" name="mailType" ng-model="mailSettings.mailType" data-title="{{ 'General_AuthenticationMethodSmtp'|translate|e('html_attr') }}" options="{{ mailTypes|json_encode }}" - value="{{ mail.type }}" inline-help="{{ 'General_OnlyUsedIfUserPwdIsSet'|translate|e('html_attr') }}"> + value="{{ mail.type|e('html_attr') }}" inline-help="{{ 'General_OnlyUsedIfUserPwdIsSet'|translate|e('html_attr') }}"> </div> <div piwik-field uicontrol="text" name="mailUsername" ng-model="mailSettings.mailUsername" data-title="{{ 'General_SmtpUsername'|translate|e('html_attr') }}" - value="{{ mail.username }}" inline-help="{{ 'General_OnlyEnterIfRequired'|translate|e('html_attr') }}" + value="{{ mail.username|e('html_attr') }}" inline-help="{{ 'General_OnlyEnterIfRequired'|translate|e('html_attr') }}" autocomplete="off"> </div> @@ -129,11 +129,25 @@ autocomplete="off"> </div> + <div piwik-field uicontrol="text" name="mailFromAddress" + ng-model="mailSettings.mailFromAddress" + title="{{ 'General_SmtpFromAddress'|translate|e('html_attr') }}" + value="{{ mail.noreply_email_address|e('html_attr') }}" inline-help="{{ 'General_SmtpFromEmailHelp'|translate(mailHost)|e('html_attr') }}" + autocomplete="off"> + </div> + + <div piwik-field uicontrol="text" name="mailFromName" + ng-model="mailSettings.mailFromName" + title="{{ 'General_SmtpFromName'|translate|e('html_attr') }}" + value="{{ mail.noreply_email_name|e('html_attr') }}" inline-help="{{ 'General_NameShownInTheSenderColumn'|translate|e('html_attr') }}" + autocomplete="off"> + </div> + <div piwik-field uicontrol="select" name="mailEncryption" ng-model="mailSettings.mailEncryption" data-title="{{ 'General_SmtpEncryption'|translate|e('html_attr') }}" options="{{ mailEncryptions|json_encode }}" - value="{{ mail.encryption }}" inline-help="{{ 'General_EncryptedSmtpTransport'|translate|e('html_attr') }}"> + value="{{ mail.encryption|e('html_attr') }}" inline-help="{{ 'General_EncryptedSmtpTransport'|translate|e('html_attr') }}"> </div> </div> |