diff options
Diffstat (limited to 'classes')
-rwxr-xr-x[-rw-r--r--] | classes/api.php | 4 | ||||
-rwxr-xr-x | classes/article.php | 2 | ||||
-rw-r--r-- | classes/feeditem.php | 1 | ||||
-rw-r--r-- | classes/feeditem/atom.php | 15 | ||||
-rw-r--r-- | classes/feeditem/rss.php | 12 | ||||
-rw-r--r-- | classes/feedparser.php | 2 | ||||
-rwxr-xr-x | classes/feeds.php | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | classes/handler/public.php | 6 | ||||
-rw-r--r-- | classes/logger.php | 5 | ||||
-rw-r--r-- | classes/logger/stdout.php | 33 | ||||
-rwxr-xr-x | classes/pref/feeds.php | 10 | ||||
-rwxr-xr-x | classes/rssutils.php | 28 |
12 files changed, 85 insertions, 35 deletions
diff --git a/classes/api.php b/classes/api.php index 4c321d77e..5dbf8dc1f 100644..100755 --- a/classes/api.php +++ b/classes/api.php @@ -379,6 +379,8 @@ class API extends Handler { $article = $p->hook_render_article_api(array("article" => $article)); } + $article['content'] = rewrite_cached_urls($article['content']); + array_push($articles, $article); } @@ -799,6 +801,8 @@ class API extends Handler { $headline_row = $p->hook_render_article_api(array("headline" => $headline_row)); } + $headline_row['content'] = rewrite_cached_urls($headline_row['content']); + array_push($headlines, $headline_row); } } else if (is_numeric($result) && $result == -1) { diff --git a/classes/article.php b/classes/article.php index c8ee5b931..71dfdabc4 100755 --- a/classes/article.php +++ b/classes/article.php @@ -610,6 +610,8 @@ class Article extends Handler_Protected { $line = $p->hook_render_article($line); } + $line['content'] = rewrite_cached_urls($line['content']); + $num_comments = (int) $line["num_comments"]; $entry_comments = ""; diff --git a/classes/feeditem.php b/classes/feeditem.php index 594f56984..3a5e5dc09 100644 --- a/classes/feeditem.php +++ b/classes/feeditem.php @@ -11,5 +11,6 @@ abstract class FeedItem { abstract function get_categories(); abstract function get_enclosures(); abstract function get_author(); + abstract function get_language(); } diff --git a/classes/feeditem/atom.php b/classes/feeditem/atom.php index 77cd448b8..8c3e0f8a7 100644 --- a/classes/feeditem/atom.php +++ b/classes/feeditem/atom.php @@ -1,5 +1,6 @@ <?php class FeedItem_Atom extends FeedItem_Common { + const NS_XML = "http://www.w3.org/XML/1998/namespace"; function get_id() { $id = $this->elem->getElementsByTagName("id")->item(0); @@ -197,4 +198,18 @@ class FeedItem_Atom extends FeedItem_Common { return $encs; } + function get_language() { + $lang = $this->elem->getAttributeNS(self::NS_XML, "lang"); + + if (!empty($lang)) { + return $lang; + } else { + // Fall back to the language declared on the feed, if any. + foreach ($this->doc->childNodes as $child) { + if (method_exists($child, "getAttributeNS")) { + return $child->getAttributeNS(self::NS_XML, "lang"); + } + } + } + } } diff --git a/classes/feeditem/rss.php b/classes/feeditem/rss.php index a3fa7e636..dca125be6 100644 --- a/classes/feeditem/rss.php +++ b/classes/feeditem/rss.php @@ -189,4 +189,14 @@ class FeedItem_RSS extends FeedItem_Common { return $encs; } -}
\ No newline at end of file + function get_language() { + $languages = $this->doc->getElementsByTagName('language'); + + if (count($languages) == 0) { + return ""; + } + + return $languages[0]->textContent; + } + +} diff --git a/classes/feedparser.php b/classes/feedparser.php index 860ebd73f..a5e406149 100644 --- a/classes/feedparser.php +++ b/classes/feedparser.php @@ -283,4 +283,4 @@ class FeedParser { return $rv; } -}
\ No newline at end of file +} diff --git a/classes/feeds.php b/classes/feeds.php index 47a6b56b8..6bf14f45e 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -477,6 +477,8 @@ class Feeds extends Handler_Protected { $line = $p->hook_render_article_cdm($line); } + $line['content'] = rewrite_cached_urls($line['content']); + if ($vfeed_group_enabled && $line["feed_title"]) { if ($feed_id != $vgroup_last_feed) { diff --git a/classes/handler/public.php b/classes/handler/public.php index 8440bc355..e892a9797 100644..100755 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -934,17 +934,17 @@ class Handler_Public extends Handler { } function cached_url() { - @$hash = basename($_GET['hash']); + @$req_filename = basename($_GET['hash']); // we don't need an extension to find the file, hash is a complete URL - $hash = preg_replace("/\.[^\.]*$/", "", $hash); + $hash = preg_replace("/\.[^\.]*$/", "", $req_filename); if ($hash) { $filename = CACHE_DIR . '/images/' . $hash; if (file_exists($filename)) { - header("Content-Disposition: inline; filename=\"$hash\""); + header("Content-Disposition: inline; filename=\"$req_filename\""); send_local_file($filename); diff --git a/classes/logger.php b/classes/logger.php index 0c486e58b..3b178ae54 100644 --- a/classes/logger.php +++ b/classes/logger.php @@ -49,6 +49,9 @@ class Logger { case "syslog": $this->adapter = new Logger_Syslog(); break; + case "stdout": + $this->adapter = new Logger_Stdout(); + break; default: $this->adapter = false; } @@ -61,4 +64,4 @@ class Logger { return self::$instance; } -}
\ No newline at end of file +} diff --git a/classes/logger/stdout.php b/classes/logger/stdout.php new file mode 100644 index 000000000..856b2d027 --- /dev/null +++ b/classes/logger/stdout.php @@ -0,0 +1,33 @@ +<?php +class Logger_Stdout { + + /** + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + function log_error($errno, $errstr, $file, $line, $context) { + + switch ($errno) { + case E_ERROR: + case E_PARSE: + case E_CORE_ERROR: + case E_COMPILE_ERROR: + case E_USER_ERROR: + $priority = LOG_ERR; + break; + case E_WARNING: + case E_CORE_WARNING: + case E_COMPILE_WARNING: + case E_USER_WARNING: + $priority = LOG_WARNING; + break; + default: + $priority = LOG_INFO; + } + + $errname = Logger::$errornames[$errno] . " ($errno)"; + + print "[EEE] $priority $errname ($file:$line) $errstr\n"; + + } + +} diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php index 459fbbe2a..4c9574cd2 100755 --- a/classes/pref/feeds.php +++ b/classes/pref/feeds.php @@ -513,8 +513,6 @@ class Pref_Feeds extends Handler_Protected { print '<div dojoType="dijit.layout.TabContainer" style="height : 450px"> <div dojoType="dijit.layout.ContentPane" title="'.__('General').'">'; - $auth_pass_encrypted = $row["auth_pass_encrypted"]; - $title = htmlspecialchars($row["title"]); print_hidden("id", "$feed_id"); @@ -615,14 +613,8 @@ class Pref_Feeds extends Handler_Protected { print "</div>"; $auth_login = htmlspecialchars($row["auth_login"]); - $auth_pass = $row["auth_pass"]; - - if ($auth_pass_encrypted && function_exists("mcrypt_decrypt")) { - require_once "crypt.php"; - $auth_pass = decrypt_string($auth_pass); - } + $auth_pass = htmlspecialchars($row["auth_pass"]); - $auth_pass = htmlspecialchars($auth_pass); $auth_enabled = $auth_login !== '' || $auth_pass !== ''; $auth_style = $auth_enabled ? '' : 'display: none'; diff --git a/classes/rssutils.php b/classes/rssutils.php index b1c88ed9c..5a1a9467c 100755 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -218,24 +218,15 @@ class RSSUtils { $pdo = Db::pdo(); - $sth = $pdo->prepare("SELECT owner_uid,feed_url,auth_pass,auth_login,auth_pass_encrypted + $sth = $pdo->prepare("SELECT owner_uid,feed_url,auth_pass,auth_login FROM ttrss_feeds WHERE id = ?"); $sth->execute([$feed]); if ($row = $sth->fetch()) { $owner_uid = $row["owner_uid"]; - - $auth_pass_encrypted = $row["auth_pass_encrypted"]; - $auth_login = $row["auth_login"]; $auth_pass = $row["auth_pass"]; - - if ($auth_pass_encrypted && function_exists("mcrypt_decrypt")) { - require_once "crypt.php"; - $auth_pass = decrypt_string($auth_pass); - } - $fetch_url = $row["feed_url"]; $pluginhost = new PluginHost(); @@ -347,7 +338,6 @@ class RSSUtils { $owner_uid = $row["owner_uid"]; $mark_unread_on_update = $row["mark_unread_on_update"]; - $auth_pass_encrypted = $row["auth_pass_encrypted"]; $sth = $pdo->prepare("UPDATE ttrss_feeds SET last_update_started = NOW() WHERE id = ?"); @@ -355,16 +345,11 @@ class RSSUtils { $auth_login = $row["auth_login"]; $auth_pass = $row["auth_pass"]; - - if ($auth_pass_encrypted && function_exists("mcrypt_decrypt")) { - require_once "crypt.php"; - $auth_pass = decrypt_string($auth_pass); - } - $stored_last_modified = $row["last_modified"]; $last_unconditional = $row["last_unconditional"]; $cache_images = $row["cache_images"]; $fetch_url = $row["feed_url"]; + $feed_language = mb_strtolower($row["feed_language"]); if (!$feed_language) $feed_language = 'english'; @@ -637,8 +622,11 @@ class RSSUtils { $entry_link = rewrite_relative_url($site_url, $item->get_link()); + $entry_language = mb_substr(trim($item->get_language()), 0, 2); + _debug("title $entry_title", $debug_enabled); _debug("link $entry_link", $debug_enabled); + _debug("language $entry_language", $debug_enabled); if (!$entry_title) $entry_title = date("Y-m-d H:i:s", $entry_timestamp);; @@ -694,7 +682,6 @@ class RSSUtils { $base_entry_id = $row["id"]; $entry_stored_hash = $row["content_hash"]; $article_labels = Article::get_article_labels($base_entry_id, $owner_uid); - $entry_language = $row["lang"]; $existing_tags = Article::get_article_tags($base_entry_id, $owner_uid); $entry_tags = array_unique(array_merge($entry_tags, $existing_tags)); @@ -702,7 +689,6 @@ class RSSUtils { $base_entry_id = false; $entry_stored_hash = ""; $article_labels = array(); - $entry_language = ""; } $article = array("owner_uid" => $owner_uid, // read only @@ -1253,9 +1239,11 @@ class RSSUtils { $local_filename = CACHE_DIR . "/images/" . sha1($src); - if ($debug) _debug("cache_media: downloading: $src to $local_filename"); + if ($debug) _debug("cache_media: checking $src"); if (!file_exists($local_filename)) { + if ($debug) _debug("cache_media: downloading: $src to $local_filename"); + $file_content = fetch_file_contents($src); if ($file_content && strlen($file_content) > MIN_CACHE_FILE_SIZE) { |