miniflux-legacy/vendor/fguillot/picofeed/lib/PicoFeed/Syndication/ItemBuilder.php

210 lines
3.4 KiB
PHP

<?php
namespace PicoFeed\Syndication;
use DateTime;
use DOMElement;
/**
* Class ItemBuilder
*
* @package PicoFeed\Syndication
* @author Frederic Guillot
*/
abstract class ItemBuilder
{
/**
* @var string
*/
protected $itemTitle;
/**
* @var string
*/
protected $itemId;
/**
* @var string
*/
protected $itemSummary;
/**
* @var string
*/
protected $authorName;
/**
* @var string
*/
protected $authorEmail;
/**
* @var string
*/
protected $authorUrl;
/**
* @var DateTime
*/
protected $itemPublishedDate;
/**
* @var DateTime
*/
protected $itemUpdatedDate;
/**
* @var string
*/
protected $itemContent;
/**
* @var string
*/
protected $itemUrl;
/**
* @var FeedBuilder
*/
protected $feedBuilder;
/**
* Constructor
*
* @param FeedBuilder $feedBuilder
*/
public function __construct(FeedBuilder $feedBuilder)
{
$this->feedBuilder = $feedBuilder;
}
/**
* Get new object instance
*
* @access public
* @param FeedBuilder $feedBuilder
* @return static
*/
public static function create(FeedBuilder $feedBuilder)
{
return new static($feedBuilder);
}
/**
* Add item title
*
* @access public
* @param string $title
* @return $this
*/
public function withTitle($title)
{
$this->itemTitle = $title;
return $this;
}
/**
* Add item id
*
* @access public
* @param string $id
* @return $this
*/
public function withId($id)
{
$this->itemId = $id;
return $this;
}
/**
* Add item url
*
* @access public
* @param string $url
* @return $this
*/
public function withUrl($url)
{
$this->itemUrl = $url;
return $this;
}
/**
* Add item summary
*
* @access public
* @param string $summary
* @return $this
*/
public function withSummary($summary)
{
$this->itemSummary = $summary;
return $this;
}
/**
* Add item content
*
* @access public
* @param string $content
* @return $this
*/
public function withContent($content)
{
$this->itemContent = $content;
return $this;
}
/**
* Add item updated date
*
* @access public
* @param DateTime $date
* @return $this
*/
public function withUpdatedDate(DateTime $date)
{
$this->itemUpdatedDate = $date;
return $this;
}
/**
* Add item published date
*
* @access public
* @param DateTime $date
* @return $this
*/
public function withPublishedDate(DateTime $date)
{
$this->itemPublishedDate = $date;
return $this;
}
/**
* Add item author
*
* @access public
* @param string $name
* @param string $email
* @param string $url
* @return $this
*/
public function withAuthor($name, $email = '', $url ='')
{
$this->authorName = $name;
$this->authorEmail = $email;
$this->authorUrl = $url;
return $this;
}
/**
* Build item
*
* @abstract
* @access public
* @return DOMElement
*/
abstract public function build();
}