*/ /** * 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); } } }