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