/** * Manage Mailing List Task * * @return void */ public function manageTask() { //get request vars $ids = Request::getVar('id', array()); $id = isset($ids[0]) ? $ids[0] : null; //get request vars $this->view->id = $id; $this->view->filters['status'] = Request::getWord('status', 'active'); $this->view->filters['sort'] = Request::getVar('sort', 'email ASC'); //instantiate mailing list object $newsletterMailinglist = new MailList($this->database); $newsletterMailinglistEmail = new MailingListEmail($this->database); //load mailing list $this->view->list = $newsletterMailinglist->getLists($this->view->id); //load mailing list emails $this->view->list_emails = $newsletterMailinglist->getListEmails($this->view->id, null, $this->view->filters); //set errors if we have any if ($this->getError()) { $this->view->setError($this->getError()); } //diplay list of mailing lists $this->view->setLayout('manage')->display(); }
/** * Unsubscribe From Mailing Lists * * @return void */ public function unsubscribeTask() { //set layout $this->view->setLayout('unsubscribe'); //get request vars $email = urldecode(Request::getVar('e', '')); $token = Request::getVar('t', ''); //parse token $recipient = Helper::parseMailingToken($token); //make sure mailing recipient email matches email param if ($email != $recipient->email) { App::redirect(Route::url('index.php?option=com_newsletter&task=subscribe'), Lang::txt('COM_NEWSLETTER_MAILINGLIST_UNSUBSCRIBE_LINK_ISSUE'), 'error'); return; } //get newsletter mailing to get mailing list id mailing was sent to $newsletterMailing = new Mailing($this->database); $mailing = $newsletterMailing->getMailings($recipient->mid); //make sure we have a mailing object if (!is_object($mailing)) { App::redirect(Route::url('index.php?option=com_newsletter&task=subscribe'), Lang::txt('COM_NEWSLETTER_MAILINGLIST_UNSUBSCRIBE_NO_MAILING'), 'error'); return; } //is the mailing list to the default hub mailing list? if ($mailing->lid == '-1') { $mailinglist = new stdClass(); $mailinglist->id = '-1'; $mailinglist->name = 'HUB Members'; $mailinglist->description = Lang::txt('COM_NEWSLETTER_MAILINGLIST_UNSUBSCRIBE_DEFAULTLIST'); } else { //load mailing list $newsletterMailinglist = new MailList($this->database); $mailinglist = $newsletterMailinglist->getLists($mailing->lid); } //check to make sure were not already unsubscribed $unsubscribedAlready = false; if ($mailing->lid == '-1') { $sql = "SELECT *\n\t\t\t\t\tFROM #__xprofiles as p\n\t\t\t\t\tWHERE p.email=" . $this->database->quote($recipient->email) . "\n\t\t\t\t\tAND p.mailPreferenceOption > " . $this->database->quote(0); $this->database->setQuery($sql); $profile = $this->database->loadObject(); if (!is_object($profile) || $profile->uidNumber == '') { $unsubscribedAlready = true; } } else { //check to make sure email is on list $sql = "SELECT *\n\t\t\t\t\tFROM #__newsletter_mailinglist_emails as mle\n\t\t\t\t\tWHERE mle.mid=" . $this->database->quote($mailing->lid) . "\n\t\t\t\t\tAND mle.email=" . $this->database->quote($recipient->email) . "\n\t\t\t\t\tAND mle.status=" . $this->database->quote('active'); $this->database->setQuery($sql); $list = $this->database->loadObject(); if (!is_object($list) || $list->id == '') { $unsubscribedAlready = true; } } //are we unsubscribed already if ($unsubscribedAlready) { Notify::error(Lang::txt('COM_NEWSLETTER_MAILINGLIST_UNSUBSCRIBE_ALREADY_UNSUBSCRIBED', $mailinglist->name)); if (User::isGuest()) { App::redirect(Route::url('index.php?option=com_newsletter')); return; } App::redirect(Route::url('index.php?option=com_newsletter&task=subscribe')); return; } //build title $this->_buildTitle(); //build pathway $this->_buildPathway(); //set vars for view $this->view->title = $this->_title; $this->view->mailinglist = $mailinglist; //output $this->view->display(); }