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; }