summaryrefslogtreecommitdiffstats
path: root/settings/admin
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2014-02-12 17:21:41 +0100
committerJoas Schilling <nickvergessen@gmx.de>2014-02-18 14:26:03 +0100
commit8387cd8ae35a0ad94a49a27ad8622bb7b8ed2b06 (patch)
tree30a304dcae073ea3b6ee409a279fc4946fd0a199 /settings/admin
parent3699728a3a02dd17ea617a7e8f781c09e837f360 (diff)
downloadnextcloud-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.php83
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' );
+ }
+ }
+}