1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-15 04:15:57 +00:00

subscribe: verify XML before adding to the database; fetch: try to work around entity problems if initial parsing fails

This commit is contained in:
Andrew Dolgov
2013-04-19 13:17:28 +04:00
parent 1367bc3f5e
commit ebec81a6fb
3 changed files with 52 additions and 34 deletions

View File

@@ -1558,6 +1558,7 @@
* Here you should call extractfeedurls in rpc-backend
* to get all possible feeds.
* 5 - Couldn't download the URL content.
* 6 - Content is an invalid XML.
*/
function subscribe_to_feed($url, $cat_id = 0,
$auth_login = '', $auth_pass = '') {
@@ -1588,6 +1589,18 @@
$url = key($feedUrls);
}
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadXML(html_entity_decode($contents));
$error = libxml_get_last_error();
libxml_clear_errors();
if ($error) {
$error_message = format_libxml_error($error);
return array("code" => 6, "message" => $error_message);
}
if ($cat_id == "0" || !$cat_id) {
$cat_qpart = "NULL";
} else {
@@ -4203,4 +4216,10 @@
return LABEL_BASE_INDEX - 1 + abs($feed);
}
function format_libxml_error($error) {
return T_sprintf("LibXML error %s at line %d (column %d): %s",
$error->code, $error->line, $error->column,
$error->message);
}
?>