Files
2025-03-12 17:06:23 +01:00

930 lines
32 KiB
PHP

<?php
/**
* SOTESHOP/stNewsletterPlugin
*
* Ten plik należy do aplikacji stNewsletterPlugin opartej na licencji (Professional License SOTE).
* Nie zmieniaj tego pliku, jeśli chcesz korzystać z automatycznych aktualizacji oprogramowania.
* Jeśli chcesz wprowadzać swoje modyfikacje do programu, zapoznaj się z dokumentacją, jak zmieniać
* oprogramowanie bez zmiany kodu bazowego http://www.sote.pl/modifications
*
* @package stNewsletterPlugin
* @subpackage actions
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/sote (Professional License SOTE)
* @version $Id: actions.class.php 12239 2011-04-14 11:47:41Z bartek $
* @author Bartosz Alejski <bartosz.alejski@sote.pl>
*/
/**
* Klasa stNewsletterFrontendActions.
*
* @package stNewsletterPlugin
* @subpackage actions
*/
class stNewsletterFrontendActions extends stActions
{
public function executeUnsubscribe()
{
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$user = NewsletterUserPeer::retrieveByEmail($this->getRequestParameter('newsletter[email]'));
return $this->redirect('stNewsletterFrontend/unsubscribeConfirmation?hash='.$user->getHash());
}
$this->smarty = new stSmarty('stNewsletterFrontend');
$this->unsubscribeUpdateFromRequest();
}
public function executeUnsubscribeConfirmation()
{
$this->smarty = new stSmarty('stNewsletterFrontend');
$user = NewsletterUserPeer::retrieveByHash($this->getRequestParameter('hash'));
$this->email = $user->getEmail();
}
public function validateUnsubscribe()
{
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$form = $this->getRequestParameter('newsletter');
$captcha_mod = stConfig::getInstance('stSecurityBackend')->get('captcha_mod');
if($captcha_mod=="recaptcha3" && sfContext::getInstance()->getUser()->getAttribute('badscore')!=1){
$recaptcha_key = stConfig::getInstance('stSecurityBackend')->get('recaptcha_key');
$recaptcha_secret = stConfig::getInstance('stSecurityBackend')->get('recaptcha_secret');
// Build POST request:
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = $recaptcha_secret;
$recaptcha_response = $this->getRequestParameter('recaptcha_response');
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);
if ($recaptcha->score <= 0.5) {
// Bad score
$captcha_mod=="standart";
$this->getUser()->setAttribute('badscore', true);
}else{
$this->getUser()->setAttribute('badscore', false);
}
}
if($captcha_mod=="standart" || sfContext::getInstance()->getUser()->getAttribute('badscore')==1){
$validator = new stCaptchaGDValidator();
$validator->initialize($this->getContext(), array('captcha_error' => 'Wprowadzono zły numer.'));
$captcha = $this->getRequestParameter('captcha');
if (!$validator->execute($form['captcha'], $error) && $this->getUser()->getAttribute('captcha_off')!=1)
{
$this->getRequest()->setError('newsletter{captcha}', $error);
}else{
$this->getUser()->setAttribute('captcha_off', true);
$this->getUser()->setAttribute('badscore', false);
}
}
$user = NewsletterUserPeer::retrieveByEmail($form['email']);
if (null === $user)
{
$this->getRequest()->setError('newsletter{email}', 'Podany adres e-mail nie istnieje');
}
if(!$this->getRequest()->hasErrors()){
sfLoader::loadHelpers(array('Helper', 'I18N'));
$smarty = new stSmarty('stNewsletterFrontend');
$mail_config = stConfig::getInstance($this->getContext(), 'stMailAccountBackend');
$smarty->assign('date', date("d-m-Y H:i"));
$smarty->assign('user_head', stMailer::getHtmlMailDescription("header"));
$smarty->assign('user_foot', stMailer::getHtmlMailDescription("footer"));
$smarty->assign('bg_header_color', $mail_config->get('bg_header_color'));
$smarty->assign('bg_footer_color', $mail_config->get('bg_footer_color'));
$smarty->assign('bg_action_color', $mail_config->get('bg_action_color'));
$smarty->assign('bg_action_link_color', $mail_config->get('bg_action_link_color'));
$smarty->assign('link_color', $mail_config->get('link_color'));
$smarty->assign('logo', $mail_config->get('logo'));
$smarty->assign('confirmation_url', $this->getController()->genUrl('@stNewsletterRemove?id=' . $user->getId() . '&hash_code=' . $user->getHash(), true));
$smarty->assign('host', $this->getRequest()->getHost());
$html = $smarty->fetch('newsletter_mail_unsubscribe_html.html');
$plain = $smarty->fetch('newsletter_mail_unsubscribe_plain.html');
stMailer::getInstance()->setTo($form['email'])->setSubject(__('Potwierdzenie rezygnacji z listy subskrypcji'))->setHtmlMessage($html)->setPlainMessage($plain)->send();
}
}
return !$this->getRequest()->hasErrors();
}
public function handleErrorUnsubscribe()
{
$this->smarty = new stSmarty('stNewsletterFrontend');
$this->unsubscribeUpdateFromRequest();
return sfView::SUCCESS;
}
protected function unsubscribeUpdateFromRequest()
{
$form = $this->getRequestParameter('newsletter', array());
$form['errors']['captcha'] = $this->getRequest()->getError('newsletter{captcha}');
$form['errors']['email'] = $this->getRequest()->getError('newsletter{email}');
$this->form = $form;
}
public function executeIndex()
{
$this->smarty = new stSmarty($this->getModuleName());
$this->config = stConfig::getInstance($this->getContext(), 'stSecurityBackend');
$newsletter_config = stConfig::getInstance($this->getContext(), 'stNewsletterBackend');
if($newsletter_config->get('newsletter_enabled')==0){
$this->redirect("/");
}
$c = new Criteria();
$c->add(NewsletterGroupPeer::IS_PUBLIC, 1);
$newsletterGroup = NewsletterGroupPeer::doSelect($c);
$this->newsletter_config = $newsletter_config;
$this->newsletterGroup = $newsletterGroup;
}
public function executeAddToList()
{
$this->smarty = new stSmarty($this->getModuleName());
$newsletter_config = stConfig::getInstance($this->getContext(), 'stNewsletterBackend');
$c = new Criteria();
$c->add(sfGuardUserPeer::USERNAME, $this->getRequestParameter('newsletter[email]'));
$user = sfGuardUserPeer::doSelectOne($c);
if ($user)
{
$user_id = $user->getId();
}
else
{
$user_id = null;
}
$newsletterUser = new NewsletterUser();
$newsletterUser->setEmail($this->getRequestParameter("newsletter[email]"));
$newsletterUser->setUserId($user_id);
$newsletterUser->setLanguage(sfContext::getInstance()->getUser()->getCulture());
$newsletterUser->setActive(1);
$newsletterUser->setConfirm(0);
$newsletterUser->save();
$newsletter_user_id = $newsletterUser->getId();
$checkedGroup = $this->getRequestParameter('newsletter[group]');
if ($checkedGroup)
{
foreach ($checkedGroup as $key => $value)
{
$c = new Criteria();
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletter_user_id);
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID, $key);
NewsletterUserHasNewsletterGroupPeer::doInsert($c);
}
}
$c = new Criteria();
$c->add(NewsletterGroupPeer::IS_PUBLIC, 0);
$c->add(NewsletterGroupPeer::IS_DEFAULT, 1);
$defaultNewsletterGroup = NewsletterGroupPeer::doSelect($c);
if ($defaultNewsletterGroup)
{
foreach ($defaultNewsletterGroup as $group)
{
$c = new Criteria();
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletter_user_id);
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID, $group->getId());
NewsletterUserHasNewsletterGroupPeer::doInsert($c);
}
}
$c = new Criteria();
$c->addJoin(NewsletterGroupPeer::ID, NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID);
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletterUser->getId());
$c->add(NewsletterGroupPeer::IS_PUBLIC, 1);
$choseGroup = NewsletterGroupPeer::doSelect($c);
//wysył maila
$this->SendMail($newsletterUser, $choseGroup, $newsletterUser->getHash());
//zmienne na template
$this->email = $this->getRequestParameter("newsletter[email]");
$this->choseGroup = $choseGroup;
}
/**
* Obsługuje wysyłanie mail'i
*/
function SendMail($user, $group, $hash)
{
$this->smarty = new stSmarty($this->getModuleName());
$mail_error = $this->mailWithConfirmRegisterToUser($user, $group, $hash, $this->smarty);
return $mail_error;
}
/**
* Wysyła mail z zamówieniem do administratora
*/
function mailWithConfirmRegisterToUser($user, $group, $hash, $smarty)
{
$mail_config = stConfig::getInstance($this->getContext(), 'stMailAccountBackend');
$mailHtmlHead = stMailer::getHtmlMailDescription("header");
$mailHtmlFoot = stMailer::getHtmlMailDescription("footer");
$sendConfirmRegisterToUserHtmlMailMessage = stMailTemplate::render('sendConfirmRegisterToUserHtml', array(
'user' => $user,
'mail_config' => $mail_config,
'group' => $group,
'hash' => $hash,
'head' => $mailHtmlHead,
'foot' => $mailHtmlFoot,
'smarty' => $smarty,
));
$sendConfirmRegisterToUserPlainMailMessage = stMailTemplate::render('sendConfirmRegisterToUserPlain', array(
'user' => $user,
'group' => $group,
'hash' => $hash,
'smarty' => $smarty,
));
$mail = stMailer::getInstance();
return $mail->setSubject(__('Jeszcze jeden krok - potwierdź subskrypcję.'))->setHtmlMessage($sendConfirmRegisterToUserHtmlMailMessage)->setPlainMessage($sendConfirmRegisterToUserPlainMailMessage)->setTo($user->getEmail())->sendToClient();
}
/**
* Obsługuje wysyłanie mail'i
*/
function sendAfterRegisterMail($user)
{
$this->smarty = new stSmarty($this->getModuleName());
$mail_error = $this->mailWithRegisterMessageToUser($user, $this->smarty);
return $mail_error;
}
/**
* Wysyła mail dodatkową wiadomością
*/
function mailWithRegisterMessageToUser($user, $smarty)
{
$mail_config = stConfig::getInstance($this->getContext(), 'stMailAccountBackend');
$newsletter_config = stConfig::getInstance($this->getContext(), 'stNewsletterBackend');
$mailHtmlHead = stMailer::getHtmlMailDescription("header");
$mailHtmlFoot = stMailer::getHtmlMailDescription("footer");
$sendRegisterMessageToUserHtmlMailMessage = stMailTemplate::render('sendRegisterMessageToUserHtml', array(
'user' => $user,
'mail_config' => $mail_config,
'newsletter_config' => $newsletter_config,
'head' => $mailHtmlHead,
'foot' => $mailHtmlFoot,
'smarty' => $smarty,
));
$sendRegisterMessageToUserPlainMailMessage = stMailTemplate::render('sendRegisterMessageToUserPlain', array(
'user' => $user,
'smarty' => $smarty,
));
$mail = stMailer::getInstance();
return $mail->setSubject($newsletter_config->get('register_message_title', null, true))->setHtmlMessage($sendRegisterMessageToUserHtmlMailMessage)->setPlainMessage($sendRegisterMessageToUserPlainMailMessage)->setTo($user->getEmail())->sendToClient();
}
/**
* Uchwyt do walidatora edycji hasła.
*/
public function validateAddToList()
{
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$error_exists = false;
$i18n = $this->getContext()->getI18N();
if($this->getRequestParameter('newsletter[privacy]')!=1)
{
$this->getRequest()->setError('error_privacy', 1);
$error_exists = true;
}
else
{
$captcha_mod = stConfig::getInstance('stSecurityBackend')->get('captcha_mod');
if($captcha_mod=="recaptcha3" && sfContext::getInstance()->getUser()->getAttribute('badscore')!=1){
$recaptcha_key = stConfig::getInstance('stSecurityBackend')->get('recaptcha_key');
$recaptcha_secret = stConfig::getInstance('stSecurityBackend')->get('recaptcha_secret');
// Build POST request:
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = $recaptcha_secret;
$recaptcha_response = $this->getRequestParameter('recaptcha_response');
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);
if ($recaptcha->score <= 0.5) {
// Bad score
$captcha_mod=="standart";
$this->getUser()->setAttribute('badscore', true);
}else{
$this->getUser()->setAttribute('badscore', false);
}
}
if($captcha_mod=="standart" || sfContext::getInstance()->getUser()->getAttribute('badscore')==1){
$validator = new stCaptchaGDValidator();
$validator->initialize($this->getContext(), array('captcha_error' => 'Wprowadzono zły numer.'));
$captcha = $this->getRequestParameter('captcha');
if (!$validator->execute($captcha, $error) && $this->getUser()->getAttribute('captcha_off')!=1)
{
$this->getRequest()->setError('captcha', $error);
$error_exists = true;
}else{
$this->getUser()->setAttribute('captcha_off', true);
$this->getUser()->setAttribute('badscore', false);
}
}
}
return !$error_exists;
}
}
/**
* Uchwyt do walidatora edycji hasła.
*/
public function handleErrorAddToList()
{
$this->smarty = new stSmarty($this->getModuleName());
$this->config = stConfig::getInstance($this->getContext(), 'stSecurityBackend');
return $this->forward('stNewsletterFrontend', 'index');
}
public function executeAdd()
{
$this->smarty = new stSmarty($this->getModuleName());
return $this->forward('stNewsletterFrontend', 'index');
}
/**
* Uchwyt do walidatora edycji hasła.
*/
public function handleErrorAdd()
{
$this->smarty = new stSmarty($this->getModuleName());
return $this->forward('stNewsletterFrontend', 'index');
}
public function executeConfirm()
{
$this->smarty = new stSmarty($this->getModuleName());
$this->newsletter_config = stConfig::getInstance($this->getContext(), 'stNewsletterBackend');
if ($this->hasRequestParameter('confirm'))
{
$c = new Criteria();
$c->add(NewsletterUserPeer::ID, $this->getRequestParameter('id'));
$newsletterUser = NewsletterUserPeer::doSelectOne($c);
if ($newsletterUser)
{
if ($newsletterUser->getHash() == $this->getRequestParameter('hash_code'))
{
$newsletterUser->setConfirm(1);
$newsletterUser->save();
$this->newsletterUser = $newsletterUser;
if($this->newsletter_config->get('register_message_on')){
$this->sendAfterRegisterMail($newsletterUser);
}
}
else
{
$this->redirect("stNewsletterFrontend/index");
}
}
else
{
$this->redirect("stNewsletterFrontend/index");
}
}
else
{
$this->redirect("stNewsletterFrontend/index");
}
}
public function executeRemove()
{
$this->smarty = new stSmarty($this->getModuleName());
if ($this->hasRequestParameter('remove'))
{
$c = new Criteria();
$c->add(NewsletterUserPeer::ID, $this->getRequestParameter('id'));
$newsletterUser = NewsletterUserPeer::doSelectOne($c);
if ($newsletterUser)
{
if ($newsletterUser->getHash() == $this->getRequestParameter('hash_code'))
{
$c = new Criteria();
$c->add(NewsletterUserPeer::ID, $this->getRequestParameter('id'));
NewsletterUserPeer::doDelete($c);
$this->newsletterUser = $newsletterUser;
}
else
{
$this->redirect("stNewsletterFrontend/index");
}
}
else
{
$this->redirect("stNewsletterFrontend/index");
}
}
else
{
$this->redirect("stNewsletterFrontend/index?ff=1");
}
}
public function executeNewsletterList()
{
$this->smarty = new stSmarty($this->getModuleName());
if(!$this->getUser()->isAuthenticated())
{
$this->redirect('stNewsletterFrontend/index');
}
else
{
$newsletter_config = stConfig::getInstance($this->getContext(), 'stNewsletterBackend');
if($newsletter_config->get('newsletter_enabled')==0){
$this->redirect("/");
}
$user = sfContext::getInstance()->getUser()->getGuardUser();
$c = new Criteria();
$c->add(sfGuardUserPeer::ID, $user->getId());
$user = sfGuardUserPeer::doSelectOne($c);
$c = new Criteria();
$c->add(NewsletterUserPeer::SF_GUARD_USER_ID, $user->getId());
$newsletterUser = NewsletterUserPeer::doSelectOne($c);
if ($newsletterUser)
{
if ($this->getRequestParameter('newsletter[email]'))
{
$this->newsletterUserEmail = $this->getRequestParameter('newsletter[email]');
}
else
{
$this->newsletterUserEmail = $user->getUsername();
}
$this->newsletterUser = $newsletterUser;
$c = new Criteria();
$c->add(NewsletterGroupPeer::IS_PUBLIC, 1);
$newsletterGroup = NewsletterGroupPeer::doSelect($c);
foreach ($newsletterGroup as $group)
{
$c = new Criteria();
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletterUser->getId());
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID, $group->getId());
$NewsletterUserHasNewsletterGroup = NewsletterUserHasNewsletterGroupPeer::doSelectOne($c);
if ($NewsletterUserHasNewsletterGroup)
{
$group->setIsDefault(1);
}
else
{
$group->setIsDefault(0);
}
}
$this->userEmail = $newsletterUser->getEmail();
$this->newsletterGroup = $newsletterGroup;
$this->newUser = 0;
}
else
{
if ($this->getRequestParameter('newsletter[email]'))
{
$this->newsletterUserEmail = $this->getRequestParameter('newsletter[email]');
}
else
{
$this->newsletterUserEmail = $user->getUsername();
}
$c = new Criteria();
$c->add(NewsletterGroupPeer::IS_PUBLIC, 1);
$newsletterGroup = NewsletterGroupPeer::doSelect($c);
foreach ($newsletterGroup as $group)
{
$group->setIsDefault(0);
}
$this->newsletterGroup = $newsletterGroup;
$this->newUser = 1;
}
if ($this->getRequestParameter('update') == 1)
{
$this->update = 1;
}
else
{
$this->update = 0;
}
}
}
public function executeAddLoginUserToNewsletter()
{
$this->smarty = new stSmarty($this->getModuleName());
if(!$this->getUser()->isAuthenticated())
{
$this->redirect("stNewsletterFrontend/add");
}
if ($this->getRequestParameter('newsletter[new_user]') == 1)
{
$c = new Criteria();
$c->add(sfGuardUserPeer::USERNAME, $this->getRequestParameter('newsletter[email]'));
$user = sfGuardUserPeer::doSelectOne($c);
if($user)
{
$user_id = $user->getId();
}
else
{
$user_id = $this->getUser()->getAttribute('user_id', null, 'sfGuardSecurityUser');
}
$newsletterUser = new NewsletterUser();
$newsletterUser->setEmail($this->getRequestParameter("newsletter[email]"));
$newsletterUser->setUserId($user_id);
$newsletterUser->setActive(1);
$newsletterUser->setConfirm(1);
$newsletterUser->save();
}
else
{
$c = new Criteria();
$c->add(NewsletterUserPeer::SF_GUARD_USER_ID, $this->getUser()->getAttribute('user_id', null, 'sfGuardSecurityUser'));
$newsletterUser = NewsletterUserPeer::doSelectOne($c);
if ($this->getRequestParameter("newsletter[email]") != "")
{
$c = new Criteria();
$c->add(sfGuardUserPeer::ID, $this->getUser()->getAttribute('user_id', null, 'sfGuardSecurityUser'));
$user = sfGuardUserPeer::doSelectOne($c);
$newsletterUser->setEmail($this->getRequestParameter("newsletter[email]"));
$newsletterUser->save();
}
}
$newsletter_user_id = $newsletterUser->getId();
if ($this->getRequestParameter('newsletter[new_user]') != 1)
{
$c = new Criteria();
$c->addJoin(NewsletterGroupPeer::ID, NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID);
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletterUser->getId());
NewsletterUserHasNewsletterGroupPeer::doDelete($c);
}
$checkedGroup = $this->getRequestParameter('newsletter[group]');
if ($checkedGroup)
{
foreach ($checkedGroup as $key => $value)
{
$c = new Criteria();
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletter_user_id);
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID, $key);
NewsletterUserHasNewsletterGroupPeer::doInsert($c);
}
}else{
$c = new Criteria();
$c->add(NewsletterUserPeer::ID, $newsletter_user_id);
NewsletterUserPeer::doDelete($c);
}
$c = new Criteria();
if (!$this->getRequestParameter('newsletter[group]'))
{
$c->add(NewsletterGroupPeer::IS_PUBLIC, 1);
}
else
{
$c->add(NewsletterGroupPeer::IS_PUBLIC, 0);
}
$c->add(NewsletterGroupPeer::IS_DEFAULT, 1);
$defaultNewsletterGroup = NewsletterGroupPeer::doSelect($c);
if ($defaultNewsletterGroup)
{
foreach ($defaultNewsletterGroup as $group)
{
$c = new Criteria();
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletter_user_id);
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID, $group->getId());
NewsletterUserHasNewsletterGroupPeer::doInsert($c);
}
}
$c = new Criteria();
$c->add(sfGuardUserPeer::ID, $this->getUser()->getAttribute('user_id', null, 'sfGuardSecurityUser'));
$user = sfGuardUserPeer::doSelectOne($c);
if ($this->getRequestParameter("newsletter[email]") != $user->getUsername())
{
$c = new Criteria();
$c->addJoin(NewsletterGroupPeer::ID, NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_GROUP_ID);
$c->add(NewsletterUserHasNewsletterGroupPeer::NEWSLETTER_USER_ID, $newsletterUser->getId());
$c->add(NewsletterGroupPeer::IS_PUBLIC, 1);
$choseGroup = NewsletterGroupPeer::doSelect($c);
$newsletterUser->setConfirm(0);
$newsletterUser->save();
$this->SendMail($newsletterUser, $choseGroup, $newsletterUser->getHash());
}
else
{
$newsletterUser->setConfirm(1);
$newsletterUser->save();
}
$this->redirect("stNewsletterFrontend/newsletterList?update=1");
}
/**
* Uchwyt do walidatora dodania użytkownika do newslettera.
*/
public function handleErrorAddLoginUserToNewsletter()
{
$this->smarty = new stSmarty($this->getModuleName());
return $this->forward('stNewsletterFrontend', 'newsletterList');
}
public function validateAddLoginUserToNewsletter()
{
$error_exists = false;
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$i18n = $this->getContext()->getI18N();
if ($this->getRequestParameter('newsletter[new_user]') == 1 && $this->getRequestParameter('newsletter[email]') == "")
{
$this->getRequest()->setError('newsletter{email}', "Brak adresu e-mail.");
$error_exists = true;
}
if($this->getRequestParameter('newsletter[privacy]')!=1)
{
$this->getRequest()->setError('error_privacy', 1);
$error_exists = true;
}
if ($this->getRequestParameter('newsletter[new_user]') == 1)
{
$c = new Criteria();
$c->add(NewsletterUserPeer::EMAIL, $this->getRequestParameter('newsletter[email]'));
$newsletterUser = NewsletterUserPeer::doSelectOne($c);
if ($newsletterUser)
{
$this->getRequest()->setError('newsletter{email}', "Taki użytkownik już istnieje.");
$error_exists = true;
}
}
}
return!$error_exists;
}
public function executeShowMessage()
{
$this->smarty = new stSmarty('stNewsletterFrontend');
if ($this->getRequest()->getMethod() == sfRequest::GET) {
$i18n = $this->getContext()->getI18N();
if ($this->getRequestParameter('hash')) {
$c = new Criteria();
$c->add(NewsletterMessagePeer::HASH, $this->getRequestParameter('hash'));
$newsletterMessage = NewsletterMessagePeer::doSelectOne($c);
if (!$newsletterMessage) {
$c = new Criteria();
$c->add(NewsletterDraftMessagePeer::HASH, $this->getRequestParameter('hash'));
$newsletterMessage = NewsletterDraftMessagePeer::doSelectOne($c);
$templates = stNewsletter::getTemplatesMessage($newsletterMessage, true, true);
}else{
$templates = stNewsletter::getTemplatesMessage($newsletterMessage, true);
}
if ($newsletterMessage) {
$this->content = $templates;
}else{
$this->getUser()->setParameter('status-404', true);
return $this->forward404();
}
}else{
$this->getUser()->setParameter('status-404', true);
return $this->forward404();
}
}else{
$this->getUser()->setParameter('status-404', true);
return $this->forward404();
}
}
public function executeCountReadMessage()
{
if ($this->getRequest()->getMethod() == sfRequest::GET) {
if ($this->getRequestParameter('hash')) {
$c = new Criteria();
$c->add(NewsletterMessagePeer::HASH, $this->getRequestParameter('hash'));
$newsletterMessage = NewsletterMessagePeer::doSelectOne($c);
if ($newsletterMessage) {
$newsletterMessage->setNumberReceived($newsletterMessage->getNumberReceived()+1);
$newsletterMessage->save();
}else{
$this->getUser()->setParameter('status-404', true);
return $this->forward404();
}
} else {
$this->getUser()->setParameter('status-404', true);
return $this->forward404();
}
}
$this->getUser()->setParameter('status-404', true);
return $this->forward404();
}
public function executeUpdateNewsletterCount()
{
$newsletter_hash = $this->getRequestParameter('newsletter_hash');
$return = $newsletter_hash;
if ($newsletter_hash){
$c = new Criteria();
$c->add(NewsletterMessagePeer::HASH, $newsletter_hash);
$newsletterMessage = NewsletterMessagePeer::doSelectOne($c);
if ($newsletterMessage){
$newsletterMessage->setNumberRead($newsletterMessage->getNumberRead()+1);
$newsletterMessage->save();
}
return $this->renderText($return);
}
}
}