Esempio n. 1
0
 /**
  * Send an automated response
  *
  * @param object $mailing       The mailing object
  * @param int $queue_id         The queue ID
  * @param string $replyto       Optional reply-to from the reply
  * @return void
  * @access private
  * @static
  */
 function autoRespond(&$mailing, $queue_id, $replyto)
 {
     $config =& CRM_Core_Config::singleton();
     $contacts = CRM_Contact_DAO_Contact::getTableName();
     $email = CRM_Core_DAO_Email::getTableName();
     $queue = CRM_Mailing_Event_DAO_Queue::getTableName();
     $eq =& new CRM_Core_DAO();
     $eq->query("SELECT     {$contacts}.preferred_mail_format as format,\n                    {$email}.email as email\n        FROM        {$contacts}\n        INNER JOIN  {$queue} ON {$queue}.contact_id = {$contacts}.id\n        INNER JOIN  {$email} ON {$queue}.email_id = {$email}.id\n        WHERE       {$queue}.id = " . CRM_Utils_Type::escape($queue_id, 'Integer'));
     $eq->fetch();
     $to = empty($replyto) ? $eq->email : $replyto;
     $component =& new CRM_Mailing_BAO_Component();
     $component->id = $mailing->reply_id;
     $component->find(true);
     $message =& new Mail_Mime("\n");
     require_once 'CRM/Core/BAO/Domain.php';
     $domain =& CRM_Core_BAO_Domain::getDomainById($mailing->domain_id);
     $headers = array('Subject' => $component->subject, 'To' => $to, 'From' => ts('"%1 Administrator" <%2>', array(1 => $domain->name, 2 => "do-not-reply@{$domain->email_domain}")), 'Reply-To' => "do-not-reply@{$domain->email_domain}", 'Return-Path' => "do-not-reply@{$domain->email_domain}");
     /* TODO: do we need reply tokens? */
     if ($eq->format == 'HTML' || $eq->format == 'Both') {
         $html = $component->body_html;
         require_once 'CRM/Utils/Token.php';
         $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, true);
         $message->setHTMLBody($html);
     }
     if (!$html || $eq->format == 'Text' || $eq->format == 'Both') {
         $text = $component->body_text;
         require_once 'CRM/Utils/Token.php';
         $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, false);
         $message->setTxtBody($text);
     }
     $b = $message->get();
     $h = $message->headers($headers);
     $mailer =& $config->getMailer();
     PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array('CRM_Mailing_BAO_Mailing', 'catchSMTP'));
     $mailer->send($to, $h, $b);
     CRM_Core_Error::setCallback();
 }
Esempio n. 2
0
 /**
  * Get a domain object given a queue event
  * 
  * @param int $queue_id     The ID of the queue event
  * @return object $domain   The domain owning the event
  * @access public
  * @static
  */
 function &getDomain($queue_id)
 {
     $dao =& new CRM_Core_Dao();
     $queue = CRM_Mailing_Event_BAO_Queue::getTableName();
     $job = CRM_Mailing_BAO_Job::getTableName();
     $mailing = CRM_Mailing_BAO_Mailing::getTableName();
     $dao->query("SELECT         {$mailing}.domain_id as domain_id\n                        FROM        {$mailing}\n                        INNER JOIN  {$job} \n                                ON  {$job}.mailing_id = {$mailing}.id\n                        INNER JOIN  {$queue}\n                                ON  {$queue}.job_id = {$job}.id\n                        WHERE       {$queue}.id = " . CRM_Utils_Type::escape($queue_id, 'Integer'));
     $dao->fetch();
     if (empty($dao->domain_id)) {
         return null;
     }
     require_once 'CRM/Core/BAO/Domain.php';
     return CRM_Core_BAO_Domain::getDomainById($dao->domain_id);
 }
Esempio n. 3
0
 /**
  * Get the domain object given a subscribe event
  * 
  * @param int $subscribe_id     ID of the subscribe event
  * @return object $domain       The domain owning the event
  * @access public
  * @static
  */
 function &getDomain($subscribe_id)
 {
     $dao =& new CRM_Core_Dao();
     $subscribe = CRM_Mailing_Event_BAO_Subscribe::getTableName();
     require_once 'CRM/Contact/BAO/Group.php';
     $group = CRM_Contact_BAO_Group::getTableName();
     $dao->query("SELECT     {$group}.domain_id as domain_id\n                        FROM    {$group}\n                    INNER JOIN  {$subscribe}\n                            ON  {$subscribe}.group_id = {$group}.id\n                        WHERE   {$subscribe}.id = " . CRM_Utils_Type::escape($subscribe_id, 'Integer'));
     $dao->fetch();
     if (empty($dao->domain_id)) {
         return null;
     }
     require_once 'CRM/Core/BAO/Domain.php';
     return CRM_Core_BAO_Domain::getDomainById($dao->domain_id);
 }