예제 #1
0
파일: Config.php 프로젝트: ksecor/civicrm
 /**
  * retrieve a mailer to send any mail from the applciation
  *
  * @param
  * @access private
  * @return object
  */
 static function &getMailer()
 {
     if (!isset(self::$_mail)) {
         require_once "CRM/Core/BAO/Preferences.php";
         $mailingInfo =& CRM_Core_BAO_Preferences::mailingPreferences();
         if (defined('CIVICRM_MAILER_SPOOL') && CIVICRM_MAILER_SPOOL) {
             require_once 'CRM/Mailing/BAO/Spool.php';
             self::$_mail = new CRM_Mailing_BAO_Spool();
         } elseif ($mailingInfo['outBound_option'] == 0) {
             if ($mailingInfo['smtpServer'] == '' || !$mailingInfo['smtpServer']) {
                 CRM_Core_Error::fatal(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1'))));
             }
             $params['host'] = $mailingInfo['smtpServer'] ? $mailingInfo['smtpServer'] : 'localhost';
             $params['port'] = $mailingInfo['smtpPort'] ? $mailingInfo['smtpPort'] : 25;
             if ($mailingInfo['smtpAuth']) {
                 require_once 'CRM/Utils/Crypt.php';
                 $params['username'] = $mailingInfo['smtpUsername'];
                 $params['password'] = CRM_Utils_Crypt::decrypt($mailingInfo['smtpPassword']);
                 $params['auth'] = true;
             } else {
                 $params['auth'] = false;
             }
             // set the localhost value, CRM-3153
             $params['localhost'] = $_SERVER['SERVER_NAME'];
             self::$_mail =& Mail::factory('smtp', $params);
         } elseif ($mailingInfo['outBound_option'] == 1) {
             if ($mailingInfo['sendmail_path'] == '' || !$mailingInfo['sendmail_path']) {
                 CRM_Core_Error::fatal(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the Sendmail Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1'))));
             }
             $params['sendmail_path'] = $mailingInfo['sendmail_path'];
             $params['sendmail_args'] = $mailingInfo['sendmail_args'];
             self::$_mail =& Mail::factory('sendmail', $params);
         } else {
             CRM_Core_Session::setStatus(ts('There is no valid SMTP server Setting Or SendMail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1'))));
         }
     }
     return self::$_mail;
 }
 /**
  *  Common setup functions for all unit tests.
  */
 protected function setUp()
 {
     $session = CRM_Core_Session::singleton();
     $session->set('userID', NULL);
     $this->errorScope = CRM_Core_TemporaryErrorScope::useException();
     // REVERT
     //  Use a temporary file for STDIN
     $GLOBALS['stdin'] = tmpfile();
     if ($GLOBALS['stdin'] === FALSE) {
         echo "Couldn't open temporary file\n";
         exit(1);
     }
     //  Get and save a connection to the database
     $this->_dbconn = $this->getConnection();
     // reload database before each test
     //        $this->_populateDB();
     // "initialize" CiviCRM to avoid problems when running single tests
     // FIXME: look at it closer in second stage
     // initialize the object once db is loaded
     CRM_Core_Config::$_mail = NULL;
     $config = CRM_Core_Config::singleton();
     // when running unit tests, use mockup user framework
     $config->setUserFramework('UnitTests');
     $this->hookClass = CRM_Utils_Hook::singleton(TRUE);
     // also fix the fatal error handler to throw exceptions,
     // rather than exit
     $config->fatalErrorHandler = 'CiviUnitTestCase_fatalErrorHandler';
     // enable backtrace to get meaningful errors
     $config->backtrace = 1;
     // disable any left-over test extensions
     CRM_Core_DAO::executeQuery('DELETE FROM civicrm_extension WHERE full_name LIKE "test.%"');
     // reset all the caches
     CRM_Utils_System::flushCache();
     // Make sure the DB connection is setup properly
     $config->userSystem->setMySQLTimeZone();
     $env = new CRM_Utils_Check_Env();
     CRM_Utils_Check::singleton()->assertValid($env->checkMysqlTime());
     // clear permissions stub to not check permissions
     $config = CRM_Core_Config::singleton();
     $config->userPermissionClass->permissions = NULL;
     //flush component settings
     CRM_Core_Component::getEnabledComponents(TRUE);
     error_reporting(E_ALL);
     $this->_sethtmlGlobals();
 }
