/** * Subscribes an email to a list * (depending on the list type) * * @param string email * @param string $list */ public function subscribeMemberTo($email, $list) { $subscriber = Subscriber::firstOrCreate(compact('email')); $list = MailingList::findOrFail($list); if ($this->isMemberSubscribedTo($subscriber, $list)) { return; } $list->subscribers()->attach($subscriber); if ($list->type === 'mailchimp') { $this->subscribeToMailchimpList($subscriber, $list); } }
/** * Unlink a list from subscriber * * @param int $id * @return MailingList */ public function dissociateList($id) { return $this->lists()->detach(MailingList::findOrFail($id)); }
/** * List the specified resource fields. * * @param int $id * @return Response */ public function mailings($id) { $mailing_list = MailingList::findOrFail($id); $mailings = $mailing_list->mailings()->sortable()->paginate(); return $this->compileView('mailing_lists.mailings', compact('mailing_list', 'mailings'), trans('mailings.title')); }
/** * Dispatches the mailing * * @param MailingService $mailingService * @param int $id * @param int $list * @return response */ public function dispatchMailing(MailingService $mailingService, $id, $list) { $this->authorize('EDIT_MAILINGS'); $mailing = MailingNode::findOrFail($id); $list = MailingList::findOrFail($list); // Before this we are in the reactor theme by default Theme::set(config('themes.active_mailings')); if ($list->type === 'mailchimp') { $mailingService->dispatchMailchimpMailing($mailing, $list); } else { $mailingService->dispatchDefaultMailing($mailing, $list); } $this->notify('mailings.dispatched', 'dispatched_mailing', $mailing); return redirect()->back(); }