本文整理汇总了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;
}
}
示例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;
}