summaryrefslogtreecommitdiff
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rwxr-xr-x[-rw-r--r--]classes/api.php4
-rwxr-xr-xclasses/article.php2
-rw-r--r--classes/feeditem.php1
-rw-r--r--classes/feeditem/atom.php15
-rw-r--r--classes/feeditem/rss.php12
-rw-r--r--classes/feedparser.php2
-rwxr-xr-xclasses/feeds.php2
-rwxr-xr-x[-rw-r--r--]classes/handler/public.php6
-rw-r--r--classes/logger.php5
-rw-r--r--classes/logger/stdout.php33
-rwxr-xr-xclasses/pref/feeds.php10
-rwxr-xr-xclasses/rssutils.php28
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) {