<?php /** * Item View Page * * Retrieves and displays an item from a feed belonging to the current user */ include '../start.php'; $db = Data::getConnection(); Security::verifyUser($db); if ($_SERVER['REQUEST_METHOD'] == 'POST') { // "Keep as New" button sends a POST request to reset the is_read flag before going back to the list of unread items $isValidQuery = $db->prepare(<<<'SQL' SELECT COUNT(*) FROM item INNER JOIN feed ON feed.id = item.feed_id WHERE item.id = :id AND feed.user_id = :user SQL); $isValidQuery->bindValue(':id', $_POST['id']); $isValidQuery->bindValue(':user', $_SESSION[Key::USER_ID]); $isValidResult = $isValidQuery->execute(); if ($isValidResult && $isValidResult->fetchArray(SQLITE3_NUM)[0] == 1) { $keepUnread = $db->prepare('UPDATE item SET is_read = 0 WHERE id = :id'); $keepUnread->bindValue(':id', $_POST['id']); $keepUnread->execute(); } $db->close(); frc_redirect('/'); } if ($_SERVER['REQUEST_METHOD'] == 'DELETE') { $deleteQuery = $db->prepare(<<<'SQL' DELETE FROM item WHERE id IN ( SELECT item.id FROM item INNER JOIN feed ON feed.id = item.feed_id WHERE item.id = :id AND feed.user_id = :user) SQL); $deleteQuery->bindValue(':id', $_GET['id']); $deleteQuery->bindValue(':user', $_SESSION[Key::USER_ID]); if ($deleteQuery->execute()) { add_info('Item deleted'); } else { add_error(Data::error($db)['error']); } $db->close(); frc_redirect('/'); } $query = $db->prepare(<<<'SQL' SELECT item.title AS item_title, item.item_link, item.published_on, item.updated_on, item.content, feed.title AS feed_title FROM item INNER JOIN feed ON feed.id = item.feed_id WHERE item.id = :id AND feed.user_id = :user SQL); $query->bindValue(':id', $_GET['id']); $query->bindValue(':user', $_SESSION[Key::USER_ID]); $result = $query->execute(); $item = $result ? $result->fetchArray(SQLITE3_ASSOC) : false; if ($item) { $markRead = $db->prepare('UPDATE item SET is_read = 1 WHERE id = :id'); $markRead->bindValue(':id', $_GET['id']); $markRead->execute(); } $published = date_time($item['published_on']); $updated = isset($item['updated_on']) ? date_time($item['updated_on']) : null; page_head(htmlentities("{$item['item_title']} | {$item['feed_title']}")); ?> <h1 class=item_heading> <a href="<?=$item['item_link']?>" target=_blank rel=noopener><?=strip_tags($item['item_title'])?></a><br> </h1> <div class=item_published> From <strong><?=htmlentities($item['feed_title'])?></strong><br> Published <?=date_time($item['published_on'])?><?=$updated && $updated != $published ? " (Updated $updated)" : ''?> </div> <article> <div class=item_content><?=str_replace('<a ', '<a target=_blank rel=noopener ', $item['content'])?></div> <form class=action_buttons action=/item method=POST hx-post=/item> <input type=hidden name=id value=<?=$_GET['id']?>> <a href=/ hx-get="/">Done</a> <button type=submit>Keep as New</button> <button type=button hx-delete=/item>Delete</button> </form> </article><?php page_foot(); $db->close();