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

282 lines
10 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 13778 2011-06-21 12:01:22Z bartek $
* @author Bartosz Alejski <bartosz.alejski@sote.pl>
*/
/**
* Klasa stNewsletterFrontendActions.
*
* @package stNewsletterPlugin
* @subpackage actions
*/
class stNewsletterBackendActions extends autoStNewsletterBackendActions {
public function executeSaveAndSendConfirm() {
$this -> forward('stNewsletterBackend', 'edit');
}
public function executeNewsletterSend() {
$newsletter = NewsletterMessagePeer::retrieveByPK($this -> getRequestParameter('id'));
$this->count = $newsletter->countUsers(new Criteria());
$newsletter->countGmailUsers(new Criteria(),$this -> getRequestParameter('id'));
stNewsletterProgressBar::setParam('id', $newsletter->getId());
}
public function executeSaveAndSend() {
return $this->forward('stNewsletterBackend', 'edit');
}
public function executeEditMessage()
{
$message_id = $this->getRequestParameter('id');
$message_draft_id = $this->getRequestParameter('draft_id');
$c = new Criteria();
$c->add(NewsletterDraftMessagePeer::ID, $message_draft_id);
$newsletterDraftMessage = NewsletterDraftMessagePeer::doSelectOne($c);
if ($newsletterDraftMessage) {
$c = new Criteria();
$c->add(NewsletterMessagePeer::ID, $message_id);
NewsletterMessagePeer::doDelete($c);
return $this -> redirect('stNewsletterDraftMessageBackend/edit?id=' . $message_draft_id);
} else{
$i18n = $this->getContext()->getI18n();
$this->setFlash('error', $i18n->__('Nie można edytować tej wiadomości.'));
return $this -> redirect('stNewsletterBackend/edit?id='. $message_id);
}
}
protected function saveNewsletterMessage($newsletter_message) {
if ($this -> hasRequestParameter('create_copy')) {
$newsletter_draft_message = new NewsletterDraftMessage();
$newsletter_draft_message->setCulture($this->getRequestParameter('culture'));
$newsletter_draft_message->setMainImage($newsletter_message->getMainImage());
$newsletter_draft_message->setMainImageUrl($newsletter_message->getMainImageUrl());
$newsletter_draft_message->setSubject($newsletter_message->getSubject());
$newsletter_draft_message->setContent($newsletter_message->getContent());
$newsletter_draft_message->setCtaButtonName($newsletter_message->getCtaButtonName());
$newsletter_draft_message->setCtaButtonUrl($newsletter_message->getCtaButtonUrl());
$newsletter_draft_message->setCtaButtonPosition($newsletter_message->getCtaButtonPosition());
$newsletter_draft_message->setCtaDescriptionHead($newsletter_message->getCtaDescriptionHead());
$newsletter_draft_message->setCtaDescriptionFoot($newsletter_message->getCtaDescriptionFoot());
$newsletter_draft_message->setRecommendsName($newsletter_message->getRecommendsName());
$newsletter_draft_message->setProductsName($newsletter_message->getProductsName());
$hash = md5(microtime());
$newsletter_draft_message->setHash($hash);
$newsletter_draft_message -> save();
$c = new Criteria();
$c->add(NewsletterMessageHasProductPeer::NEWSLETTER_MESSAGE_ID, $newsletter_message->getId());
$c->addJoin(ProductPeer::ID, NewsletterMessageHasProductPeer::PRODUCT_ID);
$c->addAscendingOrderByColumn(NewsletterMessageHasProductPeer::ID);
$products = ProductPeer::doSelect($c);
foreach ($products as $token_product) {
$nmhp = new NewsletterDraftMessageHasProduct();
$nmhp->setNewsletterDraftMessageId($newsletter_draft_message->getId());
$nmhp->setProductId($token_product->getId());
$nmhp->save();
}
$c = new Criteria();
$c->add(NewsletterMessageHasBlogPeer::NEWSLETTER_MESSAGE_ID, $newsletter_message->getId());
$c->addJoin(BlogPeer::ID, NewsletterMessageHasBlogPeer::BLOG_ID);
$c->addAscendingOrderByColumn(NewsletterMessageHasBlogPeer::ID);
$recommends = BlogPeer::doSelect($c);
foreach ($recommends as $token_blog) {
$nmhb = new NewsletterDraftMessageHasBlog();
$nmhb->setNewsletterDraftMessageId($newsletter_draft_message->getId());
$nmhb->setBlogId($token_blog->getId());
$nmhb->save();
}
return $this -> redirect('stNewsletterDraftMessageBackend/edit?id=' . $newsletter_draft_message -> getId());
}
parent::saveNewsletterMessage($newsletter_message);
if (!$newsletter_message->getHash()) {
$hash = md5(microtime());
$newsletter_message->setHash($hash);
$newsletter_message -> save();
}
$c = new Criteria();
$c -> add(NewsletterMessageHasNewsletterGroupPeer::NEWSLETTER_MESSAGE_ID, $newsletter_message -> getId());
BasePeer::doDelete($c, Propel::getConnection());
$newsletter_group = $this -> getRequestParameter('newsletter_message[newsletter_group]');
foreach ($newsletter_group as $id) {
$ng = new NewsletterMessageHasNewsletterGroup();
$ng -> setNewsletterGroupId($id);
$ng -> setNewsletterMessageId($newsletter_message -> getId());
$ng -> save();
}
if ($this -> hasRequestParameter('save_and_send')) {
return $this -> redirect('stNewsletterBackend/newsletterSend?id=' . $newsletter_message -> getId());
}
}
protected function updateConfigFromRequest() {
parent::updateConfigFromRequest();
$config = $this -> getRequestParameter('config');
$this -> config -> set('newsletter_enabled', $config['newsletter_enabled'], false);
$this -> config -> set('newsletter_on', $config['newsletter_on'], false);
$this -> config -> set('newsletter_default_culture', $config['newsletter_default_culture'], false);
$this -> config -> set('templates_responsive', $config['templates_responsive'], false);
$this -> config -> set('register_message_on', $config['register_message_on'], false);
$this -> config -> set('register_message_title', $config['register_message_title'], true);
$this -> config -> set('register_message_templates', $config['register_message_templates'], true);
$this -> config -> set('register_text_title', $config['register_text_title'], true);
$this -> config -> set('register_text_description', $config['register_text_description'], true);
$this -> config -> set('register_text_under_register', $config['register_text_under_register'], true);
$this -> config -> set('register_text_widget_title', $config['register_text_widget_title'], true);
$this -> config -> set('register_text_widget_description', $config['register_text_widget_description'], true);
$this -> config -> set('template_color_header', $config['template_color_header'], false);
$this -> config -> set('template_color_background_a', $config['template_color_background_a'], false);
$this -> config -> set('template_color_background_b', $config['template_color_background_b'], false);
$this -> config -> set('template_color_background_font', $config['template_color_background_font'], false);
$this -> config -> set('template_color_font_a', $config['template_color_font_a'], false);
$this -> config -> set('template_color_font_b', $config['template_color_font_b'], false);
$this -> config -> set('template_color_font_c', $config['template_color_font_c'], false);
$this -> config -> set('template_show_subject', $config['template_show_subject'], false);
$this -> config -> set('template_cta_font', $config['template_cta_font'], false);
$this -> config -> set('template_cta_background', $config['template_cta_background'], false);
}
protected function saveConfig()
{
parent::saveConfig();
WebpagePeer::clearCache();
stFastCacheManager::clearCache();
}
protected function addFiltersCriteria($c)
{
if ($this->forward_parameters['send']==0) {
unset($this->filters['sent_at']);
}else{
unset($this->filters['created_at']);
}
parent::addFiltersCriteria($c);
if ($this->forward_parameters['send'] && (!isset($this->filters['sent_at']['from']) || "" === $this->filters['sent_at']['from']) && (!isset($this->filters['sent_at']['to']) || "" === $this->filters['sent_at']['to'])) {
$c->add(NewsletterMessagePeer::SENT_AT, null, Criteria::ISNOTNULL);
}
elseif (!$this->forward_parameters['send'])
{
$c->add(NewsletterMessagePeer::SENT_AT, null, Criteria::ISNULL);
}
}
protected function newsletterTemplateMail($params)
{
$this->config = $params['config'];
}
}