/** * Test strip html */ public function testStripHtml() { $this->assertEquals("foo\nbar", String::stripHtml('foo<br />bar')); $this->assertRegExp("/^foo\n-{3,}\nbar\$/", String::stripHtml('foo<hr noshade />bar')); $this->assertRegExp("/^foo ?bar[ \n]?\$/", String::stripHtml('foo<script type="x">xxx</script>bar<style type="y">yyy</style>')); $this->assertEquals("foo\nbar", String::stripHtml('<p>foo</p><div>bar</div>')); $this->assertEquals("foo & bar\nbaz", String::stripHtml(" foo \t & bar \n\r baz\n ")); }
/** * @return string */ public function getRepresentedTextContent() { $parts = array(); if (!empty($this->title)) { $parts[] = $this->title; } if (!empty($this->leadText)) { $parts[] = String::stripHtml($this->leadText); } if (!empty($this->metaDescription)) { $parts[] = $this->metaDescription; } return implode("\n\n", $parts) ?: null; }
/** * Set the message body * * @param null|string|\Zend\Mime\Message|\Traversable|array $body * @param bool $generateText * @param bool $alternative * @throws \Zend\Mail\Exception\InvalidArgumentException * @return \Zork\Mail\Message */ public function setBody($body, $generateText = true, $alternative = true) { static $mimeAliases = array('text' => Mime\Mime::TYPE_TEXT, 'html' => Mime\Mime::TYPE_HTML, 'alternative' => Mime\Mime::MULTIPART_ALTERNATIVE, 'mixed' => Mime\Mime::MULTIPART_MIXED, 'related' => Mime\Mime::MULTIPART_RELATED); if ($body !== null) { if (is_scalar($body)) { $body = array('text/html' => (string) $body); } if (!$body instanceof Mime\Message) { $message = new Mime\Message(); if ($body instanceof Mime\Part) { if (empty($body->charset)) { $body->charset = $this->getEncoding(); } $message->addPart($body); } else { foreach ($body as $type => $content) { if (isset($mimeAliases[$type])) { $type = $mimeAliases[$type]; } if ($content instanceof Mime\Message) { /* @var $content \Zend\Mime\Message */ if ($content->isMultiPart()) { $mime = $content->getMime(); $part = new Mime\Part($content->generateMessage(Headers::EOL)); if (!preg_match('#^multipart/#', $type)) { $type = Mime\Mime::MULTIPART_MIXED; } $part->type = $type; $part->boundary = $mime->boundary(); } else { $parts = $content->getParts(); $part = reset($parts); } } else { if ($content instanceof Mime\Part) { /* @var $content \Zend\Mime\Part */ $part = $content; } else { $part = new Mime\Part($content); $part->type = $type; $part->charset = $this->getEncoding(); } } if (empty($part->type)) { $part->type = $type; } if (empty($part->charset)) { $part->charset = $this->getEncoding(); } $message->addPart($part); } } $body = $message; } /* @var $body \Zend\Mime\Message */ $partHtml = null; $partText = null; $parts = $body->getParts(); foreach ($parts as $part) { /* @var $part \Zend\Mime\Part */ switch ($part->type) { case Mime\Mime::TYPE_HTML: $partHtml = $part; break; case Mime\Mime::TYPE_TEXT: $partText = $part; break; } } if ($generateText && empty($partText) && !empty($partHtml)) { $partText = new Mime\Part(String::stripHtml($partHtml->getContent(Headers::EOL), $this->getEncoding())); $partText->type = Mime\Mime::TYPE_TEXT; $partText->charset = $this->getEncoding(); array_unshift($parts, $partText); $body->setParts($parts); } } parent::setBody($body); if ($alternative && $body instanceof Mime\Message && $body->isMultiPart()) { $this->getHeaderByName('content-type', 'Zend\\Mail\\Header\\ContentType')->setType(Mime\Mime::MULTIPART_ALTERNATIVE)->addParameter('boundary', $body->getMime()->boundary()); } return $this; }
/** * @return string */ public function getRepresentedTextContent() { return String::stripHtml($this->getRootText()) ?: null; }
/** * @return string */ public function getRepresentedTextContent() { return empty($this->caption) ? $this->alternate : String::stripHtml($this->caption); }