diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2014-02-12 17:21:41 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2014-02-18 14:26:03 +0100 |
commit | 8387cd8ae35a0ad94a49a27ad8622bb7b8ed2b06 (patch) | |
tree | 30a304dcae073ea3b6ee409a279fc4946fd0a199 /settings/admin | |
parent | 3699728a3a02dd17ea617a7e8f781c09e837f360 (diff) | |
download | nextcloud-server-8387cd8ae35a0ad94a49a27ad8622bb7b8ed2b06.tar.gz nextcloud-server-8387cd8ae35a0ad94a49a27ad8622bb7b8ed2b06.zip |
Add option to change email settings in admin section
Fix issue #7166
Diffstat (limited to 'settings/admin')
-rw-r--r-- | settings/admin/controller.php | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/settings/admin/controller.php b/settings/admin/controller.php new file mode 100644 index 00000000000..9bbcd356580 --- /dev/null +++ b/settings/admin/controller.php @@ -0,0 +1,83 @@ +<?php +/** +* @author Joas Schilling +* @copyright 2014 Joas Schilling nickvergessen@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. +* +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see <http://www.gnu.org/licenses/>. +*/ + +namespace OC\Settings\Admin; + +class Controller { + public static function setMailSettings($args) { + \OC_Util::checkAdminUser(); + \OCP\JSON::callCheck(); + + $l = \OC_L10N::get('settings'); + + $smtp_settings = array( + 'mail_domain' => null, + 'mail_from_address' => null, + 'mail_smtpmode' => array('sendmail', 'smtp', 'qmail', 'php'), + 'mail_smtpsecure' => array('', 'ssl', 'tls'), + 'mail_smtphost' => null, + 'mail_smtpport' => null, + 'mail_smtpauthtype' => array('LOGIN', 'PLAIN', 'NTLM'), + 'mail_smtpauth' => true, + 'mail_smtpname' => null, + 'mail_smtppassword' => null, + ); + + foreach ($smtp_settings as $setting => $validate) { + if (!$validate) { + if (!isset($_POST[$setting]) || $_POST[$setting] === '') { + \OC_Config::deleteKey( $setting ); + } else { + \OC_Config::setValue( $setting, $_POST[$setting] ); + } + } + else if (is_bool($validate)) { + if (!empty($_POST[$setting])) { + \OC_Config::setValue( $setting, (bool) $_POST[$setting] ); + } else { + \OC_Config::deleteKey( $setting ); + } + } + else if (is_array($validate)) { + if (!isset($_POST[$setting]) || $_POST[$setting] === '') { + \OC_Config::deleteKey( $setting ); + } else if (in_array($_POST[$setting], $validate)) { + \OC_Config::setValue( $setting, $_POST[$setting] ); + } else { + $message = $l->t('Invalid value supplied for %s', array(self::getFieldname($setting, $l))); + \OC_JSON::error( array( "data" => array( "message" => $message)) ); + exit; + } + } + } + + \OC_JSON::success(array("data" => array( "message" => $l->t("Saved") ))); + } + + public static function getFieldname($setting, $l) { + switch ($setting) { + case 'mail_smtpmode': + return $l->t( 'SMTP mode' ); + case 'mail_smtpsecure': + return $l->t( 'Secure SMTP' ); + case 'mail_smtpauthtype': + return $l->t( 'Authentification method for SMTP' ); + } + } +} |