*/ /** * Klasa stNewsletterFrontendActions. * * @package stNewsletterPlugin * @subpackage actions */ class stNewsletterDraftMessageBackendActions extends autoStNewsletterDraftMessageBackendActions { protected function saveNewsletterDraftMessage($newsletter_draft_message) { $isNew = $newsletter_draft_message->isNew(); $content = $this->convertImage($newsletter_draft_message->getContent()); $newsletter_draft_message->setContent($content); if (!$newsletter_draft_message->getHash()) { $hash = md5(microtime()); $newsletter_draft_message->setHash($hash); } $newsletter_draft_message->save(); parent::saveNewsletterDraftMessage($newsletter_draft_message); $products = stJQueryToolsHelper::parseTokensFromRequest($this->getRequestParameter('newsletter_draft_message[products]')); if (!$isNew) { $c = new Criteria(); $c->add(NewsletterDraftMessageHasProductPeer::NEWSLETTER_DRAFT_MESSAGE_ID, $newsletter_draft_message->getId()); NewsletterDraftMessageHasProductPeer::doDelete($c); } foreach ($products as $token_product) { $ndmhp = new NewsletterDraftMessageHasProduct(); $ndmhp->setNewsletterDraftMessage($newsletter_draft_message); $ndmhp->setProductId($token_product['id']); $ndmhp->save(); } $recommend = stJQueryToolsHelper::parseTokensFromRequest($this->getRequestParameter('newsletter_draft_message[recommend]')); if (!$isNew) { $c = new Criteria(); $c->add(NewsletterDraftMessageHasBlogPeer::NEWSLETTER_DRAFT_MESSAGE_ID, $newsletter_draft_message->getId()); NewsletterDraftMessageHasBlogPeer::doDelete($c); } foreach ($recommend as $token_blog) { $ndmhb = new NewsletterDraftMessageHasBlog(); $ndmhb->setNewsletterDraftMessage($newsletter_draft_message); $ndmhb->setBlogId($token_blog['id']); $ndmhb->save(); } if ($this -> hasRequestParameter('save_and_test')) { $config = stConfig::getInstance(sfContext::getInstance(), 'stNewsletterBackend'); $c = new Criteria(); $c->add(MailAccountPeer::IS_NEWSLETTER, 1); $newsletterMailAccount = MailAccountPeer::doSelectOne($c); $emails = $newsletter_draft_message->getTestEmails(); $emails = explode(";",$emails); $mailer = stMailer::getInstance(); $mailer->initialize(); $html = stNewsletter::getTemplatesMessage($newsletter_draft_message, false, "draft"); $plain = "test"; foreach ($emails as $email) { try { $mailer -> addBcc($email); } catch (Swift_RfcComplianceException $e) { } if ($newsletterMailAccount) { $mailer->setSubject($newsletter_draft_message->getOptSubject())->setAccount($newsletterMailAccount->getEmail())->setHtmlMessage($html)->setPlainMessage($plain); } else { $mailer->setSubject($newsletter_draft_message->getOptSubject())->setHtmlMessage($html)->setPlainMessage($plain); } $mailer->send(); } $i18n = $this->getContext()->getI18n(); $this->setFlash('success', $i18n->__('Wiadomość został wysłana.')); } if ($this -> hasRequestParameter('save_and_forward')) { $newsletter_message = new NewsletterMessage(); $newsletter_message->setCulture($this->getRequestParameter('culture')); $newsletter_message->setNewsletterDraftMessageId($newsletter_draft_message->getId()); $newsletter_message->setMainImage($newsletter_draft_message->getMainImage()); $newsletter_message->setMainImageUrl($newsletter_draft_message->getMainImageUrl()); $newsletter_message->setSubject($newsletter_draft_message->getSubject()); $newsletter_message->setContent($newsletter_draft_message->getContent()); $newsletter_message->setCtaButtonName($newsletter_draft_message->getCtaButtonName()); $newsletter_message->setCtaButtonUrl($newsletter_draft_message->getCtaButtonUrl()); $newsletter_message->setCtaButtonPosition($newsletter_draft_message->getCtaButtonPosition()); $newsletter_message->setCtaDescriptionHead($newsletter_draft_message->getCtaDescriptionHead()); $newsletter_message->setCtaDescriptionFoot($newsletter_draft_message->getCtaDescriptionFoot()); $newsletter_message->setRecommendsName($newsletter_draft_message->getRecommendsName()); $newsletter_message->setProductsName($newsletter_draft_message->getProductsName()); $hash = md5(microtime()); $newsletter_message->setHash($hash); $newsletter_message->save(); foreach ($products as $token_product) { $nmhp = new NewsletterMessageHasProduct(); $nmhp->setNewsletterMessageId($newsletter_message->getId()); $nmhp->setProductId($token_product['id']); $nmhp->save(); } foreach ($recommend as $token_blog) { $nmhb = new NewsletterMessageHasBlog(); $nmhb->setNewsletterMessageId($newsletter_message->getId()); $nmhb->setBlogId($token_blog['id']); $nmhb->save(); } return $this->redirect('stNewsletterBackend/edit?id=' . $newsletter_message -> getId()); } } public function executeEdit() { parent::executeEdit(); if ($this->getConfigurationParameter('mode') != 'edit') { $this->hideAction('_save'); $this->hideAction('_list'); $this->hideAction('_save_and_forward'); $this->hideAction('_delete'); } } public function executeCreate() { $this->setConfigurationParameter('mode','edit', array('action' => 'edit')); return parent::executeCreate(); } public function convertImage($string) { $doc = new DOMDocument(); $doc->loadHTML(mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-8')); foreach ($doc->getElementsByTagName('img') as $img){ if ($img->getAttribute('width') > 570 ){ $img->setAttribute('style', "max-width: 100%;"); $img->removeAttribute('width'); $img->removeAttribute('height'); } } $trim_off_front = strpos($doc->saveHTML(),'') + 6; // PositionOf + 6 = Cutoff offset after '' // 6 = Length of '' $trim_off_end = (strrpos($doc->saveHTML(),'')) - strlen($doc->saveHTML()); // ^ PositionOf - LengthOfDocument = Relative-negative cutoff offset before '' return substr($doc->saveHTML(), $trim_off_front, $trim_off_end); } }