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
17 class CRM_Core_BAO_MailSettings
extends CRM_Core_DAO_MailSettings
{
22 public function __construct() {
23 parent
::__construct();
27 * Get a list of setup-actions.
30 * List of available actions. See description in the hook-docs.
31 * @see CRM_Utils_Hook::mailSetupActions()
33 public static function getSetupActions() {
35 $setupActions['standard'] = [
36 'title' => ts('Standard Mail Account'),
37 'callback' => ['CRM_Core_BAO_MailSettings', 'setupStandardAccount'],
40 CRM_Utils_Hook
::mailSetupActions($setupActions);
44 public static function setupStandardAccount($setupAction) {
46 'url' => CRM_Utils_System
::url('civicrm/admin/mailSettings', 'action=add&reset=1', TRUE, NULL, FALSE),
51 * Return the DAO object containing to the default row of
52 * civicrm_mail_settings and cache it for further calls
56 * @return CRM_Core_BAO_MailSettings
57 * DAO with the default mail settings set
59 public static function defaultDAO($reset = FALSE) {
60 static $mailSettings = [];
61 $domainID = CRM_Core_Config
::domainID();
62 if (empty($mailSettings[$domainID]) ||
$reset) {
65 $dao->domain_id
= $domainID;
67 $mailSettings[$domainID] = $dao;
69 return $mailSettings[$domainID];
73 * Return the domain from the default set of settings.
78 public static function defaultDomain() {
79 return self
::defaultDAO()->domain
;
83 * Return the localpart from the default set of settings.
88 public static function defaultLocalpart() {
89 return self
::defaultDAO()->localpart
;
93 * Return the return path from the default set of settings.
98 public static function defaultReturnPath() {
99 return self
::defaultDAO()->return_path
;
103 * Return the "include message ID" flag from the default set of settings.
106 * default include message ID
108 public static function includeMessageId() {
109 return Civi
::settings()->get('include_message_id');
113 * Retrieve DB object based on input parameters.
115 * It also stores all the retrieved values in the default array.
117 * @param array $params
118 * (reference ) an assoc array of name/value pairs.
119 * @param array $defaults
120 * (reference ) an assoc array to hold the flattened values.
122 * @return CRM_Core_BAO_MailSettings
124 public static function retrieve(&$params, &$defaults) {
125 $mailSettings = new CRM_Core_DAO_MailSettings();
126 $mailSettings->copyValues($params);
129 if ($mailSettings->find(TRUE)) {
130 CRM_Core_DAO
::storeValues($mailSettings, $defaults);
131 $result = $mailSettings;
138 * Add new mail Settings.
140 * @param array $params
141 * Reference array contains the values submitted by the form.
146 public static function add(&$params) {
148 if (empty($params)) {
152 if (empty($params['id'])) {
153 $params['is_ssl'] = CRM_Utils_Array
::value('is_ssl', $params, FALSE);
154 $params['is_default'] = CRM_Utils_Array
::value('is_default', $params, FALSE);
158 if (!empty($params['is_default'])) {
159 $query = 'UPDATE civicrm_mail_settings SET is_default = 0 WHERE domain_id = %1';
160 $queryParams = [1 => [CRM_Core_Config
::domainID(), 'Integer']];
161 CRM_Core_DAO
::executeQuery($query, $queryParams);
164 $mailSettings = new CRM_Core_DAO_MailSettings();
165 $mailSettings->copyValues($params);
166 $result = $mailSettings->save();
172 * Takes an associative array and creates a mail settings object.
174 * @param array $params
175 * (reference ) an assoc array of name/value pairs.
177 * @return CRM_Core_BAO_MailSettings
179 public static function create(&$params) {
180 $transaction = new CRM_Core_Transaction();
182 $mailSettings = self
::add($params);
183 if (is_a($mailSettings, 'CRM_Core_Error')) {
184 $mailSettings->rollback();
185 return $mailSettings;
188 $transaction->commit();
189 CRM_Core_BAO_MailSettings
::defaultDAO(TRUE);
190 return $mailSettings;
194 * Delete the mail settings.
201 public static function deleteMailSettings($id) {
203 $transaction = new CRM_Core_Transaction();
205 $mailSettings = new CRM_Core_DAO_MailSettings();
206 $mailSettings->id
= $id;
207 $results = $mailSettings->delete();
209 $transaction->commit();