Blame view
sources/settings/admin/controller.php
3.76 KB
|
6d9380f96
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
<?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 {
/**
* Set mail settings
*/
public static function setMailSettings() {
\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") )));
}
/**
* Send a mail to test the settings
*/
public static function sendTestMail() {
\OC_Util::checkAdminUser();
\OCP\JSON::callCheck();
$l = \OC_L10N::get('settings');
$email = \OC_Preferences::getValue(\OC_User::getUser(), 'settings', 'email', '');
if (!empty($email)) {
$defaults = new \OC_Defaults();
try {
\OC_Mail::send($email, \OC_User::getDisplayName(),
$l->t('test email settings'),
$l->t('If you received this email, the settings seem to be correct.'),
\OCP\Util::getDefaultEmailAddress('no-reply'), $defaults->getName());
} catch (\Exception $e) {
$message = $l->t('A problem occurred while sending the e-mail. Please revisit your settings.');
\OC_JSON::error( array( "data" => array( "message" => $message)) );
exit;
}
\OC_JSON::success(array("data" => array( "message" => $l->t("Email sent") )));
} else {
$message = $l->t('You need to set your user email before being able to send test emails.');
\OC_JSON::error( array( "data" => array( "message" => $message)) );
}
}
/**
* Get the field name to use it in error messages
*
* @param string $setting
* @param \OC_L10N $l
* @return string
*/
public static function getFieldname($setting, $l) {
switch ($setting) {
case 'mail_smtpmode':
return $l->t( 'Send mode' );
case 'mail_smtpsecure':
return $l->t( 'Encryption' );
case 'mail_smtpauthtype':
return $l->t( 'Authentication method' );
}
}
}
|