Rss20ItemBuilder.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace PicoFeed\Syndication;
  3. use DOMElement;
  4. /**
  5. * Rss20 Item Builder
  6. *
  7. * @package PicoFeed\Syndication
  8. * @author Frederic Guillot
  9. */
  10. class Rss20ItemBuilder extends ItemBuilder
  11. {
  12. /**
  13. * @var DOMElement
  14. */
  15. protected $itemElement;
  16. /**
  17. * @var Rss20Helper
  18. */
  19. protected $helper;
  20. /**
  21. * Build item
  22. *
  23. * @access public
  24. * @return DOMElement
  25. */
  26. public function build()
  27. {
  28. $this->itemElement = $this->feedBuilder->getDocument()->createElement('item');
  29. $this->helper = new Rss20Helper($this->feedBuilder->getDocument());
  30. if (!empty($this->itemId)) {
  31. $guid = $this->feedBuilder->getDocument()->createElement('guid');
  32. $guid->setAttribute('isPermaLink', 'false');
  33. $guid->appendChild($this->feedBuilder->getDocument()->createTextNode($this->itemId));
  34. $this->itemElement->appendChild($guid);
  35. } else {
  36. $guid = $this->feedBuilder->getDocument()->createElement('guid');
  37. $guid->setAttribute('isPermaLink', 'true');
  38. $guid->appendChild($this->feedBuilder->getDocument()->createTextNode($this->itemUrl));
  39. $this->itemElement->appendChild($guid);
  40. }
  41. $this->helper
  42. ->buildTitle($this->itemElement, $this->itemTitle)
  43. ->buildLink($this->itemElement, $this->itemUrl)
  44. ->buildDate($this->itemElement, $this->itemPublishedDate)
  45. ->buildAuthor($this->itemElement, 'author', $this->authorName, $this->authorEmail)
  46. ;
  47. if (!empty($this->itemSummary)) {
  48. $this->helper->buildNode($this->itemElement, 'description', $this->itemSummary);
  49. }
  50. if (!empty($this->itemContent)) {
  51. $node = $this->feedBuilder->getDocument()->createElement('content:encoded');
  52. $node->appendChild($this->feedBuilder->getDocument()->createCDATASection($this->itemContent));
  53. $this->itemElement->appendChild($node);
  54. }
  55. return $this->itemElement;
  56. }
  57. }