/** * Append element to datasource output */ public function appendFormattedElement(&$wrapper, $data, $encode = false) { $node = new XMLElement($this->get('element_name')); $newsletter = EmailNewsletterManager::create($data['newsletter_id']); $properties = $newsletter->getStats(); $node->setAttribute('newsletter-id', $data['newsletter_id']); $node->setAttribute('started-on', $properties['started_on']); $node->setAttribute('started-by', $properties['started_by']); $node->setAttribute('completed-on', $properties['completed_on']); $node->setAttribute('status', $properties['status']); $node->setAttribute('total', $properties['total']); $node->setAttribute('sent', $properties['sent']); $node->setAttribute('failed', $properties['failed']); $node->appendChild(new XMLElement('subject', $newsletter->getTemplate()->subject)); // load configuration; // use saved (entry) config XML if available (i.e.: if the email newsletter has been sent); // fallback: the field's configuration XML // sender $sender = new XMLElement('sender'); $about = is_object($newsletter->getSender()) ? $newsletter->getSender()->about() : array(); General::array_to_xml($sender, $about); $sender_name = $about['name']; $sender_handle = is_object($newsletter->getSender()) ? $newsletter->getSender()->getHandle() : NULL; $el = new XMLElement('name'); $el->setAttribute('id', $sender_handle); $el->setValue($sender_name); $sender->replaceChildAt(0, $el); $node->appendChild($sender); // recipients $recipients = new XMLElement('recipient-groups'); foreach ($newsletter->getRecipientGroups() as $group) { $rgroup = new XMLElement('group'); $about = (array) $group->about(); General::array_to_xml($rgroup, $about); $rgroup_name = $about['name']; $rgroup_handle = $group->getHandle(); $el = new XMLElement('name'); $el->setAttribute('id', $rgroup_handle); $el->setValue($rgroup_name); $rgroup->replaceChildAt(0, $el); $rgroup_count = RecipientgroupManager::create($rgroup_handle)->getCount(); $rgroup->setAttribute('count', $rgroup_count); $recipients->appendChild($rgroup); } $node->appendChild($recipients); // template $template = new XMLElement('template'); $about = (array) $newsletter->getTemplate()->about; General::array_to_xml($template, $about); $template_name = $about['name']; $template_handle = EmailTemplateManager::getHandleFromName($template_name); $el = new XMLElement('name'); $el->setAttribute('id', $template_handle); $el->setValue($template_name); $template->replaceChildAt(0, $el); $node->appendChild($template); $wrapper->appendChild($node); }
public function getTemplate() { $tmpl = Symphony::Database()->fetchCol('template', 'SELECT template from tbl_email_newsletters where id = \'' . $this->getId() . '\''); try { $template = EmailTemplateManager::load($tmpl[0]); } catch (Exception $e) { } return $template; }
public static function fetchEmailTemplates() { $options = array(); $handles = Symphony::ExtensionManager()->listInstalledHandles(); // Email Template Filter // @link http://getsymphony.com/download/extensions/view/20743/ try { if (in_array('emailtemplatefilter', $handles)) { $driver = Symphony::ExtensionManager()->getInstance('emailtemplatefilter'); if ($driver instanceof Extension) { $templates = $driver->getTemplates(); $g = array('label' => __('Email Template Filter')); $group_options = array(); foreach ($templates as $template) { $group_options[] = array('etf-' . $template['id'], false, $template['name']); } $g['options'] = $group_options; if (!empty($g['options'])) { $options[] = $g; } } } } catch (Exception $ex) { } // Email Template Manager // @link http://getsymphony.com/download/extensions/view/64322/ try { if (in_array('email_template_manager', $handles)) { if (file_exists(EXTENSIONS . '/email_template_manager/lib/class.emailtemplatemanager.php') && !class_exists("EmailTemplateManager")) { include_once EXTENSIONS . '/email_template_manager/lib/class.emailtemplatemanager.php'; } if (class_exists("EmailTemplateManager")) { $templates = EmailTemplateManager::listAll(); $g = array('label' => __('Email Template Manager')); $group_options = array(); foreach ($templates as $template) { $group_options[] = array('etm-' . $template->getHandle(), false, $template->getName()); } $g['options'] = $group_options; if (!empty($g['options'])) { $options[] = $g; } } } } catch (Exception $ex) { } return $options; }