public function stopRestartNewsletter(&$context) { if (substr($_POST['action']['save'], 0, 12) == 'enm-restart:') { $vars = explode(":", $_POST['action']['save']); $field_id = $vars[1]; $entry_id = $context['entry']->get('id'); $data = $this->_getEntryData($field_id, $entry_id); if (!empty($data)) { try { $newsletter = EmailNewsletterManager::create($data['newsletter_id']); $array = array('template' => is_object($newsletter->getTemplate()) ? $newsletter->getTemplate()->getHandle() : NULL, 'sender' => is_object($newsletter->getSender()) ? $newsletter->getSender()->getHandle() : NULL, 'recipients' => implode(', ', $newsletter->getRecipientGroups(false, true))); $news = EmailNewsletterManager::save($array); $context['entry']->setData($field_id, array('author_id' => Administration::instance()->Author->get('id'), 'entry_id' => $entry_id, 'newsletter_id' => $news->getId())); //$news->start(); } catch (Exception $e) { Administration::instance()->customError(__('Error restarting email newsletter'), __($e->getMessage())); } } } if (substr($_POST['action']['save'], 0, 9) == 'enm-stop:') { $vars = explode(":", $_POST['action']['save']); $field_id = $vars[1]; $entry_id = $context['entry']->get('id'); $data = $this->_getEntryData($field_id, $entry_id); if (!empty($data)) { try { $newsletter = EmailNewsletterManager::create($data['newsletter_id']); $newsletter->stop(); } catch (Exception $e) { Administration::instance()->customError(__('Error stopping email newsletter'), __($e->getMessage())); } } } if (substr($_POST['action']['save'], 0, 10) == 'enm-pause:') { $vars = explode(":", $_POST['action']['save']); $field_id = $vars[1]; $entry_id = $context['entry']->get('id'); $data = $this->_getEntryData($field_id, $entry_id); if (!empty($data)) { try { $newsletter = EmailNewsletterManager::create($data['newsletter_id']); $newsletter->pause(); } catch (Exception $e) { Administration::instance()->customError(__('Error pausing email newsletter'), __($e->getMessage())); } } } }
/** * Prepares field values for database. */ public function processRawFieldData($data, &$status, &$message = NULL, $simulate = false, $entry_id = NULL) { $status = self::__OK__; if (empty($data)) { return NULL; } $entry_data = array(); if ($entry_id) { // grab existing entry data $entry_data = Symphony::Database()->fetchRow(0, sprintf("SELECT *\n\t\t\t\t\t FROM `tbl_entries_data_%d`\n\t\t\t\t\t WHERE `entry_id` = %d\n\t\t\t\t\t LIMIT 1", $this->get('id'), $entry_id)); } if (!is_array($data['recipient_groups'])) { $data['recipient_groups'] = array(); } // Prevent DOM hacking: When saving newsletter data, we __must__ // check if properties are valid (i.e. configured in the section // editor); otherwise it would be super-simple to send with // unwanted or invalid properties; $template = NULL; if (in_array($data['template'], explode(',', $this->get('templates')))) { $template = $data['template']; } $sender = NULL; if (in_array($data['sender'], explode(',', $this->get('senders')))) { $sender = $data['sender']; } $recipient_groups = array(); foreach ($data['recipient_groups'] as $group) { if (in_array($group, explode(',', $this->get('recipient_groups')))) { $recipient_groups[] = $group; } } // save $author_id = 0; if (Symphony::Engine() instanceof Administration) { $author_id = Administration::instance()->Author->get('id'); } elseif (Symphony::Engine() instanceof Frontend && Symphony::ExtensionManager()->fetchStatus('members') == EXTENSION_ENABLED) { $Members = Symphony::ExtensionManager()->create('members'); $author_id = $Members->getMemberDriver()->getMemberID(); } $newsletter = EmailNewsletterManager::save(array('id' => $entry_data['newsletter_id'], 'template' => $template, 'recipients' => implode(', ', $recipient_groups), 'sender' => $sender, 'pseudo_root' => URL)); $result = array('author_id' => $author_id, 'newsletter_id' => $newsletter->getId()); return $result; }