forena-8.x-1.x-dev/src/FrxPlugin/Template/FrxEmailMerge.php

src/FrxPlugin/Template/FrxEmailMerge.php
<?php
/**
 * @file FrxEmailMerge
 * Email merge template.
 */
namespace Drupal\forena\Template;
/**
 * Email Merge Template
 *
 * @FrxTemplate(id="FrxEmailMerge", name="Email Merge")
 */
class FrxEmailMerge extends TemplateBase {
  public $templateName = 'Mail Merge';
  public $email_input_format;

  public function __construct() {
    parent::__construct();
    $this->email_input_format = \Drupal::config('forena.settings')->get('email_input_format');
    $this->doc_types = array('email');
  }

  public function scrapeConfig(\SimpleXMLElement $xml) {
    $config=array();
    $config['class'] = get_class($this);
    $config['from'] = html_entity_decode($this->extractXPathInnerHTML("*//*[@class='email-header-from']", $this->reportDocDomNode));
    $config['to']= html_entity_decode($this->extractXPathInnerHTML("*//*[@class='email-header-to']", $this->reportDocDomNode));
    $config['cc'] = html_entity_decode($this->extractXPathInnerHTML("*//*[@class='email-header-cc']", $this->reportDocDomNode));
    $config['bcc'] = html_entity_decode($this->extractXPathInnerHTML("*//*[@class='email-header-bcc']", $this->reportDocDomNode));
    $config['subject'] =  $this->extractXPathInnerHTML("*//*[@class='email-header-subject']", $this->reportDocDomNode);
    $config['body']['value'] =  $this->extractXPathInnerHTML("*//*[@class='email-body']", $this->reportDocDomNode);
    return $config;
  }

  public function configForm($config) {

    $form_ctl['from'] = array(
      '#type' => 'textfield',
      '#title' => t('From'),
      '#default_value' => @$config['from'],
    );

    $form_ctl['to'] = array(
      '#type' => 'textfield',
      '#title' => t('To'),
      '#default_value' => @$config['to'],
    );

    $form_ctl['cc'] = array(
      '#type' => 'textfield',
      '#title' => t('Cc'),
      '#default_value' => @$config['cc'],
    );

    $form_ctl['bcc'] = array(
        '#type' => 'textfield',
        '#title' => t('Bcc'),
        '#default_value' => @$config['bcc'],
    );

    $form_ctl['subject'] = array(
      '#type' => 'textfield',
      '#title' => t('Subject'),
      '#default_value' => @$config['subject'],
    );

    $form_ctl['body'] = array(
      '#type' => 'text_format',
      '#title' => t('Message'),
      "#format" => $this->email_input_format,
      '#default_value' => @$config['body']['value'],
    );
    return $form_ctl;
  }

  public function configValidate(&$config) {
    $this->validateTextFormats($config, array('body'));
  }

  public function generate() {
    $config = $this->configuration; 
    $from = @$config['from'];
    $to = @$config['to'];
    $cc = @$config['cc'];
    $bcc = @$config['bcc'];
    $subject = @$config['subject'];
    $body = @$config['body'];
    $body = $body['value'];
    $config['foreach'] = "*";
    $div = $this->blockDiv($config);
    $this->removeChildren($div);
    $doc = $this->addNode($div, 4, 'div', NULL, array('class' => 'email-document'));
    $header = $this->addNode($doc, 6, 'div', NULL, array('class' => 'email-header'));
    $table = $this->addNode($header, 8, 'table');
    $tr = $this->addNode($table, 10, 'tr');
    $td = $this->addNode($tr, 12, 'th', 'From');
    $td = $this->addNode($tr, 12, 'td', htmlentities($from), array('class' => 'email-header-from'));
    $tr = $this->addNode($table, 10, 'tr');
    $td = $this->addNode($tr, 12, 'th', 'To');
    $td = $this->addNode($tr, 12, 'td', htmlentities($to), array('class' => 'email-header-to'));
    if ($cc) {
      $tr = $this->addNode($table, 10, 'tr');
      $td = $this->addNode($tr, 12, 'th', 'Cc');
      $td = $this->addNode($tr, 12, 'td', htmlentities($cc), array('class' => 'email-header-cc'));
    }
    if ($bcc) {
      $tr = $this->addNode($table, 10, 'tr');
      $td = $this->addNode($tr, 12, 'th', 'Bcc');
      $td = $this->addNode($tr, 12, 'td', htmlentities($bcc), array('class' => 'email-header-bcc'));
    }

    $tr = $this->addNode($table, 10, 'tr');
    $td = $this->addNode($tr, 12, 'th', 'Subject');
    $td = $this->addNode($tr, 12, 'td', $subject, array('class' => 'email-header-subject'));
    $email_body = $this->addNode($doc, 6, 'div', NULL, array('class' => 'email-body'));
    $p = $this->addFragment($email_body, $body);
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc