/**
  * @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);
 }