/**
  * 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;
 }
Exemplo n.º 3
0
 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;
 }