Пример #1
0
 /**
  * Perform a full mail-merge, substituting multiple tokens for multiple
  * contacts in multiple messages.
  */
 public function testFull()
 {
     $p = new TokenProcessor($this->dispatcher, array('controller' => __CLASS__));
     $p->addMessage('greeting_html', 'Good morning, <p>{contact.display_name}</p>. {custom.foobar} Bye!', 'text/html');
     $p->addMessage('greeting_text', 'Good morning, {contact.display_name}. {custom.foobar} Bye!', 'text/plain');
     $p->addRow()->context(array('contact_id' => 123))->format('text/plain')->tokens(array('contact' => array('display_name' => 'What')));
     $p->addRow()->context(array('contact_id' => 4))->format('text/plain')->tokens(array('contact' => array('display_name' => 'Who')));
     $p->addRow()->context(array('contact_id' => 10))->format('text/plain')->tokens(array('contact' => array('display_name' => 'Darth Vader')));
     $expectHtml = array(0 => 'Good morning, <p>What</p>. #0123 is a good number. Trickster {contact.display_name}. Bye!', 1 => 'Good morning, <p>Who</p>. #0004 is a good number. Trickster {contact.display_name}. Bye!', 2 => 'Good morning, <p>Darth Vader</p>. #0010 is a good number. Trickster {contact.display_name}. Bye!');
     $expectText = array(0 => 'Good morning, What. #0123 is a good number. Trickster {contact.display_name}. Bye!', 1 => 'Good morning, Who. #0004 is a good number. Trickster {contact.display_name}. Bye!', 2 => 'Good morning, Darth Vader. #0010 is a good number. Trickster {contact.display_name}. Bye!');
     $rowCount = 0;
     foreach ($p->evaluate()->getRows() as $key => $row) {
         /** @var TokenRow */
         $this->assertTrue($row instanceof TokenRow);
         $this->assertEquals($expectHtml[$key], $row->render('greeting_html'));
         $this->assertEquals($expectText[$key], $row->render('greeting_text'));
         $rowCount++;
     }
     $this->assertEquals(3, $rowCount);
     $this->assertEquals(0, $this->counts['onListTokens']);
     // This may change in the future.
     $this->assertEquals(1, $this->counts['onEvalTokens']);
 }
Пример #2
0
 /**
  * Render a message.
  *
  * @param string $name
  *   The name previously registered with TokenProcessor::addMessage.
  * @return string
  *   Fully rendered message, with tokens merged.
  */
 public function render($name)
 {
     return $this->tokenProcessor->render($name, $this);
 }