3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
19 * This class handles mail account settings.
22 class CRM_Admin_Form_MailSettings
extends CRM_Admin_Form
{
25 * Build the form object.
27 public function buildQuickForm() {
28 parent
::buildQuickForm();
29 $this->setPageTitle(ts('Mail Account'));
31 if ($this->_action
& CRM_Core_Action
::DELETE
) {
35 $this->applyFilter('__ALL__', 'trim');
38 $attributes = CRM_Core_DAO
::getAttribute('CRM_Core_DAO_MailSettings');
41 $this->add('text', 'name', ts('Name'), $attributes['name'], TRUE);
43 $this->add('text', 'domain', ts('Email Domain'), $attributes['domain'], TRUE);
44 $this->addRule('domain', ts('Email domain must use a valid internet domain format (e.g. \'example.org\').'), 'domain');
46 $this->add('text', 'localpart', ts('Localpart'), $attributes['localpart']);
48 $this->add('text', 'return_path', ts('Return-Path'), $attributes['return_path']);
49 $this->addRule('return_path', ts('Return-Path must use a valid email address format.'), 'email');
51 $this->add('select', 'protocol',
53 ['' => ts('- select -')] + CRM_Core_PseudoConstant
::get('CRM_Core_DAO_MailSettings', 'protocol'),
57 $this->add('text', 'server', ts('Server'), $attributes['server']);
59 $this->add('text', 'username', ts('Username'), ['autocomplete' => 'off']);
61 $this->add('password', 'password', ts('Password'), ['autocomplete' => 'off']);
63 $this->add('text', 'source', ts('Source'), $attributes['source']);
65 $this->add('checkbox', 'is_ssl', ts('Use SSL?'));
68 1 => ts('Bounce Processing'),
69 0 => ts('Email-to-Activity Processing'),
71 $this->add('select', 'is_default', ts('Used For?'), $usedfor);
72 $this->addField('activity_status', ['placeholder' => FALSE]);
76 * Add local and global form rules.
78 public function addRules() {
79 $this->addFormRule(['CRM_Admin_Form_MailSettings', 'formRule']);
82 public function getDefaultEntity() {
83 return 'MailSettings';
87 * Add local and global form rules.
89 public function setDefaultValues() {
90 $defaults = parent
::setDefaultValues();
92 // Set activity status to "Completed" by default.
93 if ($this->_action
!= CRM_Core_Action
::DELETE
&&
94 (!$this->_id ||
!CRM_Core_DAO
::getFieldValue('CRM_Core_BAO_MailSettings', $this->_id
, 'activity_status'))
96 $defaults['activity_status'] = 'Completed';
103 * Global validation rules for the form.
105 * @param array $fields
106 * Posted values of the form.
109 * list of errors to be posted back to the form
111 public static function formRule($fields) {
113 // Check for default from email address and organization (domain) name. Force them to change it.
114 if ($fields['domain'] == 'EXAMPLE.ORG') {
115 $errors['domain'] = ts('Please enter a valid domain for this mailbox account (the part after @).');
118 return empty($errors) ?
TRUE : $errors;
122 * Process the form submission.
124 public function postProcess() {
125 if ($this->_action
& CRM_Core_Action
::DELETE
) {
126 CRM_Core_BAO_MailSettings
::deleteMailSettings($this->_id
);
127 CRM_Core_Session
::setStatus("", ts('Mail Setting Deleted.'), "success");
131 //get the submitted form values.
132 $formValues = $this->controller
->exportValues($this->_name
);
152 foreach ($fields as $f) {
157 $params[$f] = CRM_Utils_Array
::value($f, $formValues, FALSE);
160 $params[$f] = CRM_Utils_Array
::value($f, $formValues);
164 $params['domain_id'] = CRM_Core_Config
::domainID();
166 // assign id only in update mode
167 $status = ts('Your New Email Settings have been saved.');
168 if ($this->_action
& CRM_Core_Action
::UPDATE
) {
169 $params['id'] = $this->_id
;
170 $status = ts('Your Email Settings have been updated.');
173 $mailSettings = CRM_Core_BAO_MailSettings
::create($params);
175 if ($mailSettings->id
) {
176 CRM_Core_Session
::setStatus($status, ts("Saved"), "success");
179 CRM_Core_Session
::setStatus("", ts('Changes Not Saved.'), "info");