/** * Unsubscribe the given user from the given list. * * @param \TYPO3\CMS\Extbase\Domain\Model\FrontendUser $user User to unsubscribe from list * @param \Tev\TevMailchimp\Domain\Model\Mlist $list List to unsubscribe user from * @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface All lists the user is subscribed to */ public function unsubscribeUserFromList(FrontendUser $user, Mlist $list) { $user = $this->castUser($user); $this->unsubscribeFromList($this->getEmailFromUser($user), $list); $list->removeFeUser($user); $this->mListRepo->update($list); $this->pm->persistAll(); }
/** * Handle a successful unsubscription by updating the local database. * * @param string $email Email address that was unsubscribed * @param string $mcListId Mailchimp list ID (remote) * @return void */ private function unsubscribe($email, $mcListId) { $method = 'findOneBy' . $this->emailUtil->getFieldNameUpperCamel(); $list = $this->mListRepo->findOneByMcListId($mcListId); $user = $this->feUserRepo->{$method}($email); if ($list && $user) { $list->removeFeUser($user); $this->mListRepo->update($list); $this->pm->persistAll(); } }