add support for enclosures (closes #165)
This commit is contained in:
parent
66a251f901
commit
ce53e200b4
6 changed files with 132 additions and 15 deletions
133
functions.php
133
functions.php
|
@ -894,6 +894,40 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// enclosures
|
||||||
|
|
||||||
|
$enclosures = array();
|
||||||
|
|
||||||
|
if (ENABLE_SIMPLEPIE) {
|
||||||
|
$encs = $item->get_enclosures();
|
||||||
|
|
||||||
|
foreach ($encs as $e) {
|
||||||
|
$e_item = array(
|
||||||
|
$e->link, $e->type, $e->length);
|
||||||
|
|
||||||
|
array_push($enclosures, $e_item);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$e_ctr = $item['enclosure#'];
|
||||||
|
|
||||||
|
if ($e_ctr > 0) {
|
||||||
|
$e_item = array($item['enclosure@url'],
|
||||||
|
$item['enclosure@type'],
|
||||||
|
$item['enclosure@length']);
|
||||||
|
|
||||||
|
array_push($enclosures, $e_item);
|
||||||
|
|
||||||
|
for ($i = 2; $i <= $e_ctr; $i++ ) {
|
||||||
|
$e_item = array($item["enclosure#$i@url"],
|
||||||
|
$item["enclosure#$i@type"],
|
||||||
|
$item["enclosure#$i@length"]);
|
||||||
|
array_push($enclosures, $e_item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# sanitize content
|
# sanitize content
|
||||||
|
|
||||||
// $entry_content = sanitize_rss($entry_content);
|
// $entry_content = sanitize_rss($entry_content);
|
||||||
|
@ -960,6 +994,9 @@
|
||||||
ttrss_entries
|
ttrss_entries
|
||||||
WHERE guid = '$entry_guid'");
|
WHERE guid = '$entry_guid'");
|
||||||
|
|
||||||
|
$entry_ref_id = 0;
|
||||||
|
$entry_int_id = 0;
|
||||||
|
|
||||||
if (db_num_rows($result) == 1) {
|
if (db_num_rows($result) == 1) {
|
||||||
|
|
||||||
if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
|
if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
|
||||||
|
@ -974,6 +1011,7 @@
|
||||||
0, "date_entered"));
|
0, "date_entered"));
|
||||||
|
|
||||||
$ref_id = db_fetch_result($result, 0, "id");
|
$ref_id = db_fetch_result($result, 0, "id");
|
||||||
|
$entry_ref_id = $ref_id;
|
||||||
|
|
||||||
// check for user post link to main table
|
// check for user post link to main table
|
||||||
|
|
||||||
|
@ -1003,7 +1041,7 @@
|
||||||
// error_reporting (DEFAULT_ERROR_LEVEL);
|
// error_reporting (DEFAULT_ERROR_LEVEL);
|
||||||
|
|
||||||
$result = db_query($link,
|
$result = db_query($link,
|
||||||
"SELECT ref_id FROM ttrss_user_entries WHERE
|
"SELECT ref_id, int_id FROM ttrss_user_entries WHERE
|
||||||
ref_id = '$ref_id' AND owner_uid = '$owner_uid'
|
ref_id = '$ref_id' AND owner_uid = '$owner_uid'
|
||||||
$dupcheck_qpart");
|
$dupcheck_qpart");
|
||||||
|
|
||||||
|
@ -1039,8 +1077,24 @@
|
||||||
(ref_id, owner_uid, feed_id, unread, last_read, marked, published)
|
(ref_id, owner_uid, feed_id, unread, last_read, marked, published)
|
||||||
VALUES ('$ref_id', '$owner_uid', '$feed', $unread,
|
VALUES ('$ref_id', '$owner_uid', '$feed', $unread,
|
||||||
$last_read_qpart, $marked, $published)");
|
$last_read_qpart, $marked, $published)");
|
||||||
|
|
||||||
|
$result = db_query($link,
|
||||||
|
"SELECT int_id FROM ttrss_user_entries WHERE
|
||||||
|
ref_id = '$ref_id' AND owner_uid = '$owner_uid' AND
|
||||||
|
feed_id = '$feed' LIMIT 1");
|
||||||
|
|
||||||
|
if (db_num_rows($result) == 1) {
|
||||||
|
$entry_int_id = db_fetch_result($result, 0, "int_id");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$entry_ref_id = db_fetch_result($result, 0, "ref_id");
|
||||||
|
$entry_int_id = db_fetch_result($result, 0, "int_id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
|
||||||
|
_debug("update_rss_feed: RID: $entry_ref_id, IID: $entry_int_id");
|
||||||
|
}
|
||||||
|
|
||||||
$post_needs_update = false;
|
$post_needs_update = false;
|
||||||
|
|
||||||
if (get_pref($link, "UPDATE_POST_ON_CHECKSUM_CHANGE", $owner_uid, false) &&
|
if (get_pref($link, "UPDATE_POST_ON_CHECKSUM_CHANGE", $owner_uid, false) &&
|
||||||
|
@ -1092,6 +1146,33 @@
|
||||||
|
|
||||||
db_query($link, "COMMIT");
|
db_query($link, "COMMIT");
|
||||||
|
|
||||||
|
if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
|
||||||
|
_debug("update_rss_feed: looking for enclosures...");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
|
||||||
|
print_r($enclosures);
|
||||||
|
}
|
||||||
|
|
||||||
|
db_query($link, "BEGIN");
|
||||||
|
|
||||||
|
foreach ($enclosures as $enc) {
|
||||||
|
$enc_url = db_escape_string($enc[0]);
|
||||||
|
$enc_type = db_escape_string($enc[1]);
|
||||||
|
$enc_dur = db_escape_string($enc[2]);
|
||||||
|
|
||||||
|
$result = db_query($link, "SELECT id FROM ttrss_enclosures
|
||||||
|
WHERE content_url = '$enc_url' AND post_id = '$entry_ref_id'");
|
||||||
|
|
||||||
|
if (db_num_rows($result) == 0) {
|
||||||
|
db_query($link, "INSERT INTO ttrss_enclosures
|
||||||
|
(content_url, content_type, title, duration, post_id) VALUES
|
||||||
|
('$enc_url', '$enc_type', '', '$enc_dur', '$entry_ref_id')");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
db_query($link, "COMMIT");
|
||||||
|
|
||||||
if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
|
if (defined('DAEMON_EXTENDED_DEBUG') || $_GET['xdebug']) {
|
||||||
_debug("update_rss_feed: looking for tags...");
|
_debug("update_rss_feed: looking for tags...");
|
||||||
}
|
}
|
||||||
|
@ -1147,17 +1228,6 @@
|
||||||
|
|
||||||
db_query($link, "BEGIN");
|
db_query($link, "BEGIN");
|
||||||
|
|
||||||
$result = db_query($link, "SELECT id,int_id
|
|
||||||
FROM ttrss_entries,ttrss_user_entries
|
|
||||||
WHERE guid = '$entry_guid'
|
|
||||||
AND feed_id = '$feed' AND ref_id = id
|
|
||||||
AND owner_uid = '$owner_uid'");
|
|
||||||
|
|
||||||
if (db_num_rows($result) == 1) {
|
|
||||||
|
|
||||||
$entry_id = db_fetch_result($result, 0, "id");
|
|
||||||
$entry_int_id = db_fetch_result($result, 0, "int_id");
|
|
||||||
|
|
||||||
foreach ($entry_tags as $tag) {
|
foreach ($entry_tags as $tag) {
|
||||||
|
|
||||||
$tag = sanitize_tag($tag);
|
$tag = sanitize_tag($tag);
|
||||||
|
@ -1178,7 +1248,7 @@
|
||||||
VALUES ('$owner_uid','$tag', '$entry_int_id')");
|
VALUES ('$owner_uid','$tag', '$entry_int_id')");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
db_query($link, "COMMIT");
|
db_query($link, "COMMIT");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4384,7 +4454,40 @@
|
||||||
$line["content"] = preg_replace("/href=/i", "target=\"_new\" href=", $line["content"]);
|
$line["content"] = preg_replace("/href=/i", "target=\"_new\" href=", $line["content"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
print $line["content"] . "</div>";
|
print $line["content"];
|
||||||
|
|
||||||
|
$result = db_query($link, "SELECT * FROM ttrss_enclosures WHERE
|
||||||
|
post_id = '$id'");
|
||||||
|
|
||||||
|
if (db_num_rows($result) > 0) {
|
||||||
|
print "<div class=\"postEnclosures\">";
|
||||||
|
|
||||||
|
if (db_num_rows($result) == 1) {
|
||||||
|
print __("Attachment:") . " ";
|
||||||
|
} else {
|
||||||
|
print __("Attachments:") . " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
$entries = array();
|
||||||
|
|
||||||
|
while ($line = db_fetch_assoc($result)) {
|
||||||
|
|
||||||
|
$url = $line["content_url"];
|
||||||
|
|
||||||
|
$filename = substr($url, strrpos($url, "/")+1);
|
||||||
|
|
||||||
|
$entry = "<a href=\"" . htmlspecialchars($url) . "\">" .
|
||||||
|
$filename . " (" . $line["content_type"] . ")" . "</a>";
|
||||||
|
|
||||||
|
array_push($entries, $entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
print join(", ", $entries);
|
||||||
|
|
||||||
|
print "</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</div>";
|
||||||
|
|
||||||
print "</div>";
|
print "</div>";
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,7 @@ create table ttrss_enclosures (id serial not null primary key,
|
||||||
content_type varchar(250) not null,
|
content_type varchar(250) not null,
|
||||||
post_id integer not null,
|
post_id integer not null,
|
||||||
title text not null,
|
title text not null,
|
||||||
|
duration text not null,
|
||||||
index (post_id),
|
index (post_id),
|
||||||
foreign key (post_id) references ttrss_entries(id) ON DELETE cascade);
|
foreign key (post_id) references ttrss_entries(id) ON DELETE cascade);
|
||||||
|
|
||||||
|
|
|
@ -187,6 +187,7 @@ create table ttrss_enclosures (id serial not null primary key,
|
||||||
content_url text not null,
|
content_url text not null,
|
||||||
content_type varchar(250) not null,
|
content_type varchar(250) not null,
|
||||||
title text not null,
|
title text not null,
|
||||||
|
duration text not null,
|
||||||
post_id integer references ttrss_entries(id) ON DELETE cascade NOT NULL);
|
post_id integer references ttrss_entries(id) ON DELETE cascade NOT NULL);
|
||||||
|
|
||||||
create table ttrss_prefs_types (id integer not null primary key,
|
create table ttrss_prefs_types (id integer not null primary key,
|
||||||
|
|
|
@ -8,6 +8,7 @@ create table ttrss_enclosures (id serial not null primary key,
|
||||||
content_type varchar(250) not null,
|
content_type varchar(250) not null,
|
||||||
post_id integer not null,
|
post_id integer not null,
|
||||||
title text not null,
|
title text not null,
|
||||||
|
duration text not null,
|
||||||
index (post_id),
|
index (post_id),
|
||||||
foreign key (post_id) references ttrss_entries(id) ON DELETE cascade);
|
foreign key (post_id) references ttrss_entries(id) ON DELETE cascade);
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ create table ttrss_enclosures (id serial not null primary key,
|
||||||
content_url text not null,
|
content_url text not null,
|
||||||
content_type varchar(250) not null,
|
content_type varchar(250) not null,
|
||||||
title text not null,
|
title text not null,
|
||||||
|
duration text not null,
|
||||||
post_id integer references ttrss_entries(id) ON DELETE cascade NOT NULL);
|
post_id integer references ttrss_entries(id) ON DELETE cascade NOT NULL);
|
||||||
|
|
||||||
update ttrss_version set schema_version = 26;
|
update ttrss_version set schema_version = 26;
|
||||||
|
|
10
tt-rss.css
10
tt-rss.css
|
@ -56,6 +56,16 @@ div.postReply div.postIcon {
|
||||||
margin : 10px 0px 10px 10px;
|
margin : 10px 0px 10px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.postReply div.postEnclosures {
|
||||||
|
border-width : 1px 0px 0px 0px;
|
||||||
|
border-style : dotted;
|
||||||
|
border-color : #c0c0c0;
|
||||||
|
font-size : 8pt;
|
||||||
|
margin-top : 1em;
|
||||||
|
padding-top : 0.2em;
|
||||||
|
color : gray;
|
||||||
|
}
|
||||||
|
|
||||||
div.postReply img.tagsPic {
|
div.postReply img.tagsPic {
|
||||||
width : 16px;
|
width : 16px;
|
||||||
height : 16px;
|
height : 16px;
|
||||||
|
|
Loading…
Reference in a new issue