当前位置: 首页>>代码示例>>PHP>>正文


PHP Newsletter::MailingLists方法代码示例

本文整理汇总了PHP中Newsletter::MailingLists方法的典型用法代码示例。如果您正苦于以下问题:PHP Newsletter::MailingLists方法的具体用法?PHP Newsletter::MailingLists怎么用?PHP Newsletter::MailingLists使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Newsletter的用法示例。


在下文中一共展示了Newsletter::MailingLists方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: ArrayData

 /**
  * @param Newsletter $newsletter
  * @param Mailinglists $recipient
  * @param Boolean $fakeRecipient
  */
 function __construct($newsletter, $recipient, $fakeRecipient = false)
 {
     $this->newsletter = $newsletter;
     $this->mailinglists = $newsletter->MailingLists();
     $this->recipient = $recipient;
     $this->fakeRecipient = $fakeRecipient;
     parent::__construct($this->newsletter->SendFrom, $this->recipient->Email);
     $this->populateTemplate(new ArrayData(array('UnsubscribeLink' => $this->UnsubscribeLink(), 'SiteConfig' => DataObject::get_one('SiteConfig'), 'AbsoluteBaseURL' => Director::absoluteBaseURLWithAuth())));
     $this->body = $newsletter->getContentBody();
     $this->subject = $newsletter->Subject;
     $this->ss_template = $newsletter->RenderTemplate;
     if ($this->body && $this->newsletter) {
         $text = $this->body->forTemplate();
         //Recipient Fields ShortCode parsing
         $bodyViewer = new SSViewer_FromString($text);
         $text = $bodyViewer->process($this->templateData());
         // Install link tracking by replacing existing links with "newsletterlink" and hash-based reference.
         if ($this->config()->link_tracking_enabled && !$this->fakeRecipient && preg_match_all("/<a\\s[^>]*href=\"([^\"]*)\"[^>]*>(.*)<\\/a>/siU", $text, $matches)) {
             if (isset($matches[1]) && ($links = $matches[1])) {
                 $titles = isset($matches[2]) ? $matches[2] : array();
                 $id = (int) $this->newsletter->ID;
                 $replacements = array();
                 $current = array();
                 // workaround as we want to match the longest urls (/foo/bar/baz) before /foo/
                 array_unique($links);
                 $sorted = array_combine($links, array_map('strlen', $links));
                 arsort($sorted);
                 foreach ($sorted as $link => $length) {
                     $SQL_link = Convert::raw2sql($link);
                     $tracked = DataObject::get_one('Newsletter_TrackedLink', "\"NewsletterID\" = '" . $id . "' AND \"Original\" = '" . $SQL_link . "'");
                     if (!$tracked) {
                         // make one.
                         $tracked = new Newsletter_TrackedLink();
                         $tracked->Original = $link;
                         $tracked->NewsletterID = $id;
                         $tracked->write();
                     }
                     // replace the link
                     $replacements[$link] = $tracked->Link();
                     // track that this link is still active
                     $current[] = $tracked->ID;
                 }
                 // replace the strings
                 $text = str_ireplace(array_keys($replacements), array_values($replacements), $text);
             }
         }
         // replace the body
         $output = new HTMLText();
         $output->setValue($text);
         $this->body = $output;
     }
 }
开发者ID:tractorcow,项目名称:silverstripe-newsletter,代码行数:57,代码来源:NewsletterEmail.php

示例2: enqueue

 /**
  * Adds users to the queue for sending out a newsletter.
  * Processed all users that are CURRENTLY in the mailing lists associated with this MailingList and adds them
  * to the queue.
  *
  * @param $id The ID of the Newsletter DataObject to send
  */
 public function enqueue(Newsletter $newsletter)
 {
     $lists = $newsletter->MailingLists();
     $queueCount = 0;
     foreach ($lists as $list) {
         foreach ($list->Recipients()->column('ID') as $recipientID) {
             //duplicate filtering
             $existingQueue = SendRecipientQueue::get()->filter(array('RecipientID' => $recipientID, 'NewsletterID' => $newsletter->ID, 'Status' => array('Scheduled', 'InProgress')));
             if ($existingQueue->exists()) {
                 continue;
             }
             $queueItem = SendRecipientQueue::create();
             $queueItem->NewsletterID = $newsletter->ID;
             $queueItem->RecipientID = $recipientID;
             $queueItem->write();
             $queueCount++;
         }
     }
     return $queueCount;
 }
开发者ID:Zauberfisch,项目名称:silverstripe-newsletter,代码行数:27,代码来源:NewsletterSendController.php


注:本文中的Newsletter::MailingLists方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。