/** * @param string|null $context * * @return array|false */ public function getSources($context = null) { $sources = array('*' => array('label' => Craft::t('All Recipients'))); $recipientLists = sproutEmailDefaultMailer()->getRecipientLists(); if ($recipientLists) { foreach ($recipientLists as $recipientList) { $key = 'recipientlist:' . $recipientList->id; $sources[$key] = array('label' => Craft::t($recipientList->name) . " (" . count($recipientList->recipients) . ")", 'criteria' => array('recipientListId' => $recipientList->id)); } } return $sources; }
public function init() { parent::init(); Craft::import('plugins.sproutemail.enums.*'); Craft::import('plugins.sproutemail.contracts.*'); Craft::import('plugins.sproutemail.integrations.sproutemail.*'); if (sproutEmailDefaultMailer()->enableDynamicLists()) { craft()->on('sproutCommerce.saveProduct', array(sproutEmailDefaultMailer(), 'handleSaveProduct')); craft()->on('sproutCommerce.checkoutEnd', array(sproutEmailDefaultMailer(), 'handleCheckoutEnd')); } sproutEmail()->notifications->registerDynamicEventHandler(); }
public function actionDeleteRecipientList() { $this->requirePostRequest(); $id = craft()->request->getRequiredPost('id'); $model = null; if ($model = sproutEmailDefaultMailer()->getRecipientListById($id)) { if (!$model) { throw new Exception(Craft::t('Recipient list with id ({id}) was not found.', array('id' => $id))); } $vars = array('recipientListId' => $model->id); $deleted = SproutEmail_DefaultMailerRecipientListRecord::model()->deleteByPk($model->id); if ($deleted) { SproutEmail_DefaultMailerRecipientListRecipientRecord::model()->deleteAllByAttributes($vars); craft()->userSession->setNotice(Craft::t('Recipient list deleted successfully.')); if (craft()->request->isAjaxRequest()) { $this->returnJson(array('success' => true)); } } else { craft()->userSession->setNotice(Craft::t('Unable to delete recipient list.')); if (craft()->request->isAjaxRequest()) { $this->returnErrorJson(Craft::t('Unable to delete recipient list.')); } } $this->redirectToPostedUrl($model); } throw new HttpException(404); }
/** * @param SproutEmail_EntryModel $entry * @param SproutEmail_CampaignModel $campaign * * @return string */ public function getPrepareModalHtml(SproutEmail_EntryModel $entry, SproutEmail_CampaignModel $campaign) { $lists = sproutEmail()->entries->getRecipientListsByEntryId($entry->id); $recipientLists = array(); if (count($lists)) { foreach ($lists as $list) { $recipientList = sproutEmailDefaultMailer()->getRecipientListById($list->list); if ($recipientList) { $recipientLists[] = $recipientList; } } } return craft()->templates->render('sproutemail/_modals/prepare', array('entry' => $entry, 'campaign' => $campaign, 'recipientLists' => $recipientLists)); }
/** * Handles sproutCommerce.checkoutEnd events to add dynamic recipients to a lists * * @param Event $event */ public function handleCheckoutEnd(Event $event) { if (isset($event->params['checkout']->success) && $event->params['checkout']->success) { $order = $event->params['checkout']->order; if (count($order->products) && count($order->payments)) { foreach ($order->products as $purchasedProduct) { $list = sproutEmailDefaultMailer()->getRecipientListByHandle($purchasedProduct->product->slug); if ($list) { foreach ($order->payments as $payment) { $recipient = new SproutEmail_DefaultMailerRecipientModel(); $recipient->email = $payment->email; $recipient->firstName = $payment->firstName; $recipient->lastName = $payment->lastName; $recipient->recipientLists = array($list->id); try { if (!sproutEmailDefaultMailer()->saveRecipient($recipient)) { sproutEmail()->error($recipient->getErrors()); } } catch (\Exception $e) { sproutEmail()->error($e->getMessage()); } } } } } } }
/** * @return SproutEmail_DefaultMailerRecipientListModel[]|null */ public function getRecipientLists() { return sproutEmailDefaultMailer()->getRecipientListsByRecipientId($this->id); }