Change item id everywhere (shorter and use less db space)
This commit is contained in:
parent
f21f2c1951
commit
0b5895733b
27
index.php
27
index.php
@ -97,7 +97,7 @@ Router\get_action('show-help', function() {
|
|||||||
// Show item without bottom nav
|
// Show item without bottom nav
|
||||||
Router\get_action('show', function() {
|
Router\get_action('show', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
$item = Model\get_item($id);
|
$item = Model\get_item($id);
|
||||||
$feed = Model\get_feed($item['feed_id']);
|
$feed = Model\get_feed($item['feed_id']);
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ Router\get_action('show', function() {
|
|||||||
// Show item with bottom nav
|
// Show item with bottom nav
|
||||||
Router\get_action('read', function() {
|
Router\get_action('read', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
$item = Model\get_item($id);
|
$item = Model\get_item($id);
|
||||||
$feed = Model\get_feed($item['feed_id']);
|
$feed = Model\get_feed($item['feed_id']);
|
||||||
$nav = Model\get_nav_item($item); // must be placed before set_item_read()
|
$nav = Model\get_nav_item($item); // must be placed before set_item_read()
|
||||||
@ -133,7 +133,7 @@ Router\get_action('read', function() {
|
|||||||
// Mark item as read and redirect to the listing page
|
// Mark item as read and redirect to the listing page
|
||||||
Router\get_action('mark-item-read', function() {
|
Router\get_action('mark-item-read', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
$redirect = Request\param('redirect', 'unread');
|
$redirect = Request\param('redirect', 'unread');
|
||||||
$offset = Request\int_param('offset', 0);
|
$offset = Request\int_param('offset', 0);
|
||||||
|
|
||||||
@ -146,7 +146,7 @@ Router\get_action('mark-item-read', function() {
|
|||||||
// Mark item as unread and redirect to the listing page
|
// Mark item as unread and redirect to the listing page
|
||||||
Router\get_action('mark-item-unread', function() {
|
Router\get_action('mark-item-unread', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
$redirect = Request\param('redirect', 'history');
|
$redirect = Request\param('redirect', 'history');
|
||||||
$offset = Request\int_param('offset', 0);
|
$offset = Request\int_param('offset', 0);
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ Router\get_action('mark-item-unread', function() {
|
|||||||
// Mark item as removed and redirect to the listing page
|
// Mark item as removed and redirect to the listing page
|
||||||
Router\get_action('mark-item-removed', function() {
|
Router\get_action('mark-item-removed', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
$redirect = Request\param('redirect', 'history');
|
$redirect = Request\param('redirect', 'history');
|
||||||
$offset = Request\int_param('offset', 0);
|
$offset = Request\int_param('offset', 0);
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ Router\get_action('mark-item-removed', function() {
|
|||||||
// Ajax call to mark item read
|
// Ajax call to mark item read
|
||||||
Router\post_action('mark-item-read', function() {
|
Router\post_action('mark-item-read', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
Model\set_item_read($id);
|
Model\set_item_read($id);
|
||||||
Response\json(array('Ok'));
|
Response\json(array('Ok'));
|
||||||
});
|
});
|
||||||
@ -181,7 +181,7 @@ Router\post_action('mark-item-read', function() {
|
|||||||
// Ajax call to mark item unread
|
// Ajax call to mark item unread
|
||||||
Router\post_action('mark-item-unread', function() {
|
Router\post_action('mark-item-unread', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
Model\set_item_unread($id);
|
Model\set_item_unread($id);
|
||||||
Response\json(array('Ok'));
|
Response\json(array('Ok'));
|
||||||
});
|
});
|
||||||
@ -190,7 +190,7 @@ Router\post_action('mark-item-unread', function() {
|
|||||||
// Ajax call to bookmark an item
|
// Ajax call to bookmark an item
|
||||||
Router\post_action('bookmark-item', function() {
|
Router\post_action('bookmark-item', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
Model\bookmark_item($id);
|
Model\bookmark_item($id);
|
||||||
Response\json(array('Ok'));
|
Response\json(array('Ok'));
|
||||||
});
|
});
|
||||||
@ -199,10 +199,10 @@ Router\post_action('bookmark-item', function() {
|
|||||||
// Ajax call change item status
|
// Ajax call change item status
|
||||||
Router\post_action('change-item-status', function() {
|
Router\post_action('change-item-status', function() {
|
||||||
|
|
||||||
$id = Model\decode_item_id(Request\param('id'));
|
$id = Request\param('id');
|
||||||
|
|
||||||
Response\json(array(
|
Response\json(array(
|
||||||
'item_id' => Model\encode_item_id($id),
|
'item_id' => $id,
|
||||||
'status' => Model\switch_item_status($id)
|
'status' => Model\switch_item_status($id)
|
||||||
));
|
));
|
||||||
});
|
});
|
||||||
@ -211,8 +211,7 @@ Router\post_action('change-item-status', function() {
|
|||||||
// Add new bookmark
|
// Add new bookmark
|
||||||
Router\get_action('bookmark', function() {
|
Router\get_action('bookmark', function() {
|
||||||
|
|
||||||
$param_id = Request\param('id');
|
$id = Request\param('id');
|
||||||
$id = Model\decode_item_id($param_id);
|
|
||||||
$redirect = Request\param('redirect', 'unread');
|
$redirect = Request\param('redirect', 'unread');
|
||||||
$offset = Request\int_param('offset', 0);
|
$offset = Request\int_param('offset', 0);
|
||||||
|
|
||||||
@ -220,11 +219,11 @@ Router\get_action('bookmark', function() {
|
|||||||
|
|
||||||
if ($redirect === 'show') {
|
if ($redirect === 'show') {
|
||||||
|
|
||||||
Response\Redirect('?action=show&id='.$param_id);
|
Response\Redirect('?action=show&id='.$id);
|
||||||
}
|
}
|
||||||
else if ($redirect === 'read') {
|
else if ($redirect === 'read') {
|
||||||
|
|
||||||
Response\Redirect('?action=read&id='.$param_id);
|
Response\Redirect('?action=read&id='.$id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Response\Redirect('?action='.$redirect.'&offset='.$offset);
|
Response\Redirect('?action='.$redirect.'&offset='.$offset);
|
||||||
|
18
model.php
18
model.php
@ -22,7 +22,7 @@ use PicoFeed\Reader;
|
|||||||
use PicoFeed\Export;
|
use PicoFeed\Export;
|
||||||
|
|
||||||
|
|
||||||
const DB_VERSION = 10;
|
const DB_VERSION = 11;
|
||||||
const HTTP_USERAGENT = 'Miniflux - http://miniflux.net';
|
const HTTP_USERAGENT = 'Miniflux - http://miniflux.net';
|
||||||
const LIMIT_ALL = -1;
|
const LIMIT_ALL = -1;
|
||||||
|
|
||||||
@ -99,18 +99,6 @@ function write_debug()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function encode_item_id($input)
|
|
||||||
{
|
|
||||||
return strtr(base64_encode($input), '+/=', '-_,');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function decode_item_id($input)
|
|
||||||
{
|
|
||||||
return base64_decode(strtr($input, '-_,', '+/='));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function export_feeds()
|
function export_feeds()
|
||||||
{
|
{
|
||||||
$opml = new Export(get_feeds());
|
$opml = new Export(get_feeds());
|
||||||
@ -530,8 +518,8 @@ function mark_items_as_read(array $items_id)
|
|||||||
{
|
{
|
||||||
\PicoTools\singleton('db')->startTransaction();
|
\PicoTools\singleton('db')->startTransaction();
|
||||||
|
|
||||||
foreach($items_id as $encoded_id) {
|
foreach ($items_id as $id) {
|
||||||
set_item_read(decode_item_id($encoded_id));
|
set_item_read($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
\PicoTools\singleton('db')->closeTransaction();
|
\PicoTools\singleton('db')->closeTransaction();
|
||||||
|
30
schema.php
30
schema.php
@ -3,6 +3,36 @@
|
|||||||
namespace Schema;
|
namespace Schema;
|
||||||
|
|
||||||
|
|
||||||
|
function version_11($pdo)
|
||||||
|
{
|
||||||
|
$rq = $pdo->prepare('
|
||||||
|
SELECT
|
||||||
|
items.id, items.url AS item_url, feeds.site_url
|
||||||
|
FROM items
|
||||||
|
LEFT JOIN feeds ON feeds.id=items.feed_id
|
||||||
|
');
|
||||||
|
|
||||||
|
$rq->execute();
|
||||||
|
|
||||||
|
$items = $rq->fetchAll(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
foreach ($items as $item) {
|
||||||
|
|
||||||
|
if ($item['id'] !== $item['item_url']) {
|
||||||
|
|
||||||
|
$id = hash('crc32b', $item['id'].$item['site_url']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
$id = hash('crc32b', $item['item_url'].$item['site_url']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$rq = $pdo->prepare('UPDATE items SET id=? WHERE id=?');
|
||||||
|
$rq->execute(array($id, $item['id']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function version_10($pdo)
|
function version_10($pdo)
|
||||||
{
|
{
|
||||||
$pdo->exec('ALTER TABLE config ADD COLUMN theme TEXT DEFAULT "original"');
|
$pdo->exec('ALTER TABLE config ADD COLUMN theme TEXT DEFAULT "original"');
|
||||||
|
@ -10,13 +10,12 @@
|
|||||||
|
|
||||||
<section class="items" id="listing">
|
<section class="items" id="listing">
|
||||||
<?php foreach ($items as $item): ?>
|
<?php foreach ($items as $item): ?>
|
||||||
<?php $item_id = Model\encode_item_id($item['id']) ?>
|
<article id="item-<?= $item['id'] ?>" data-item-id="<?= $item['id'] ?>">
|
||||||
<article id="item-<?= $item_id ?>" data-item-id="<?= $item_id ?>">
|
|
||||||
<h2>
|
<h2>
|
||||||
<a
|
<a
|
||||||
href="?action=show&id=<?= $item_id ?>"
|
href="?action=show&id=<?= $item['id'] ?>"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
id="open-<?= $item_id ?>"
|
id="open-<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= Helper\escape($item['title']) ?>
|
<?= Helper\escape($item['title']) ?>
|
||||||
</a>
|
</a>
|
||||||
@ -26,17 +25,17 @@
|
|||||||
<?= dt('%e %B %Y %k:%M', $item['updated']) ?> |
|
<?= dt('%e %B %Y %k:%M', $item['updated']) ?> |
|
||||||
|
|
||||||
<span class="hide-mobile">
|
<span class="hide-mobile">
|
||||||
<a href="?action=bookmark&value=0&id=<?= $item_id ?>&redirect=bookmarks&offset=<?= $offset ?>">
|
<a href="?action=bookmark&value=0&id=<?= $item['id'] ?>&redirect=bookmarks&offset=<?= $offset ?>">
|
||||||
<?= t('remove bookmark') ?>
|
<?= t('remove bookmark') ?>
|
||||||
</a> |
|
</a> |
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="<?= $item['url'] ?>"
|
href="<?= $item['url'] ?>"
|
||||||
id="original-<?= $item_id ?>"
|
id="original-<?= $item['id'] ?>"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= t('original link') ?>
|
<?= t('original link') ?>
|
||||||
</a>
|
</a>
|
||||||
|
@ -10,14 +10,13 @@
|
|||||||
|
|
||||||
<section class="items" id="listing">
|
<section class="items" id="listing">
|
||||||
<?php foreach ($items as $item): ?>
|
<?php foreach ($items as $item): ?>
|
||||||
<?php $item_id = Model\encode_item_id($item['id']) ?>
|
<article id="item-<?= $item['id'] ?>" data-item-id="<?= $item['id'] ?>">
|
||||||
<article id="item-<?= $item_id ?>" data-item-id="<?= $item_id ?>">
|
|
||||||
<h2>
|
<h2>
|
||||||
<?= $item['bookmark'] ? '★ ' : '' ?>
|
<?= $item['bookmark'] ? '★ ' : '' ?>
|
||||||
<a
|
<a
|
||||||
href="?action=show&id=<?= $item_id ?>"
|
href="?action=show&id=<?= $item['id'] ?>"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
id="open-<?= $item_id ?>"
|
id="open-<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= Helper\escape($item['title']) ?>
|
<?= Helper\escape($item['title']) ?>
|
||||||
</a>
|
</a>
|
||||||
@ -28,10 +27,10 @@
|
|||||||
|
|
||||||
<a
|
<a
|
||||||
href="<?= $item['url'] ?>"
|
href="<?= $item['url'] ?>"
|
||||||
id="original-<?= $item_id ?>"
|
id="original-<?= $item['id'] ?>"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= t('original link') ?>
|
<?= t('original link') ?>
|
||||||
</a>
|
</a>
|
||||||
|
@ -11,14 +11,13 @@
|
|||||||
|
|
||||||
<section class="items" id="listing">
|
<section class="items" id="listing">
|
||||||
<?php foreach ($items as $item): ?>
|
<?php foreach ($items as $item): ?>
|
||||||
<?php $item_id = Model\encode_item_id($item['id']) ?>
|
<article id="item-<?= $item['id'] ?>" data-item-id="<?= $item['id'] ?>" data-item-page="<?= $menu ?>" data-hide="true">
|
||||||
<article id="item-<?= $item_id ?>" data-item-id="<?= $item_id ?>" data-item-page="<?= $menu ?>" data-hide="true">
|
|
||||||
<h2>
|
<h2>
|
||||||
<?= $item['bookmark'] ? '★ ' : '' ?>
|
<?= $item['bookmark'] ? '★ ' : '' ?>
|
||||||
<a
|
<a
|
||||||
href="?action=show&id=<?= $item_id ?>"
|
href="?action=show&id=<?= $item['id'] ?>"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
id="open-<?= $item_id ?>"
|
id="open-<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= Helper\escape($item['title']) ?>
|
<?= Helper\escape($item['title']) ?>
|
||||||
</a>
|
</a>
|
||||||
@ -30,28 +29,28 @@
|
|||||||
|
|
||||||
<?php if (! $item['bookmark']): ?>
|
<?php if (! $item['bookmark']): ?>
|
||||||
<span class="hide-mobile">
|
<span class="hide-mobile">
|
||||||
<a id="bookmark-<?= $item_id ?>" href="?action=bookmark&value=1&id=<?= $item_id ?>&redirect=history&offset=<?= $offset ?>"><?= t('bookmark') ?></a> |
|
<a id="bookmark-<?= $item['id'] ?>" href="?action=bookmark&value=1&id=<?= $item['id'] ?>&redirect=history&offset=<?= $offset ?>"><?= t('bookmark') ?></a> |
|
||||||
</span>
|
</span>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="?action=mark-item-unread&id=<?= $item_id ?>&offset=<?= $offset ?>"
|
href="?action=mark-item-unread&id=<?= $item['id'] ?>&offset=<?= $offset ?>"
|
||||||
data-action="mark-unread"
|
data-action="mark-unread"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= t('mark as unread') ?>
|
<?= t('mark as unread') ?>
|
||||||
</a> |
|
</a> |
|
||||||
|
|
||||||
<span class="hide-mobile">
|
<span class="hide-mobile">
|
||||||
<a href="?action=mark-item-removed&id=<?= $item_id ?>&offset=<?= $offset ?>"><?= t('remove') ?></a> |
|
<a href="?action=mark-item-removed&id=<?= $item['id'] ?>&offset=<?= $offset ?>"><?= t('remove') ?></a> |
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="<?= $item['url'] ?>"
|
href="<?= $item['url'] ?>"
|
||||||
id="original-<?= $item_id ?>"
|
id="original-<?= $item['id'] ?>"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= t('original link') ?>
|
<?= t('original link') ?>
|
||||||
</a>
|
</a>
|
||||||
|
@ -3,8 +3,7 @@
|
|||||||
<p class="alert alert-info"><?= t('Item not found') ?></p>
|
<p class="alert alert-info"><?= t('Item not found') ?></p>
|
||||||
|
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?php $item_id = Model\encode_item_id($item['id']) ?>
|
<article class="item" id="current-item" data-item-id="<?= $item['id'] ?>" data-item-page="<?= $menu ?>">
|
||||||
<article class="item" id="current-item" data-item-id="<?= Model\encode_item_id($item['id']) ?>" data-item-page="<?= $menu ?>">
|
|
||||||
<h1>
|
<h1>
|
||||||
<a href="<?= $item['url'] ?>" rel="noreferrer" target="_blank" id="original-item">
|
<a href="<?= $item['url'] ?>" rel="noreferrer" target="_blank" id="original-item">
|
||||||
<?= Helper\escape($item['title']) ?>
|
<?= Helper\escape($item['title']) ?>
|
||||||
@ -15,9 +14,9 @@
|
|||||||
<?= Helper\escape($feed['title']) ?> |
|
<?= Helper\escape($feed['title']) ?> |
|
||||||
<span class="hide-mobile"><?= dt('%A %e %B %Y %k:%M', $item['updated']) ?> |</span>
|
<span class="hide-mobile"><?= dt('%A %e %B %Y %k:%M', $item['updated']) ?> |</span>
|
||||||
<?php if ($item['bookmark']): ?>
|
<?php if ($item['bookmark']): ?>
|
||||||
<a href="?action=bookmark&value=0&id=<?= $item_id ?>&redirect=<?= $menu ?>"><?= t('remove bookmark') ?></a>
|
<a href="?action=bookmark&value=0&id=<?= $item['id'] ?>&redirect=<?= $menu ?>"><?= t('remove bookmark') ?></a>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<a href="?action=bookmark&value=1&id=<?= $item_id ?>&redirect=<?= $menu ?>"><?= t('bookmark') ?></a>
|
<a href="?action=bookmark&value=1&id=<?= $item['id'] ?>&redirect=<?= $menu ?>"><?= t('bookmark') ?></a>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -27,7 +26,7 @@
|
|||||||
<nav>
|
<nav>
|
||||||
<span class="nav-left">
|
<span class="nav-left">
|
||||||
<?php if ($item_nav['previous']): ?>
|
<?php if ($item_nav['previous']): ?>
|
||||||
<a href="?action=read&id=<?= Model\encode_item_id($item_nav['previous']['id']) ?>" id="previous-item">« <?= t('Previous') ?></a>
|
<a href="?action=read&id=<?= $item_nav['previous']['id'] ?>" id="previous-item">« <?= t('Previous') ?></a>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
« <?= t('Previous') ?>
|
« <?= t('Previous') ?>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
@ -35,11 +34,11 @@
|
|||||||
|
|
||||||
<span class="nav-middle">
|
<span class="nav-middle">
|
||||||
<?php if ($item_nav['previous'] && $item_nav['next']): ?>
|
<?php if ($item_nav['previous'] && $item_nav['next']): ?>
|
||||||
<a href="?action=default#item-<?= Model\encode_item_id($item_nav['next']['id']) ?>"><?= t('Unread items') ?></a>
|
<a href="?action=default#item-<?= $item_nav['next']['id'] ?>"><?= t('Unread items') ?></a>
|
||||||
<?php elseif ($item_nav['previous'] && ! $item_nav['next']): ?>
|
<?php elseif ($item_nav['previous'] && ! $item_nav['next']): ?>
|
||||||
<a href="?action=default#item-<?= Model\encode_item_id($item_nav['previous']['id']) ?>"><?= t('Unread items') ?></a>
|
<a href="?action=default#item-<?= $item_nav['previous']['id'] ?>"><?= t('Unread items') ?></a>
|
||||||
<?php elseif (! $item_nav['previous'] && $item_nav['next']): ?>
|
<?php elseif (! $item_nav['previous'] && $item_nav['next']): ?>
|
||||||
<a href="?action=default#item-<?= Model\encode_item_id($item_nav['next']['id']) ?>"><?= t('Unread items') ?></a>
|
<a href="?action=default#item-<?= $item_nav['next']['id'] ?>"><?= t('Unread items') ?></a>
|
||||||
<?php elseif (! $item_nav['previous'] && ! $item_nav['next']): ?>
|
<?php elseif (! $item_nav['previous'] && ! $item_nav['next']): ?>
|
||||||
<a href="?action=default"><?= t('Unread items') ?></a>
|
<a href="?action=default"><?= t('Unread items') ?></a>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
@ -47,7 +46,7 @@
|
|||||||
|
|
||||||
<span class="nav-right">
|
<span class="nav-right">
|
||||||
<?php if ($item_nav['next']): ?>
|
<?php if ($item_nav['next']): ?>
|
||||||
<a href="?action=read&id=<?= Model\encode_item_id($item_nav['next']['id']) ?>" id="next-item"><?= t('Next') ?> »</a>
|
<a href="?action=read&id=<?= $item_nav['next']['id'] ?>" id="next-item"><?= t('Next') ?> »</a>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?= t('Next') ?> »
|
<?= t('Next') ?> »
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
@ -17,14 +17,13 @@
|
|||||||
|
|
||||||
<section class="items" id="listing">
|
<section class="items" id="listing">
|
||||||
<?php foreach ($items as $item): ?>
|
<?php foreach ($items as $item): ?>
|
||||||
<?php $item_id = Model\encode_item_id($item['id']) ?>
|
<article id="item-<?= $item['id'] ?>" data-item-id="<?= $item['id'] ?>" data-item-page="<?= $menu ?>" data-hide="true">
|
||||||
<article id="item-<?= $item_id ?>" data-item-id="<?= $item_id ?>" data-item-page="<?= $menu ?>" data-hide="true">
|
|
||||||
<h2>
|
<h2>
|
||||||
<?= $item['bookmark'] ? '★ ' : '' ?>
|
<?= $item['bookmark'] ? '★ ' : '' ?>
|
||||||
<a
|
<a
|
||||||
href="?action=read&id=<?= $item_id ?>"
|
href="?action=read&id=<?= $item['id'] ?>"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
id="open-<?= $item_id ?>"
|
id="open-<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= Helper\escape($item['title']) ?>
|
<?= Helper\escape($item['title']) ?>
|
||||||
</a>
|
</a>
|
||||||
@ -38,25 +37,25 @@
|
|||||||
|
|
||||||
<span class="hide-mobile">
|
<span class="hide-mobile">
|
||||||
<?php if ($item['bookmark']): ?>
|
<?php if ($item['bookmark']): ?>
|
||||||
<a id="bookmark-<?= $item_id ?>" href="?action=bookmark&value=0&id=<?= $item_id ?>&redirect=unread&offset=<?= $offset ?>"><?= t('remove bookmark') ?></a> |
|
<a id="bookmark-<?= $item['id'] ?>" href="?action=bookmark&value=0&id=<?= $item['id'] ?>&redirect=unread&offset=<?= $offset ?>"><?= t('remove bookmark') ?></a> |
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<a id="bookmark-<?= $item_id ?>" href="?action=bookmark&value=1&id=<?= $item_id ?>&redirect=unread&offset=<?= $offset ?>"><?= t('bookmark') ?></a> |
|
<a id="bookmark-<?= $item['id'] ?>" href="?action=bookmark&value=1&id=<?= $item['id'] ?>&redirect=unread&offset=<?= $offset ?>"><?= t('bookmark') ?></a> |
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
href="?action=mark-item-read&id=<?= $item_id ?>&offset=<?= $offset ?>"
|
href="?action=mark-item-read&id=<?= $item['id'] ?>&offset=<?= $offset ?>"
|
||||||
data-action="mark-read"
|
data-action="mark-read"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
>
|
>
|
||||||
<?= t('mark as read') ?>
|
<?= t('mark as read') ?>
|
||||||
</a> |
|
</a> |
|
||||||
<a
|
<a
|
||||||
href="<?= $item['url'] ?>"
|
href="<?= $item['url'] ?>"
|
||||||
id="original-<?= $item_id ?>"
|
id="original-<?= $item['id'] ?>"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
data-item-id="<?= $item_id ?>"
|
data-item-id="<?= $item['id'] ?>"
|
||||||
data-action="original-link"
|
data-action="original-link"
|
||||||
data-hide="true"
|
data-hide="true"
|
||||||
>
|
>
|
||||||
|
7
vendor/PicoFeed/Parser.php
vendored
7
vendor/PicoFeed/Parser.php
vendored
@ -91,4 +91,11 @@ abstract class Parser
|
|||||||
$value = str_replace("\n", "", $value);
|
$value = str_replace("\n", "", $value);
|
||||||
return trim($value);
|
return trim($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function generateId()
|
||||||
|
{
|
||||||
|
// crc32b seems to be faster and shorter than other hash algorithms
|
||||||
|
return hash('crc32b', implode(func_get_args()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
8
vendor/PicoFeed/Parsers/Atom.php
vendored
8
vendor/PicoFeed/Parsers/Atom.php
vendored
@ -25,13 +25,15 @@ class Atom extends \PicoFeed\Parser
|
|||||||
|
|
||||||
if (isset($entry->author->name)) {
|
if (isset($entry->author->name)) {
|
||||||
|
|
||||||
$author = $entry->author->name;
|
$author = (string) $entry->author->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$id = (string) $entry->id;
|
||||||
|
|
||||||
$item = new \StdClass;
|
$item = new \StdClass;
|
||||||
$item->id = (string) $entry->id;
|
|
||||||
$item->title = $this->stripWhiteSpace((string) $entry->title);
|
|
||||||
$item->url = $this->getUrl($entry);
|
$item->url = $this->getUrl($entry);
|
||||||
|
$item->id = $this->generateId($id !== $item->url ? $id : $item->$url, $this->url);
|
||||||
|
$item->title = $this->stripWhiteSpace((string) $entry->title);
|
||||||
$item->updated = strtotime((string) $entry->updated);
|
$item->updated = strtotime((string) $entry->updated);
|
||||||
$item->author = $author;
|
$item->author = $author;
|
||||||
$item->content = $this->filterHtml($this->getContent($entry), $item->url);
|
$item->content = $this->filterHtml($this->getContent($entry), $item->url);
|
||||||
|
2
vendor/PicoFeed/Parsers/Rss10.php
vendored
2
vendor/PicoFeed/Parsers/Rss10.php
vendored
@ -73,7 +73,7 @@ class Rss10 extends \PicoFeed\Parser
|
|||||||
|
|
||||||
if (empty($item->title)) $item->title = $item->url;
|
if (empty($item->title)) $item->title = $item->url;
|
||||||
|
|
||||||
$item->id = $item->url;
|
$item->id = $this->generateId($item->url, $this->url);
|
||||||
$item->content = $this->filterHtml($item->content, $item->url);
|
$item->content = $this->filterHtml($item->content, $item->url);
|
||||||
$this->items[] = $item;
|
$this->items[] = $item;
|
||||||
}
|
}
|
||||||
|
5
vendor/PicoFeed/Parsers/Rss20.php
vendored
5
vendor/PicoFeed/Parsers/Rss20.php
vendored
@ -94,11 +94,12 @@ class Rss20 extends \PicoFeed\Parser
|
|||||||
|
|
||||||
if (isset($entry->guid) && isset($entry->guid['isPermaLink']) && (string) $entry->guid['isPermaLink'] != 'false') {
|
if (isset($entry->guid) && isset($entry->guid['isPermaLink']) && (string) $entry->guid['isPermaLink'] != 'false') {
|
||||||
|
|
||||||
$item->id = (string) $entry->guid;
|
$id = (string) $entry->guid;
|
||||||
|
$item->id = $this->generateId($id !== '' && $id !== $item->url ? $id : $item->url, $this->url);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
$item->id = $item->url;
|
$item->id = $this->generateId($item->url, $this->url);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($item->title)) $item->title = $item->url;
|
if (empty($item->title)) $item->title = $item->url;
|
||||||
|
Loading…
Reference in New Issue
Block a user