|
|
|
<?php
|
|
|
|
|
|
|
|
class Entry extends Model {
|
|
|
|
private $guid;
|
|
|
|
private $title;
|
|
|
|
private $author;
|
|
|
|
private $content;
|
|
|
|
private $link;
|
|
|
|
private $date;
|
|
|
|
private $is_read;
|
|
|
|
private $is_favorite;
|
|
|
|
private $feed;
|
|
|
|
|
|
|
|
public function __construct ($feed = '', $guid = '', $title = '', $author = '', $content = '',
|
|
|
|
$link = '', $pubdate = 0, $is_read = false, $is_favorite = false) {
|
|
|
|
$this->_guid ($guid);
|
|
|
|
$this->_title ($title);
|
|
|
|
$this->_author ($author);
|
|
|
|
$this->_content ($content);
|
|
|
|
$this->_link ($link);
|
|
|
|
$this->_date ($pubdate);
|
|
|
|
$this->_isRead ($is_read);
|
|
|
|
$this->_isFavorite ($is_favorite);
|
|
|
|
$this->_feed ($feed);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function id () {
|
|
|
|
return small_hash ($this->guid . Configuration::selApplication ());
|
|
|
|
}
|
|
|
|
public function guid () {
|
|
|
|
return $this->guid;
|
|
|
|
}
|
|
|
|
public function title () {
|
|
|
|
return $this->title;
|
|
|
|
}
|
|
|
|
public function author () {
|
|
|
|
return $this->author;
|
|
|
|
}
|
|
|
|
public function content () {
|
|
|
|
return $this->content;
|
|
|
|
}
|
|
|
|
public function link () {
|
|
|
|
return $this->link;
|
|
|
|
}
|
|
|
|
public function date ($raw = false) {
|
|
|
|
if ($raw) {
|
|
|
|
return $this->date;
|
|
|
|
} else {
|
|
|
|
return timestamptodate ($this->date);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public function isRead () {
|
|
|
|
return $this->is_read;
|
|
|
|
}
|
|
|
|
public function isFavorite () {
|
|
|
|
return $this->is_favorite;
|
|
|
|
}
|
|
|
|
public function feed ($object = false) {
|
|
|
|
if ($object) {
|
|
|
|
$feedDAO = new FeedDAO ();
|
|
|
|
return $feedDAO->searchById ($this->feed);
|
|
|
|
} else {
|
|
|
|
return $this->feed;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function _guid ($value) {
|
|
|
|
$this->guid = $value;
|
|
|
|
}
|
|
|
|
public function _title ($value) {
|
|
|
|
$this->title = $value;
|
|
|
|
}
|
|
|
|
public function _author ($value) {
|
|
|
|
$this->author = $value;
|
|
|
|
}
|
|
|
|
public function _content ($value) {
|
|
|
|
$this->content = $value;
|
|
|
|
}
|
|
|
|
public function _link ($value) {
|
|
|
|
$this->link = $value;
|
|
|
|
}
|
|
|
|
public function _date ($value) {
|
|
|
|
$this->date = $value;
|
|
|
|
}
|
|
|
|
public function _isRead ($value) {
|
|
|
|
$this->is_read = $value;
|
|
|
|
}
|
|
|
|
public function _isFavorite ($value) {
|
|
|
|
$this->is_favorite = $value;
|
|
|
|
}
|
|
|
|
public function _feed ($value) {
|
|
|
|
$this->feed = $value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class EntryDAO extends Model_array {
|
|
|
|
public function __construct () {
|
|
|
|
parent::__construct (PUBLIC_PATH . '/data/db/Entries.array.php');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function addEntry ($values) {
|
|
|
|
$id = $values['id'];
|
|
|
|
unset ($values['id']);
|
|
|
|
|
|
|
|
if (!isset ($this->array[$id])) {
|
|
|
|
$this->array[$id] = array ();
|
|
|
|
|
|
|
|
foreach ($values as $key => $value) {
|
|
|
|
$this->array[$id][$key] = $value;
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->writeFile ($this->array);
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function updateEntry ($id, $values) {
|
|
|
|
foreach ($values as $key => $value) {
|
|
|
|
$this->array[$id][$key] = $value;
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->writeFile($this->array);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function searchById ($id) {
|
|
|
|
$list = HelperEntry::daoToEntry ($this->array);
|
|
|
|
|
|
|
|
if (isset ($list[$id])) {
|
|
|
|
return $list[$id];
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function listEntries ($mode) {
|
|
|
|
$list = $this->array;
|
|
|
|
|
|
|
|
if (!is_array ($list)) {
|
|
|
|
$list = array ();
|
|
|
|
}
|
|
|
|
|
|
|
|
return HelperEntry::daoToEntry ($list, $mode);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function listFavorites ($mode) {
|
|
|
|
$list = $this->array;
|
|
|
|
|
|
|
|
if (!is_array ($list)) {
|
|
|
|
$list = array ();
|
|
|
|
}
|
|
|
|
|
|
|
|
return HelperEntry::daoToEntry ($list, $mode, true);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function listByCategory ($cat, $mode) {
|
|
|
|
$feedDAO = new FeedDAO ();
|
|
|
|
$feeds = $feedDAO->listByCategory ($cat);
|
|
|
|
|
|
|
|
$list = array ();
|
|
|
|
foreach ($feeds as $feed) {
|
|
|
|
foreach ($feed->entries () as $id) {
|
|
|
|
if (isset ($this->array[$id])) {
|
|
|
|
$list[$id] = $this->array[$id];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return HelperEntry::daoToEntry ($list, $mode);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function listNotReadEntries () {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public function count () {
|
|
|
|
return count ($this->array);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class HelperEntry {
|
|
|
|
public static function daoToEntry ($listDAO, $mode = 'all', $favorite = false) {
|
|
|
|
$list = array ();
|
|
|
|
|
|
|
|
if (!is_array ($listDAO)) {
|
|
|
|
$listDAO = array ($listDAO);
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($listDAO as $key => $dao) {
|
|
|
|
if (($mode != 'not_read' || !$dao['is_read'])
|
|
|
|
&& ($favorite == false || $dao['is_favorite'])) {
|
|
|
|
$list[$key] = new Entry (
|
|
|
|
$dao['feed'],
|
|
|
|
$dao['guid'],
|
|
|
|
$dao['title'],
|
|
|
|
$dao['author'],
|
|
|
|
$dao['content'],
|
|
|
|
$dao['link'],
|
|
|
|
$dao['date'],
|
|
|
|
$dao['is_read'],
|
|
|
|
$dao['is_favorite']
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $list;
|
|
|
|
}
|
|
|
|
}
|