/** * @param UnsubscribeList $unsubscribeList * @param string $email * @return string */ public function unsubscribeAction(UnsubscribeList $unsubscribeList, $email) { /* @var $httpRequest Request */ $httpRequest = $this->request->getHttpRequest(); $arguments = $httpRequest->getUri()->getArguments(); if (!isset($arguments['hmac'])) { return '<h1>Error: HMAC needed to unsubscribe a person.</h1>'; } $actualHmac = $arguments['hmac']; $uriWithoutHmac = str_replace('&hmac=' . $actualHmac, '', (string) $httpRequest->getUri()); $expectedHmac = hash_hmac('sha1', $uriWithoutHmac, $this->hmacUrlSecret); if ($expectedHmac !== $actualHmac) { return '<h1>Error: Could not unsubscribe this email address.</h1>(Hash incorrect)'; } $unsubscribeList->unsubscribeEmail($email); $this->view->assign('email', $email); }
/** * @param UnsubscribeList $unsubscribeList */ public function downloadUnsubscribeListAction(UnsubscribeList $unsubscribeList) { $fp = fopen($unsubscribeList->getUnsubscribeFileName(), 'r'); header('Content-Type: text/csv'); header('Content-disposition: attachment;filename=UnsubscribeList.csv'); header('Content-Length: ' . filesize($unsubscribeList->getUnsubscribeFileName())); fpassthru($fp); exit; }