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

237 lines
8.6 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 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(),'<body>') + 6;
// PositionOf<body> + 6 = Cutoff offset after '<body>'
// 6 = Length of '<body>'
$trim_off_end = (strrpos($doc->saveHTML(),'</body>')) - strlen($doc->saveHTML());
// ^ PositionOf</body> - LengthOfDocument = Relative-negative cutoff offset before '</body>'
return substr($doc->saveHTML(), $trim_off_front, $trim_off_end);
}
}