예제 #3
0
 /**
  * Retrieve a mailer to send any mail from the application.
  *
  * @param bool $persist
  *   Open a persistent smtp connection, should speed up mailings.
  * @return object
  */
 public static function &getMailer($persist = FALSE)
 {
     if (!isset(self::$_mail)) {
         $mailingInfo = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mailing_backend');
         if ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_REDIRECT_TO_DB || defined('CIVICRM_MAILER_SPOOL') && CIVICRM_MAILER_SPOOL) {
             self::$_mail = self::_createMailer('CRM_Mailing_BAO_Spool', array());
         } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_SMTP) {
             if ($mailingInfo['smtpServer'] == '' || !$mailingInfo['smtpServer']) {
                 CRM_Core_Error::debug_log_message(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
                 CRM_Core_Error::fatal(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
             }
             $params['host'] = $mailingInfo['smtpServer'] ? $mailingInfo['smtpServer'] : 'localhost';
             $params['port'] = $mailingInfo['smtpPort'] ? $mailingInfo['smtpPort'] : 25;
             if ($mailingInfo['smtpAuth']) {
                 $params['username'] = $mailingInfo['smtpUsername'];
                 $params['password'] = CRM_Utils_Crypt::decrypt($mailingInfo['smtpPassword']);
                 $params['auth'] = TRUE;
             } else {
                 $params['auth'] = FALSE;
             }
             // set the localhost value, CRM-3153
             $params['localhost'] = CRM_Utils_Array::value('SERVER_NAME', $_SERVER, 'localhost');
             // also set the timeout value, lets set it to 30 seconds
             // CRM-7510
             $params['timeout'] = 30;
             // CRM-9349
             $params['persist'] = $persist;
             self::$_mail = self::_createMailer('smtp', $params);
         } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_SENDMAIL) {
             if ($mailingInfo['sendmail_path'] == '' || !$mailingInfo['sendmail_path']) {
                 CRM_Core_Error::debug_log_message(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the sendmail server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
                 CRM_Core_Error::fatal(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the sendmail server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
             }
             $params['sendmail_path'] = $mailingInfo['sendmail_path'];
             $params['sendmail_args'] = $mailingInfo['sendmail_args'];
             self::$_mail = self::_createMailer('sendmail', $params);
         } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_MAIL) {
             self::$_mail = self::_createMailer('mail', array());
         } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_MOCK) {
             self::$_mail = self::_createMailer('mock', array());
         } elseif ($mailingInfo['outBound_option'] == CRM_Mailing_Config::OUTBOUND_OPTION_DISABLED) {
             CRM_Core_Error::debug_log_message(ts('Outbound mail has been disabled. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
             CRM_Core_Session::setStatus(ts('Outbound mail has been disabled. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
         } else {
             CRM_Core_Error::debug_log_message(ts('There is no valid SMTP server Setting Or SendMail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
             CRM_Core_Session::setStatus(ts('There is no valid SMTP server Setting Or sendMail path setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1'))));
             CRM_Core_Error::debug_var('mailing_info', $mailingInfo);
         }
     }
     return self::$_mail;
 }
예제 #4
0
 /**
  * retrieve a mailer to send any mail from the applciation
  *
  * @param boolean $persist open a persistent smtp connection, should speed up mailings
  *
  * @access private
  *
  * @return object
  */
 static function &getMailer($persist = FALSE)
 {
     if (!isset(self::$_mail)) {
         $mailingInfo = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MAILING_PREFERENCES_NAME, 'mailing_backend');
         if (defined('CIVICRM_MAILER_SPOOL') && CIVICRM_MAILER_SPOOL) {
             self::$_mail = new CRM_Mailing_BAO_Spool();
         } elseif ($mailingInfo['outBound_option'] == 0) {
             if ($mailingInfo['smtpServer'] == '' || !$mailingInfo['smtpServer']) {
                 CRM_Core_Error::fatal(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the SMTP Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1'))));
             }
             $params['host'] = $mailingInfo['smtpServer'] ? $mailingInfo['smtpServer'] : 'localhost';
             $params['port'] = $mailingInfo['smtpPort'] ? $mailingInfo['smtpPort'] : 25;
             if ($mailingInfo['smtpAuth']) {
                 $params['username'] = $mailingInfo['smtpUsername'];
                 $params['password'] = CRM_Utils_Crypt::decrypt($mailingInfo['smtpPassword']);
                 $params['auth'] = TRUE;
             } else {
                 $params['auth'] = FALSE;
             }
             // set the localhost value, CRM-3153
             $params['localhost'] = CRM_Utils_Array::value('SERVER_NAME', $_SERVER, 'localhost');
             // also set the timeout value, lets set it to 30 seconds
             // CRM-7510
             $params['timeout'] = 30;
             // CRM-9349
             $params['persist'] = $persist;
             self::$_mail = Mail::factory('smtp', $params);
         } elseif ($mailingInfo['outBound_option'] == 1) {
             if ($mailingInfo['sendmail_path'] == '' || !$mailingInfo['sendmail_path']) {
                 CRM_Core_Error::fatal(ts('There is no valid sendmail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the Sendmail Server.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1'))));
             }
             $params['sendmail_path'] = $mailingInfo['sendmail_path'];
             $params['sendmail_args'] = $mailingInfo['sendmail_args'];
             self::$_mail = Mail::factory('sendmail', $params);
         } elseif ($mailingInfo['outBound_option'] == 3) {
             $params = array();
             self::$_mail = Mail::factory('mail', $params);
         } elseif ($mailingInfo['outBound_option'] == 4) {
             self::$_mail = Mail::factory('mock', $params);
         } else {
             CRM_Core_Session::setStatus(ts('There is no valid SMTP server Setting Or SendMail path setting. Click <a href=\'%1\'>Administer CiviCRM >> Global Settings</a> to set the OutBound Email.', array(1 => CRM_Utils_System::url('civicrm/admin/setting', 'reset=1'))));
         }
     }
     return self::$_mail;
 }