public static function bySubscribeTokens($tokens)
 {
     $whereParts = array();
     foreach ($tokens as $token) {
         $whereParts[] = 'token=?';
     }
     $recipientRef = Database::getInstance()->prepare('SELECT DISTINCT recipient FROM orm_avisota_recipient_to_mailing_list WHERE ' . implode(' OR ', $whereParts))->execute($tokens);
     if ($recipientRef->numRows > 1) {
         throw new AvisotaRecipientException('Illegal token list.');
     } else {
         if ($recipientRef->next()) {
             $recipient = new AvisotaIntegratedRecipient();
             $recipient->id = $recipientRef->recipient;
             $recipient->load();
             return $recipient;
         } else {
             return null;
         }
     }
 }
 /**
  * Do the import.
  *
  * @param DataContainer $dc
  */
 public function onsubmit_callback(DataContainer $dc)
 {
     $recipientId = $dc->getData('recipient');
     if ($recipientId != $this->Input->get('id')) {
         $this->redirect('contao/main.php?do=avisota_recipient&table=orm_avisota_recipient_notify&act=edit&id=' . $recipientId);
     }
     $confirmations = $dc->getData('confirmations');
     $notifications = $dc->getData('notifications');
     $overdue = $dc->getData('overdue');
     $recipient = new AvisotaIntegratedRecipient(array('id' => $recipientId));
     $recipient->load();
     if (is_array($confirmations) && count($confirmations)) {
         $recipient->sendSubscriptionConfirmation($confirmations);
     }
     if (is_array($notifications) && count($notifications)) {
         $recipient->sendRemind($notifications, true);
     }
     if (is_array($overdue) && count($overdue)) {
         $recipient->sendRemind($overdue, true);
     }
 }
 public function validateBlacklist($listIds, DataContainer $dc)
 {
     // do not check in frontend mode
     if (TL_MODE == 'FE') {
         return $listIds;
     }
     $email = $this->Input->post('email');
     $listIds = deserialize($listIds, true);
     $listIds = array_map('intval', $listIds);
     $listIds = array_filter($listIds);
     if (!count($listIds)) {
         return $listIds;
     }
     $blacklisted = AvisotaIntegratedRecipient::checkBlacklisted($email, $listIds);
     if ($blacklisted) {
         $blacklist = \Database::getInstance()->execute("SELECT * FROM orm_avisota_mailing_list\n\t\t\t\t           WHERE id IN (" . implode(',', $blacklisted) . ")\n\t\t\t\t           ORDER BY title");
         if ($blacklist->numRows) {
             $k = 'AVISOTA_BLACKLIST_WARNING_' . md5(implode(',', $blacklist->fetchEach('id')));
             if (!(isset($_SESSION[$k]) && time() - $_SESSION[$k] < 60)) {
                 $_SESSION[$k] = time();
                 throw new Exception(sprintf($GLOBALS['TL_LANG']['orm_avisota_recipient'][$blacklist->numRows > 1 ? 'blacklists' : 'blacklist'], implode(', ', $blacklist->fetchEach('title'))));
             }
         }
     }
     return $listIds;
 }