237 lines
8.6 KiB
PHP
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);
|
|
}
|
|
|
|
|
|
}
|