summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cdm.css14
-rw-r--r--classes/api.php62
-rw-r--r--classes/article.php10
-rw-r--r--classes/auth/base.php4
-rw-r--r--classes/dlg.php8
-rw-r--r--classes/feeds.php30
-rw-r--r--classes/handler/public.php143
-rw-r--r--classes/opml.php40
-rw-r--r--classes/pluginhost.php6
-rw-r--r--classes/pref/feeds.php66
-rw-r--r--classes/pref/filters.php36
-rw-r--r--classes/pref/labels.php34
-rw-r--r--classes/pref/prefs.php16
-rw-r--r--classes/pref/users.php43
-rw-r--r--classes/rpc.php115
-rw-r--r--include/db-prefs.php6
-rw-r--r--include/db.php14
-rw-r--r--include/functions.php75
-rw-r--r--include/labels.php2
-rw-r--r--include/login_form.php16
-rw-r--r--include/rssfuncs.php54
-rw-r--r--include/sessions.php4
-rw-r--r--index.php2
-rw-r--r--js/functions.js29
-rw-r--r--js/tt-rss.js6
-rw-r--r--js/viewfeed.js4
-rw-r--r--locale/cs_CZ/LC_MESSAGES/messages.po189
-rw-r--r--locale/nl_NL/LC_MESSAGES/messages.mobin0 -> 58239 bytes
-rw-r--r--locale/nl_NL/LC_MESSAGES/messages.po3218
-rw-r--r--opml.php2
-rw-r--r--plugins/auth_internal/init.php8
-rw-r--r--plugins/auth_remote/init.php12
-rw-r--r--plugins/digest/init.php8
-rw-r--r--plugins/embed_original/init.php2
-rw-r--r--plugins/example/init.php2
-rw-r--r--plugins/googleplus/init.php2
-rw-r--r--plugins/googlereaderkeys/init.php1
-rw-r--r--plugins/identica/init.php2
-rw-r--r--plugins/import_export/init.php8
-rw-r--r--plugins/instances/init.php28
-rw-r--r--plugins/mail/init.php6
-rw-r--r--plugins/mailto/init.php2
-rw-r--r--plugins/note/init.php6
-rw-r--r--plugins/nsfw/init.php2
-rw-r--r--plugins/owncloud/init.php4
-rw-r--r--plugins/pinterest/init.php2
-rw-r--r--plugins/pocket/init.php2
-rw-r--r--plugins/share/init.php4
-rw-r--r--plugins/tweet/init.php2
-rw-r--r--prefs.php2
-rw-r--r--register.php10
-rw-r--r--templates/resetpass_template.txt2
-rw-r--r--tt-rss.css5
-rw-r--r--utility.css22
54 files changed, 3891 insertions, 501 deletions
diff --git a/cdm.css b/cdm.css
index 021135dfc..cb0a78f2b 100644
--- a/cdm.css
+++ b/cdm.css
@@ -132,6 +132,10 @@ div.cdm.expanded.Unread.Selected div.cdmHeader, div.cdm.expanded.Selected div.cd
background : #FFEA9E;
}
+div.cdm.active.Selected div.cdmHeader {
+ background : #FFEA9E;
+}
+
div.cdm.expanded.even.Unread, div.cdm.expanded.odd.Unread {
background : white;
}
@@ -159,3 +163,13 @@ div.cdmContentInner p {
div.cdmContentInner iframe {
min-width : 50%;
}
+
+div.cdmHeader span.author {
+ color : gray;
+ font-size : 11px;
+}
+
+div.cdm.expanded div.cdmHeader a.title, div.cdm.active div.cdmHeader a.title {
+ font-size : 13px;
+}
+
diff --git a/classes/api.php b/classes/api.php
index b9168cf93..3ec218671 100644
--- a/classes/api.php
+++ b/classes/api.php
@@ -47,7 +47,7 @@ class API extends Handler {
}
function login() {
- $login = db_escape_string($_REQUEST["user"]);
+ $login = db_escape_string($this->link, $_REQUEST["user"]);
$password = $_REQUEST["password"];
$password_base64 = base64_decode($_REQUEST["password"]);
@@ -92,8 +92,8 @@ class API extends Handler {
}
function getUnread() {
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
- $is_cat = db_escape_string($_REQUEST["is_cat"]);
+ $feed_id = db_escape_string($this->link, $_REQUEST["feed_id"]);
+ $is_cat = db_escape_string($this->link, $_REQUEST["is_cat"]);
if ($feed_id) {
print $this->wrap(self::STATUS_OK, array("unread" => getFeedUnread($this->link, $feed_id, $is_cat)));
@@ -108,10 +108,10 @@ class API extends Handler {
}
function getFeeds() {
- $cat_id = db_escape_string($_REQUEST["cat_id"]);
+ $cat_id = db_escape_string($this->link, $_REQUEST["cat_id"]);
$unread_only = sql_bool_to_bool($_REQUEST["unread_only"]);
- $limit = (int) db_escape_string($_REQUEST["limit"]);
- $offset = (int) db_escape_string($_REQUEST["offset"]);
+ $limit = (int) db_escape_string($this->link, $_REQUEST["limit"]);
+ $offset = (int) db_escape_string($this->link, $_REQUEST["offset"]);
$include_nested = sql_bool_to_bool($_REQUEST["include_nested"]);
$feeds = $this->api_get_feeds($this->link, $cat_id, $unread_only, $limit, $offset, $include_nested);
@@ -171,29 +171,29 @@ class API extends Handler {
}
function getHeadlines() {
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
+ $feed_id = db_escape_string($this->link, $_REQUEST["feed_id"]);
if ($feed_id != "") {
- $limit = (int)db_escape_string($_REQUEST["limit"]);
+ $limit = (int)db_escape_string($this->link, $_REQUEST["limit"]);
if (!$limit || $limit >= 60) $limit = 60;
- $offset = (int)db_escape_string($_REQUEST["skip"]);
- $filter = db_escape_string($_REQUEST["filter"]);
+ $offset = (int)db_escape_string($this->link, $_REQUEST["skip"]);
+ $filter = db_escape_string($this->link, $_REQUEST["filter"]);
$is_cat = sql_bool_to_bool($_REQUEST["is_cat"]);
$show_excerpt = sql_bool_to_bool($_REQUEST["show_excerpt"]);
$show_content = sql_bool_to_bool($_REQUEST["show_content"]);
/* all_articles, unread, adaptive, marked, updated */
- $view_mode = db_escape_string($_REQUEST["view_mode"]);
+ $view_mode = db_escape_string($this->link, $_REQUEST["view_mode"]);
$include_attachments = sql_bool_to_bool($_REQUEST["include_attachments"]);
- $since_id = (int)db_escape_string($_REQUEST["since_id"]);
+ $since_id = (int)db_escape_string($this->link, $_REQUEST["since_id"]);
$include_nested = sql_bool_to_bool($_REQUEST["include_nested"]);
$sanitize_content = true;
/* do not rely on params below */
- $search = db_escape_string($_REQUEST["search"]);
- $search_mode = db_escape_string($_REQUEST["search_mode"]);
+ $search = db_escape_string($this->link, $_REQUEST["search"]);
+ $search_mode = db_escape_string($this->link, $_REQUEST["search_mode"]);
$headlines = $this->api_get_headlines($this->link, $feed_id, $limit, $offset,
$filter, $is_cat, $show_excerpt, $show_content, $view_mode, false,
@@ -207,10 +207,10 @@ class API extends Handler {
}
function updateArticle() {
- $article_ids = array_filter(explode(",", db_escape_string($_REQUEST["article_ids"])), is_numeric);
- $mode = (int) db_escape_string($_REQUEST["mode"]);
- $data = db_escape_string($_REQUEST["data"]);
- $field_raw = (int)db_escape_string($_REQUEST["field"]);
+ $article_ids = array_filter(explode(",", db_escape_string($this->link, $_REQUEST["article_ids"])), is_numeric);
+ $mode = (int) db_escape_string($this->link, $_REQUEST["mode"]);
+ $data = db_escape_string($this->link, $_REQUEST["data"]);
+ $field_raw = (int)db_escape_string($this->link, $_REQUEST["field"]);
$field = "";
$set_to = "";
@@ -285,7 +285,7 @@ class API extends Handler {
function getArticle() {
- $article_id = join(",", array_filter(explode(",", db_escape_string($_REQUEST["article_id"])), is_numeric));
+ $article_id = join(",", array_filter(explode(",", db_escape_string($this->link, $_REQUEST["article_id"])), is_numeric));
$query = "SELECT id,title,link,content,cached_content,feed_id,comments,int_id,
marked,unread,published,
@@ -348,7 +348,7 @@ class API extends Handler {
}
function updateFeed() {
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
+ $feed_id = db_escape_string($this->link, $_REQUEST["feed_id"]);
update_rss_feed($this->link, $feed_id, true);
@@ -356,8 +356,8 @@ class API extends Handler {
}
function catchupFeed() {
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
- $is_cat = db_escape_string($_REQUEST["is_cat"]);
+ $feed_id = db_escape_string($this->link, $_REQUEST["feed_id"]);
+ $is_cat = db_escape_string($this->link, $_REQUEST["is_cat"]);
catchup_feed($this->link, $feed_id, $is_cat);
@@ -365,13 +365,13 @@ class API extends Handler {
}
function getPref() {
- $pref_name = db_escape_string($_REQUEST["pref_name"]);
+ $pref_name = db_escape_string($this->link, $_REQUEST["pref_name"]);
print $this->wrap(self::STATUS_OK, array("value" => get_pref($this->link, $pref_name)));
}
function getLabels() {
- //$article_ids = array_filter(explode(",", db_escape_string($_REQUEST["article_ids"])), is_numeric);
+ //$article_ids = array_filter(explode(",", db_escape_string($this->link, $_REQUEST["article_ids"])), is_numeric);
$article_id = (int)$_REQUEST['article_id'];
@@ -409,11 +409,11 @@ class API extends Handler {
function setArticleLabel() {
- $article_ids = array_filter(explode(",", db_escape_string($_REQUEST["article_ids"])), is_numeric);
- $label_id = (int) db_escape_string($_REQUEST['label_id']);
- $assign = (bool) db_escape_string($_REQUEST['assign']) == "true";
+ $article_ids = array_filter(explode(",", db_escape_string($this->link, $_REQUEST["article_ids"])), is_numeric);
+ $label_id = (int) db_escape_string($this->link, $_REQUEST['label_id']);
+ $assign = (bool) db_escape_string($this->link, $_REQUEST['assign']) == "true";
- $label = db_escape_string(label_find_caption($this->link,
+ $label = db_escape_string($this->link, label_find_caption($this->link,
$label_id, $_SESSION["uid"]));
$num_updated = 0;
@@ -442,9 +442,9 @@ class API extends Handler {
}
function shareToPublished() {
- $title = db_escape_string(strip_tags($_REQUEST["title"]));
- $url = db_escape_string(strip_tags($_REQUEST["url"]));
- $content = db_escape_string(strip_tags($_REQUEST["content"]));
+ $title = db_escape_string($this->link, strip_tags($_REQUEST["title"]));
+ $url = db_escape_string($this->link, strip_tags($_REQUEST["url"]));
+ $content = db_escape_string($this->link, strip_tags($_REQUEST["content"]));
if (Article::create_published_article($this->link, $title, $url, $content, "", $_SESSION["uid"])) {
print $this->wrap(self::STATUS_OK, array("status" => 'OK'));
diff --git a/classes/article.php b/classes/article.php
index 2f49b1827..595c6c432 100644
--- a/classes/article.php
+++ b/classes/article.php
@@ -8,7 +8,7 @@ class Article extends Handler_Protected {
}
function redirect() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT link FROM ttrss_entries, ttrss_user_entries
WHERE id = '$id' AND id = ref_id AND owner_uid = '".$_SESSION['uid']."'
@@ -27,10 +27,10 @@ class Article extends Handler_Protected {
}
function view() {
- $id = db_escape_string($_REQUEST["id"]);
- $cids = explode(",", db_escape_string($_REQUEST["cids"]));
- $mode = db_escape_string($_REQUEST["mode"]);
- $omode = db_escape_string($_REQUEST["omode"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
+ $cids = explode(",", db_escape_string($this->link, $_REQUEST["cids"]));
+ $mode = db_escape_string($this->link, $_REQUEST["mode"]);
+ $omode = db_escape_string($this->link, $_REQUEST["omode"]);
// in prefetch mode we only output requested cids, main article
// just gets marked as read (it already exists in client cache)
diff --git a/classes/auth/base.php b/classes/auth/base.php
index aa9d657a4..ad7ff3646 100644
--- a/classes/auth/base.php
+++ b/classes/auth/base.php
@@ -21,7 +21,7 @@ class Auth_Base {
$user_id = $this->find_user_by_login($login);
if (!$user_id) {
- $login = db_escape_string($login);
+ $login = db_escape_string($this->link, $login);
$salt = substr(bin2hex(get_random_bytes(125)), 0, 250);
$pwd_hash = encrypt_password($password, $salt, true);
@@ -42,7 +42,7 @@ class Auth_Base {
}
function find_user_by_login($login) {
- $login = db_escape_string($login);
+ $login = db_escape_string($this->link, $login);
$result = db_query($this->link, "SELECT id FROM ttrss_users WHERE
login = '$login'");
diff --git a/classes/dlg.php b/classes/dlg.php
index 3bb2caba4..5789af684 100644
--- a/classes/dlg.php
+++ b/classes/dlg.php
@@ -5,7 +5,7 @@ class Dlg extends Handler_Protected {
function before($method) {
if (parent::before($method)) {
header("Content-Type: text/xml; charset=utf-8");
- $this->param = db_escape_string($_REQUEST["param"]);
+ $this->param = db_escape_string($this->link, $_REQUEST["param"]);
print "<dlg>";
return true;
}
@@ -302,7 +302,7 @@ class Dlg extends Handler_Protected {
function feedBrowser() {
if (defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER) return;
- $browser_search = db_escape_string($_REQUEST["search"]);
+ $browser_search = db_escape_string($this->link, $_REQUEST["search"]);
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"op\" value=\"rpc\">";
print "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\" name=\"method\" value=\"updateFeedBrowser\">";
@@ -350,7 +350,7 @@ class Dlg extends Handler_Protected {
}
function search() {
- $this->params = explode(":", db_escape_string($_REQUEST["param"]), 2);
+ $this->params = explode(":", db_escape_string($this->link, $_REQUEST["param"]), 2);
$active_feed_id = sprintf("%d", $this->params[0]);
$is_cat = $this->params[1] != "false";
@@ -550,7 +550,7 @@ class Dlg extends Handler_Protected {
print "<content><![CDATA[";
$this->params = explode(":", $this->param, 3);
- $feed_id = db_escape_string($this->params[0]);
+ $feed_id = db_escape_string($this->link, $this->params[0]);
$is_cat = (bool) $this->params[1];
$key = get_feed_access_key($this->link, $feed_id, $is_cat);
diff --git a/classes/feeds.php b/classes/feeds.php
index 779614dce..3657a0564 100644
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -202,13 +202,13 @@ class Feeds extends Handler_Protected {
}
}
- @$search = db_escape_string($_REQUEST["query"]);
+ @$search = db_escape_string($this->link, $_REQUEST["query"]);
if ($search) {
$disable_cache = true;
}
- @$search_mode = db_escape_string($_REQUEST["search_mode"]);
+ @$search_mode = db_escape_string($this->link, $_REQUEST["search_mode"]);
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H0", $timing_info);
@@ -533,9 +533,6 @@ class Feeds extends Handler_Protected {
$reply['content'] .= "</div>";
- $reply['content'] .= "<div id=\"PTITLE-FULL-$id\" style=\"display : none\">" .
- htmlspecialchars(strip_tags($line['title'])) . "</div>";
-
$reply['content'] .= "<span id=\"RTITLE-$id\"
onclick=\"return cdmClicked(event, $id);\"
class=\"titleWrap$hlc_suffix\">
@@ -757,17 +754,17 @@ class Feeds extends Handler_Protected {
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("0", $timing_info);
- $omode = db_escape_string($_REQUEST["omode"]);
+ $omode = db_escape_string($this->link, $_REQUEST["omode"]);
- $feed = db_escape_string($_REQUEST["feed"]);
- $method = db_escape_string($_REQUEST["m"]);
- $view_mode = db_escape_string($_REQUEST["view_mode"]);
+ $feed = db_escape_string($this->link, $_REQUEST["feed"]);
+ $method = db_escape_string($this->link, $_REQUEST["m"]);
+ $view_mode = db_escape_string($this->link, $_REQUEST["view_mode"]);
$limit = (int) get_pref($this->link, "DEFAULT_ARTICLE_LIMIT");
@$cat_view = $_REQUEST["cat"] == "true";
- @$next_unread_feed = db_escape_string($_REQUEST["nuf"]);
- @$offset = db_escape_string($_REQUEST["skip"]);
- @$vgroup_last_feed = db_escape_string($_REQUEST["vgrlf"]);
- $order_by = db_escape_string($_REQUEST["order_by"]);
+ @$next_unread_feed = db_escape_string($this->link, $_REQUEST["nuf"]);
+ @$offset = db_escape_string($this->link, $_REQUEST["skip"]);
+ @$vgroup_last_feed = db_escape_string($this->link, $_REQUEST["vgrlf"]);
+ $order_by = db_escape_string($this->link, $_REQUEST["order_by"]);
if (is_numeric($feed)) $feed = (int) $feed;
@@ -809,6 +806,13 @@ class Feeds extends Handler_Protected {
set_pref($this->link, "_DEFAULT_VIEW_LIMIT", $limit);
set_pref($this->link, "_DEFAULT_VIEW_ORDER_BY", $order_by);
+ /* bump login timestamp if needed */
+ if (time() - $_SESSION["last_login_update"] > 3600) {
+ db_query($this->link, "UPDATE ttrss_users SET last_login = NOW() WHERE id = " .
+ $_SESSION["uid"]);
+ $_SESSION["last_login_update"] = time();
+ }
+
if (!$cat_view && is_numeric($feed) && $feed > 0) {
db_query($this->link, "UPDATE ttrss_feeds SET last_viewed = NOW()
WHERE id = '$feed' AND owner_uid = ".$_SESSION["uid"]);
diff --git a/classes/handler/public.php b/classes/handler/public.php
index dc1e10049..53051a1f8 100644
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -21,7 +21,9 @@ class Handler_Public extends Handler {
}
if ($feed == -2)
- $date_sort_field = "last_read";
+ $date_sort_field = "last_published";
+ else if ($feed == -1)
+ $date_sort_field = "last_marked";
$qfh_ret = queryFeedHeadlines($this->link, $feed,
$limit, $view_mode, $is_cat, $search, $search_mode,
@@ -180,7 +182,7 @@ class Handler_Public extends Handler {
}
function getUnread() {
- $login = db_escape_string($_REQUEST["login"]);
+ $login = db_escape_string($this->link, $_REQUEST["login"]);
$fresh = $_REQUEST["fresh"] == "1";
$result = db_query($this->link, "SELECT id FROM ttrss_users WHERE login = '$login'");
@@ -202,7 +204,7 @@ class Handler_Public extends Handler {
}
function getProfiles() {
- $login = db_escape_string($_REQUEST["login"]);
+ $login = db_escape_string($this->link, $_REQUEST["login"]);
$result = db_query($this->link, "SELECT * FROM ttrss_settings_profiles,ttrss_users
WHERE ttrss_users.id = ttrss_settings_profiles.owner_uid AND login = '$login' ORDER BY title");
@@ -222,9 +224,9 @@ class Handler_Public extends Handler {
}
function pubsub() {
- $mode = db_escape_string($_REQUEST['hub_mode']);
- $feed_id = (int) db_escape_string($_REQUEST['id']);
- $feed_url = db_escape_string($_REQUEST['hub_topic']);
+ $mode = db_escape_string($this->link, $_REQUEST['hub_mode']);
+ $feed_id = (int) db_escape_string($this->link, $_REQUEST['id']);
+ $feed_url = db_escape_string($this->link, $_REQUEST['hub_topic']);
if (!PUBSUBHUBBUB_ENABLED) {
header('HTTP/1.0 404 Not Found');
@@ -285,7 +287,7 @@ class Handler_Public extends Handler {
}
function share() {
- $uuid = db_escape_string($_REQUEST["key"]);
+ $uuid = db_escape_string($this->link, $_REQUEST["key"]);
$result = db_query($this->link, "SELECT ref_id, owner_uid FROM ttrss_user_entries WHERE
uuid = '$uuid'");
@@ -307,17 +309,17 @@ class Handler_Public extends Handler {
}
function rss() {
- $feed = db_escape_string($_REQUEST["id"]);
- $key = db_escape_string($_REQUEST["key"]);
+ $feed = db_escape_string($this->link, $_REQUEST["id"]);
+ $key = db_escape_string($this->link, $_REQUEST["key"]);
$is_cat = $_REQUEST["is_cat"] != false;
- $limit = (int)db_escape_string($_REQUEST["limit"]);
- $offset = (int)db_escape_string($_REQUEST["offset"]);
+ $limit = (int)db_escape_string($this->link, $_REQUEST["limit"]);
+ $offset = (int)db_escape_string($this->link, $_REQUEST["offset"]);
- $search = db_escape_string($_REQUEST["q"]);
- $search_mode = db_escape_string($_REQUEST["smode"]);
- $view_mode = db_escape_string($_REQUEST["view-mode"]);
+ $search = db_escape_string($this->link, $_REQUEST["q"]);
+ $search_mode = db_escape_string($this->link, $_REQUEST["smode"]);
+ $view_mode = db_escape_string($this->link, $_REQUEST["view-mode"]);
- $format = db_escape_string($_REQUEST['format']);
+ $format = db_escape_string($this->link, $_REQUEST['format']);
if (!$format) $format = 'atom';
@@ -371,10 +373,10 @@ class Handler_Public extends Handler {
if ($action == 'share') {
- $title = db_escape_string(strip_tags($_REQUEST["title"]));
- $url = db_escape_string(strip_tags($_REQUEST["url"]));
- $content = db_escape_string(strip_tags($_REQUEST["content"]));
- $labels = db_escape_string(strip_tags($_REQUEST["labels"]));
+ $title = db_escape_string($this->link, strip_tags($_REQUEST["title"]));
+ $url = db_escape_string($this->link, strip_tags($_REQUEST["url"]));
+ $content = db_escape_string($this->link, strip_tags($_REQUEST["content"]));
+ $labels = db_escape_string($this->link, strip_tags($_REQUEST["labels"]));
Article::create_published_article($this->link, $title, $url, $content, $labels,
$_SESSION["uid"]);
@@ -483,7 +485,7 @@ class Handler_Public extends Handler {
if (!SINGLE_USER_MODE) {
- $login = db_escape_string($_POST["login"]);
+ $login = db_escape_string($this->link, $_POST["login"]);
$password = $_POST["password"];
$remember_me = $_POST["remember_me"];
@@ -496,7 +498,7 @@ class Handler_Public extends Handler {
if ($_POST["profile"]) {
- $profile = db_escape_string($_POST["profile"]);
+ $profile = db_escape_string($this->link, $_POST["profile"]);
$result = db_query($this->link, "SELECT id FROM ttrss_settings_profiles
WHERE id = '$profile' AND owner_uid = " . $_SESSION["uid"]);
@@ -525,7 +527,7 @@ class Handler_Public extends Handler {
if ($_SESSION["uid"]) {
- $feed_url = db_escape_string(trim($_REQUEST["feed_url"]));
+ $feed_url = db_escape_string($this->link, trim($_REQUEST["feed_url"]));
header('Content-Type: text/html; charset=utf-8');
print "<html>
@@ -618,14 +620,14 @@ class Handler_Public extends Handler {
}
function subscribe2() {
- $feed_url = db_escape_string(trim($_REQUEST["feed_url"]));
- $cat_id = db_escape_string($_REQUEST["cat_id"]);
- $from = db_escape_string($_REQUEST["from"]);
+ $feed_url = db_escape_string($this->link, trim($_REQUEST["feed_url"]));
+ $cat_id = db_escape_string($this->link, $_REQUEST["cat_id"]);
+ $from = db_escape_string($this->link, $_REQUEST["from"]);
/* only read authentication information from POST */
- $auth_login = db_escape_string(trim($_POST["auth_login"]));
- $auth_pass = db_escape_string(trim($_POST["auth_pass"]));
+ $auth_login = db_escape_string($this->link, trim($_POST["auth_login"]));
+ $auth_pass = db_escape_string($this->link, trim($_POST["auth_pass"]));
$rc = subscribe_to_feed($this->link, $feed_url, $cat_id, $auth_login, $auth_pass);
@@ -706,5 +708,92 @@ class Handler_Public extends Handler {
print json_encode(array("error" => array("code" => 7)));
}
+ function forgotpass() {
+ header('Content-Type: text/html; charset=utf-8');
+ print "<html>
+ <head>
+ <title>Tiny Tiny RSS</title>
+ <link rel=\"stylesheet\" type=\"text/css\" href=\"utility.css\">
+ <script type=\"text/javascript\" src=\"lib/prototype.js\"></script>
+ <script type=\"text/javascript\" src=\"lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls\"></script>
+ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
+ </head>
+ <body id='forgotpass'>";
+
+ print '<div class="floatingLogo"><img src="images/logo_wide.png"></div>';
+ print "<h1>".__("Reset password")."</h1>";
+
+ @$method = $_POST['method'];
+
+ if (!$method) {
+ $secretkey = uniqid();
+ $_SESSION["secretkey"] = $secretkey;
+
+ print "<form method='POST' action='public.php'>";
+ print "<input type='hidden' name='secretkey' value='$secretkey'>";
+ print "<input type='hidden' name='method' value='do'>";
+ print "<input type='hidden' name='op' value='forgotpass'>";
+
+ print "<fieldset>";
+ print "<label>".__("Login:")."</label>";
+ print "<input type='text' name='login' value='' required>";
+ print "</fieldset>";
+
+ print "<fieldset>";
+ print "<label>".__("Email:")."</label>";
+ print "<input type='email' name='email' value='' required>";
+ print "</fieldset>";
+
+ print "<fieldset>";
+ print "<label>".__("How much is two plus two:")."</label>";
+ print "<input type='text' name='test' value='' required>";
+ print "</fieldset>";
+
+ print "<p/>";
+ print "<button type='submit'>".__("Reset password")."</button>";
+
+ print "</form>";
+ } else if ($method == 'do') {
+
+ $secretkey = $_POST["secretkey"];
+ $login = db_escape_string($this->link, $_POST["login"]);
+ $email = db_escape_string($this->link, $_POST["email"]);
+ $test = db_escape_string($this->link, $_POST["test"]);
+
+ if (($test != 4 && $test != 'four') || !$email || !$login) {
+ print_error(__('Some of the required form parameters are missing or incorrect.'));
+
+ print "<p><a href=\"public.php?op=forgotpass\">".__("Go back")."</a></p>";
+
+ } else if ($_SESSION["secretkey"] == $secretkey) {
+
+ $result = db_query($this->link, "SELECT id FROM ttrss_users
+ WHERE login = '$login' AND email = '$email'");
+
+ if (db_num_rows($result) != 0) {
+ $id = db_fetch_result($result, 0, "id");
+
+ Pref_Users::resetUserPassword($this->link, $id, false);
+
+ print "<p>".__("Completed.")."</p>";
+
+ } else {
+ print_error(__("Sorry, login and email combination not found."));
+ print "<p><a href=\"public.php?op=forgotpass\">".__("Go back")."</a></p>";
+ }
+
+ } else {
+ print_error(__("Form secret key incorrect. Please enable cookies and try again."));
+ print "<p><a href=\"public.php?op=forgotpass\">".__("Go back")."</a></p>";
+
+ }
+
+ }
+
+ print "</body>";
+ print "</html>";
+
+ }
+
}
?>
diff --git a/classes/opml.php b/classes/opml.php
index 34067e017..d4a0e9875 100644
--- a/classes/opml.php
+++ b/classes/opml.php
@@ -253,13 +253,13 @@ class Opml extends Handler_Protected {
private function opml_import_feed($doc, $node, $cat_id, $owner_uid) {
$attrs = $node->attributes;
- $feed_title = db_escape_string($attrs->getNamedItem('text')->nodeValue);
- if (!$feed_title) $feed_title = db_escape_string($attrs->getNamedItem('title')->nodeValue);
+ $feed_title = db_escape_string($this->link, $attrs->getNamedItem('text')->nodeValue);
+ if (!$feed_title) $feed_title = db_escape_string($this->link, $attrs->getNamedItem('title')->nodeValue);
- $feed_url = db_escape_string($attrs->getNamedItem('xmlUrl')->nodeValue);
- if (!$feed_url) $feed_url = db_escape_string($attrs->getNamedItem('xmlURL')->nodeValue);
+ $feed_url = db_escape_string($this->link, $attrs->getNamedItem('xmlUrl')->nodeValue);
+ if (!$feed_url) $feed_url = db_escape_string($this->link, $attrs->getNamedItem('xmlURL')->nodeValue);
- $site_url = db_escape_string($attrs->getNamedItem('htmlUrl')->nodeValue);
+ $site_url = db_escape_string($this->link, $attrs->getNamedItem('htmlUrl')->nodeValue);
if ($feed_url && $feed_title) {
$result = db_query($this->link, "SELECT id FROM ttrss_feeds WHERE
@@ -285,11 +285,11 @@ class Opml extends Handler_Protected {
private function opml_import_label($doc, $node, $owner_uid) {
$attrs = $node->attributes;
- $label_name = db_escape_string($attrs->getNamedItem('label-name')->nodeValue);
+ $label_name = db_escape_string($this->link, $attrs->getNamedItem('label-name')->nodeValue);
if ($label_name) {
- $fg_color = db_escape_string($attrs->getNamedItem('label-fg-color')->nodeValue);
- $bg_color = db_escape_string($attrs->getNamedItem('label-bg-color')->nodeValue);
+ $fg_color = db_escape_string($this->link, $attrs->getNamedItem('label-fg-color')->nodeValue);
+ $bg_color = db_escape_string($this->link, $attrs->getNamedItem('label-bg-color')->nodeValue);
if (!label_find_id($this->link, $label_name, $_SESSION['uid'])) {
$this->opml_notice(T_sprintf("Adding label %s", htmlspecialchars($label_name)));
@@ -302,10 +302,10 @@ class Opml extends Handler_Protected {
private function opml_import_preference($doc, $node, $owner_uid) {
$attrs = $node->attributes;
- $pref_name = db_escape_string($attrs->getNamedItem('pref-name')->nodeValue);
+ $pref_name = db_escape_string($this->link, $attrs->getNamedItem('pref-name')->nodeValue);
if ($pref_name) {
- $pref_value = db_escape_string($attrs->getNamedItem('value')->nodeValue);
+ $pref_value = db_escape_string($this->link, $attrs->getNamedItem('value')->nodeValue);
$this->opml_notice(T_sprintf("Setting preference key %s to %s",
$pref_name, $pref_value));
@@ -317,7 +317,7 @@ class Opml extends Handler_Protected {
private function opml_import_filter($doc, $node, $owner_uid) {
$attrs = $node->attributes;
- $filter_type = db_escape_string($attrs->getNamedItem('filter-type')->nodeValue);
+ $filter_type = db_escape_string($this->link, $attrs->getNamedItem('filter-type')->nodeValue);
if ($filter_type == '2') {
$filter = json_decode($node->nodeValue, true);
@@ -344,13 +344,13 @@ class Opml extends Handler_Protected {
if (!$rule["cat_filter"]) {
$tmp_result = db_query($this->link, "SELECT id FROM ttrss_feeds
- WHERE title = '".db_escape_string($rule["feed"])."' AND owner_uid = ".$_SESSION["uid"]);
+ WHERE title = '".db_escape_string($this->link, $rule["feed"])."' AND owner_uid = ".$_SESSION["uid"]);
if (db_num_rows($tmp_result) > 0) {
$feed_id = db_fetch_result($tmp_result, 0, "id");
}
} else {
$tmp_result = db_query($this->link, "SELECT id FROM ttrss_feed_categories
- WHERE title = '".db_escape_string($rule["feed"])."' AND owner_uid = ".$_SESSION["uid"]);
+ WHERE title = '".db_escape_string($this->link, $rule["feed"])."' AND owner_uid = ".$_SESSION["uid"]);
if (db_num_rows($tmp_result) > 0) {
$cat_id = db_fetch_result($tmp_result, 0, "id");
@@ -358,7 +358,7 @@ class Opml extends Handler_Protected {
}
$cat_filter = bool_to_sql_bool($rule["cat_filter"]);
- $reg_exp = db_escape_string($rule["reg_exp"]);
+ $reg_exp = db_escape_string($this->link, $rule["reg_exp"]);
$filter_type = (int)$rule["filter_type"];
db_query($this->link, "INSERT INTO ttrss_filters2_rules (feed_id,cat_id,filter_id,filter_type,reg_exp,cat_filter)
@@ -368,7 +368,7 @@ class Opml extends Handler_Protected {
foreach ($filter["actions"] as $action) {
$action_id = (int)$action["action_id"];
- $action_param = db_escape_string($action["action_param"]);
+ $action_param = db_escape_string($this->link, $action["action_param"]);
db_query($this->link, "INSERT INTO ttrss_filters2_actions (filter_id,action_id,action_param)
VALUES ($filter_id, $action_id, '$action_param')");
@@ -386,10 +386,10 @@ class Opml extends Handler_Protected {
$default_cat_id = (int) get_feed_category($this->link, 'Imported feeds', false);
if ($root_node) {
- $cat_title = db_escape_string($root_node->attributes->getNamedItem('text')->nodeValue);
+ $cat_title = db_escape_string($this->link, $root_node->attributes->getNamedItem('text')->nodeValue);
if (!$cat_title)
- $cat_title = db_escape_string($root_node->attributes->getNamedItem('title')->nodeValue);
+ $cat_title = db_escape_string($this->link, $root_node->attributes->getNamedItem('title')->nodeValue);
if (!in_array($cat_title, array("tt-rss-filters", "tt-rss-labels", "tt-rss-prefs"))) {
$cat_id = get_feed_category($this->link, $cat_title, $parent_id);
@@ -418,12 +418,12 @@ class Opml extends Handler_Protected {
foreach ($outlines as $node) {
if ($node->hasAttributes() && strtolower($node->tagName) == "outline") {
$attrs = $node->attributes;
- $node_cat_title = db_escape_string($attrs->getNamedItem('text')->nodeValue);
+ $node_cat_title = db_escape_string($this->link, $attrs->getNamedItem('text')->nodeValue);
if (!$node_cat_title)
- $node_cat_title = db_escape_string($attrs->getNamedItem('title')->nodeValue);
+ $node_cat_title = db_escape_string($this->link, $attrs->getNamedItem('title')->nodeValue);
- $node_feed_url = db_escape_string($attrs->getNamedItem('xmlUrl')->nodeValue);
+ $node_feed_url = db_escape_string($this->link, $attrs->getNamedItem('xmlUrl')->nodeValue);
if ($node_cat_title && !$node_feed_url) {
$this->opml_import_category($doc, $node, $owner_uid, $cat_id);
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index 7dabd42a8..0ef17b77e 100644
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -211,7 +211,7 @@ class PluginHost {
function load_data($force = false) {
if ($this->owner_uid && (!$_SESSION["plugin_storage"] || $force)) {
- $plugin = db_escape_string($plugin);
+ $plugin = db_escape_string($this->link, $plugin);
$result = db_query($this->link, "SELECT name, content FROM ttrss_plugin_storage
WHERE owner_uid = '".$this->owner_uid."'");
@@ -226,7 +226,7 @@ class PluginHost {
private function save_data($plugin) {
if ($this->owner_uid) {
- $plugin = db_escape_string($plugin);
+ $plugin = db_escape_string($this->link, $plugin);
db_query($this->link, "BEGIN");
@@ -236,7 +236,7 @@ class PluginHost {
if (!isset($this->storage[$plugin]))
$this->storage[$plugin] = array();
- $content = db_escape_string(serialize($this->storage[$plugin]));
+ $content = db_escape_string($this->link, serialize($this->storage[$plugin]));
if (db_num_rows($result) != 0) {
db_query($this->link, "UPDATE ttrss_plugin_storage SET content = '$content'
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index 285995dfc..ceda13374 100644
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -14,8 +14,8 @@ class Pref_Feeds extends Handler_Protected {
}
function renamecat() {
- $title = db_escape_string($_REQUEST['title']);
- $id = db_escape_string($_REQUEST['id']);
+ $title = db_escape_string($this->link, $_REQUEST['title']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
if ($title) {
db_query($this->link, "UPDATE ttrss_feed_categories SET
@@ -293,7 +293,7 @@ class Pref_Feeds extends Handler_Protected {
if ($item_id != 'root') {
if ($parent_id && $parent_id != 'root') {
$parent_bare_id = substr($parent_id, strpos($parent_id, ':')+1);
- $parent_qpart = db_escape_string($parent_bare_id);
+ $parent_qpart = db_escape_string($this->link, $parent_bare_id);
} else {
$parent_qpart = 'NULL';
}
@@ -319,7 +319,7 @@ class Pref_Feeds extends Handler_Protected {
if (strpos($id, "FEED") === 0) {
$cat_id = ($item_id != "root") ?
- db_escape_string($bare_item_id) : "NULL";
+ db_escape_string($this->link, $bare_item_id) : "NULL";
$cat_qpart = ($cat_id != 0) ? "cat_id = '$cat_id'" :
"cat_id = NULL";
@@ -334,7 +334,7 @@ class Pref_Feeds extends Handler_Protected {
$nest_level+1);
if ($item_id != 'root') {
- $parent_qpart = db_escape_string($bare_id);
+ $parent_qpart = db_escape_string($this->link, $bare_id);
} else {
$parent_qpart = 'NULL';
}
@@ -424,7 +424,7 @@ class Pref_Feeds extends Handler_Protected {
}
function removeicon() {
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
+ $feed_id = db_escape_string($this->link, $_REQUEST["feed_id"]);
$result = db_query($this->link, "SELECT id FROM ttrss_feeds
WHERE id = '$feed_id' AND owner_uid = ". $_SESSION["uid"]);
@@ -440,7 +440,7 @@ class Pref_Feeds extends Handler_Protected {
header("Content-type: text/html");
$icon_file = $_FILES['icon_file']['tmp_name'];
- $feed_id = db_escape_string($_REQUEST["feed_id"]);
+ $feed_id = db_escape_string($this->link, $_REQUEST["feed_id"]);
if (is_file($icon_file) && $feed_id) {
if (filesize($icon_file) < 20000) {
@@ -472,7 +472,7 @@ class Pref_Feeds extends Handler_Protected {
global $purge_intervals;
global $update_intervals;
- $feed_id = db_escape_string($_REQUEST["id"]);
+ $feed_id = db_escape_string($this->link, $_REQUEST["id"]);
$result = db_query($this->link,
"SELECT * FROM ttrss_feeds WHERE id = '$feed_id' AND
@@ -708,7 +708,7 @@ class Pref_Feeds extends Handler_Protected {
global $purge_intervals;
global $update_intervals;
- $feed_ids = db_escape_string($_REQUEST["ids"]);
+ $feed_ids = db_escape_string($this->link, $_REQUEST["ids"]);
print "<div class=\"dialogNotice\">" . __("Enable the options you wish to apply using checkboxes on the right:") . "</div>";
@@ -862,27 +862,27 @@ class Pref_Feeds extends Handler_Protected {
function editsaveops($batch) {
- $feed_title = db_escape_string(trim($_POST["title"]));
- $feed_link = db_escape_string(trim($_POST["feed_url"]));
- $upd_intl = (int) db_escape_string($_POST["update_interval"]);
- $purge_intl = (int) db_escape_string($_POST["purge_interval"]);
- $feed_id = (int) db_escape_string($_POST["id"]); /* editSave */
- $feed_ids = db_escape_string($_POST["ids"]); /* batchEditSave */
- $cat_id = (int) db_escape_string($_POST["cat_id"]);
- $auth_login = db_escape_string(trim($_POST["auth_login"]));
- $auth_pass = db_escape_string(trim($_POST["auth_pass"]));
- $private = checkbox_to_sql_bool(db_escape_string($_POST["private"]));
+ $feed_title = db_escape_string($this->link, trim($_POST["title"]));
+ $feed_link = db_escape_string($this->link, trim($_POST["feed_url"]));
+ $upd_intl = (int) db_escape_string($this->link, $_POST["update_interval"]);
+ $purge_intl = (int) db_escape_string($this->link, $_POST["purge_interval"]);
+ $feed_id = (int) db_escape_string($this->link, $_POST["id"]); /* editSave */
+ $feed_ids = db_escape_string($this->link, $_POST["ids"]); /* batchEditSave */
+ $cat_id = (int) db_escape_string($this->link, $_POST["cat_id"]);
+ $auth_login = db_escape_string($this->link, trim($_POST["auth_login"]));
+ $auth_pass = db_escape_string($this->link, trim($_POST["auth_pass"]));
+ $private = checkbox_to_sql_bool(db_escape_string($this->link, $_POST["private"]));
$include_in_digest = checkbox_to_sql_bool(
- db_escape_string($_POST["include_in_digest"]));
+ db_escape_string($this->link, $_POST["include_in_digest"]));
$cache_images = checkbox_to_sql_bool(
- db_escape_string($_POST["cache_images"]));
+ db_escape_string($this->link, $_POST["cache_images"]));
$hide_images = checkbox_to_sql_bool(
- db_escape_string($_POST["hide_images"]));
+ db_escape_string($this->link, $_POST["hide_images"]));
$always_display_enclosures = checkbox_to_sql_bool(
- db_escape_string($_POST["always_display_enclosures"]));
+ db_escape_string($this->link, $_POST["always_display_enclosures"]));
$mark_unread_on_update = checkbox_to_sql_bool(
- db_escape_string($_POST["mark_unread_on_update"]));
+ db_escape_string($this->link, $_POST["mark_unread_on_update"]));
if (get_pref($this->link, 'ENABLE_FEED_CATS')) {
if ($cat_id && $cat_id != 0) {
@@ -999,7 +999,7 @@ class Pref_Feeds extends Handler_Protected {
function resetPubSub() {
- $ids = db_escape_string($_REQUEST["ids"]);
+ $ids = db_escape_string($this->link, $_REQUEST["ids"]);
db_query($this->link, "UPDATE ttrss_feeds SET pubsub_state = 0 WHERE id IN ($ids)
AND owner_uid = " . $_SESSION["uid"]);
@@ -1009,7 +1009,7 @@ class Pref_Feeds extends Handler_Protected {
function remove() {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
$this->remove_feed($this->link, $id, $_SESSION["uid"]);
@@ -1019,14 +1019,14 @@ class Pref_Feeds extends Handler_Protected {
}
function clear() {
- $id = db_escape_string($_REQUEST["id"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
$this->clear_feed_articles($this->link, $id);
}
function rescore() {
require_once "rssfuncs.php";
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
@@ -1132,9 +1132,9 @@ class Pref_Feeds extends Handler_Protected {
}
function categorize() {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"]));
- $cat_id = db_escape_string($_REQUEST["cat_id"]);
+ $cat_id = db_escape_string($this->link, $_REQUEST["cat_id"]);
if ($cat_id == 0) {
$cat_id_qpart = 'NULL';
@@ -1156,14 +1156,14 @@ class Pref_Feeds extends Handler_Protected {
}
function removeCat() {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
$this->remove_feed_category($this->link, $id, $_SESSION["uid"]);
}
}
function addCat() {
- $feed_cat = db_escape_string(trim($_REQUEST["cat"]));
+ $feed_cat = db_escape_string($this->link, trim($_REQUEST["cat"]));
add_feed_category($this->link, $feed_cat);
}
@@ -1205,7 +1205,7 @@ class Pref_Feeds extends Handler_Protected {
__("Inactive feeds") . "</button>";
}
- $feed_search = db_escape_string($_REQUEST["search"]);
+ $feed_search = db_escape_string($this->link, $_REQUEST["search"]);
if (array_key_exists("search", $_REQUEST)) {
$_SESSION["prefs_feed_search"] = $feed_search;
diff --git a/classes/pref/filters.php b/classes/pref/filters.php
index 1921f2b97..c97628e51 100644
--- a/classes/pref/filters.php
+++ b/classes/pref/filters.php
@@ -13,7 +13,7 @@ class Pref_Filters extends Handler_Protected {
$filter["enabled"] = true;
$filter["match_any_rule"] = sql_bool_to_bool(
- checkbox_to_sql_bool(db_escape_string($_REQUEST["match_any_rule"])));
+ checkbox_to_sql_bool(db_escape_string($this->link, $_REQUEST["match_any_rule"])));
$filter["rules"] = array();
$result = db_query($this->link, "SELECT id,name FROM ttrss_filter_types");
@@ -168,7 +168,7 @@ class Pref_Filters extends Handler_Protected {
if ($line['action_id'] == 7) {
$label_result = db_query($this->link, "SELECT fg_color, bg_color
- FROM ttrss_labels2 WHERE caption = '".db_escape_string($line['action_param'])."' AND
+ FROM ttrss_labels2 WHERE caption = '".db_escape_string($this->link, $line['action_param'])."' AND
owner_uid = " . $_SESSION["uid"]);
if (db_num_rows($label_result) > 0) {
@@ -207,7 +207,7 @@ class Pref_Filters extends Handler_Protected {
function edit() {
- $filter_id = db_escape_string($_REQUEST["id"]);
+ $filter_id = db_escape_string($this->link, $_REQUEST["id"]);
$result = db_query($this->link,
"SELECT * FROM ttrss_filters2 WHERE id = '$filter_id' AND owner_uid = " . $_SESSION["uid"]);
@@ -403,9 +403,9 @@ class Pref_Filters extends Handler_Protected {
# print_r($_REQUEST);
- $filter_id = db_escape_string($_REQUEST["id"]);
- $enabled = checkbox_to_sql_bool(db_escape_string($_REQUEST["enabled"]));
- $match_any_rule = checkbox_to_sql_bool(db_escape_string($_REQUEST["match_any_rule"]));
+ $filter_id = db_escape_string($this->link, $_REQUEST["id"]);
+ $enabled = checkbox_to_sql_bool(db_escape_string($this->link, $_REQUEST["enabled"]));
+ $match_any_rule = checkbox_to_sql_bool(db_escape_string($this->link, $_REQUEST["match_any_rule"]));
$result = db_query($this->link, "UPDATE ttrss_filters2 SET enabled = $enabled,
match_any_rule = $match_any_rule
@@ -418,7 +418,7 @@ class Pref_Filters extends Handler_Protected {
function remove() {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
db_query($this->link, "DELETE FROM ttrss_filters2 WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]);
@@ -457,9 +457,9 @@ class Pref_Filters extends Handler_Protected {
foreach ($rules as $rule) {
if ($rule) {
- $reg_exp = strip_tags(db_escape_string(trim($rule["reg_exp"])));
- $filter_type = (int) db_escape_string(trim($rule["filter_type"]));
- $feed_id = db_escape_string(trim($rule["feed_id"]));
+ $reg_exp = strip_tags(db_escape_string($this->link, trim($rule["reg_exp"])));
+ $filter_type = (int) db_escape_string($this->link, trim($rule["filter_type"]));
+ $feed_id = db_escape_string($this->link, trim($rule["feed_id"]));
if (strpos($feed_id, "CAT:") === 0) {
@@ -487,9 +487,9 @@ class Pref_Filters extends Handler_Protected {
foreach ($actions as $action) {
if ($action) {
- $action_id = (int) db_escape_string($action["action_id"]);
- $action_param = db_escape_string($action["action_param"]);
- $action_param_label = db_escape_string($action["action_param_label"]);
+ $action_id = (int) db_escape_string($this->link, $action["action_id"]);
+ $action_param = db_escape_string($this->link, $action["action_param"]);
+ $action_param_label = db_escape_string($this->link, $action["action_param_label"]);
if ($action_id == 7) {
$action_param = $action_param_label;
@@ -541,13 +541,13 @@ class Pref_Filters extends Handler_Protected {
function index() {
- $sort = db_escape_string($_REQUEST["sort"]);
+ $sort = db_escape_string($this->link, $_REQUEST["sort"]);
if (!$sort || $sort == "undefined") {
$sort = "reg_exp";
}
- $filter_search = db_escape_string($_REQUEST["search"]);
+ $filter_search = db_escape_string($this->link, $_REQUEST["search"]);
if (array_key_exists("search", $_REQUEST)) {
$_SESSION["prefs_filter_search"] = $filter_search;
@@ -559,7 +559,7 @@ class Pref_Filters extends Handler_Protected {
print "<div id=\"pref-filter-header\" dojoType=\"dijit.layout.ContentPane\" region=\"top\">";
print "<div id=\"pref-filter-toolbar\" dojoType=\"dijit.Toolbar\">";
- $filter_search = db_escape_string($_REQUEST["search"]);
+ $filter_search = db_escape_string($this->link, $_REQUEST["search"]);
if (array_key_exists("search", $_REQUEST)) {
$_SESSION["prefs_filter_search"] = $filter_search;
@@ -806,7 +806,7 @@ class Pref_Filters extends Handler_Protected {
$action = json_decode($_REQUEST["action"], true);
if ($action) {
- $action_param = db_escape_string($action["action_param"]);
+ $action_param = db_escape_string($this->link, $action["action_param"]);
$action_id = (int)$action["action_id"];
} else {
$action_param = "";
@@ -914,7 +914,7 @@ class Pref_Filters extends Handler_Protected {
}
function join() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
if (count($ids) > 1) {
$base_id = array_shift($ids);
diff --git a/classes/pref/labels.php b/classes/pref/labels.php
index e63a0cfc2..b45354c94 100644
--- a/classes/pref/labels.php
+++ b/classes/pref/labels.php
@@ -8,7 +8,7 @@ class Pref_Labels extends Handler_Protected {
}
function edit() {
- $label_id = db_escape_string($_REQUEST['id']);
+ $label_id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT * FROM ttrss_labels2 WHERE
id = '$label_id' AND owner_uid = " . $_SESSION["uid"]);
@@ -118,11 +118,11 @@ class Pref_Labels extends Handler_Protected {
}
function colorset() {
- $kind = db_escape_string($_REQUEST["kind"]);
- $ids = split(',', db_escape_string($_REQUEST["ids"]));
- $color = db_escape_string($_REQUEST["color"]);
- $fg = db_escape_string($_REQUEST["fg"]);
- $bg = db_escape_string($_REQUEST["bg"]);
+ $kind = db_escape_string($this->link, $_REQUEST["kind"]);
+ $ids = split(',', db_escape_string($this->link, $_REQUEST["ids"]));
+ $color = db_escape_string($this->link, $_REQUEST["color"]);
+ $fg = db_escape_string($this->link, $_REQUEST["fg"]);
+ $bg = db_escape_string($this->link, $_REQUEST["bg"]);
foreach ($ids as $id) {
@@ -136,7 +136,7 @@ class Pref_Labels extends Handler_Protected {
AND owner_uid = " . $_SESSION["uid"]);
}
- $caption = db_escape_string(label_find_caption($this->link, $id, $_SESSION["uid"]));
+ $caption = db_escape_string($this->link, label_find_caption($this->link, $id, $_SESSION["uid"]));
/* Remove cached data */
@@ -149,14 +149,14 @@ class Pref_Labels extends Handler_Protected {
}
function colorreset() {
- $ids = split(',', db_escape_string($_REQUEST["ids"]));
+ $ids = split(',', db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
db_query($this->link, "UPDATE ttrss_labels2 SET
fg_color = '', bg_color = '' WHERE id = '$id'
AND owner_uid = " . $_SESSION["uid"]);
- $caption = db_escape_string(label_find_caption($this->link, $id, $_SESSION["uid"]));
+ $caption = db_escape_string($this->link, label_find_caption($this->link, $id, $_SESSION["uid"]));
/* Remove cached data */
@@ -168,8 +168,8 @@ class Pref_Labels extends Handler_Protected {
function save() {
- $id = db_escape_string($_REQUEST["id"]);
- $caption = db_escape_string(trim($_REQUEST["caption"]));
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
+ $caption = db_escape_string($this->link, trim($_REQUEST["caption"]));
db_query($this->link, "BEGIN");
@@ -190,7 +190,7 @@ class Pref_Labels extends Handler_Protected {
/* Update filters that reference label being renamed */
- $old_caption = db_escape_string($old_caption);
+ $old_caption = db_escape_string($this->link, $old_caption);
db_query($this->link, "UPDATE ttrss_filters2_actions SET
action_param = '$caption' WHERE action_param = '$old_caption'
@@ -213,7 +213,7 @@ class Pref_Labels extends Handler_Protected {
function remove() {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
label_remove($this->link, $id, $_SESSION["uid"]);
@@ -222,8 +222,8 @@ class Pref_Labels extends Handler_Protected {
}
function add() {
- $caption = db_escape_string($_REQUEST["caption"]);
- $output = db_escape_string($_REQUEST["output"]);
+ $caption = db_escape_string($this->link, $_REQUEST["caption"]);
+ $output = db_escape_string($this->link, $_REQUEST["output"]);
if ($caption) {
@@ -250,13 +250,13 @@ class Pref_Labels extends Handler_Protected {
function index() {
- $sort = db_escape_string($_REQUEST["sort"]);
+ $sort = db_escape_string($this->link, $_REQUEST["sort"]);
if (!$sort || $sort == "undefined") {
$sort = "caption";
}
- $label_search = db_escape_string($_REQUEST["search"]);
+ $label_search = db_escape_string($this->link, $_REQUEST["search"]);
if (array_key_exists("search", $_REQUEST)) {
$_SESSION["prefs_label_search"] = $label_search;
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index 8b8630c82..4fb8650a2 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -50,8 +50,8 @@ class Pref_Prefs extends Handler_Protected {
foreach (array_keys($_POST) as $pref_name) {
- $pref_name = db_escape_string($pref_name);
- $value = db_escape_string($_POST[$pref_name]);
+ $pref_name = db_escape_string($this->link, $pref_name);
+ $value = db_escape_string($this->link, $_POST[$pref_name]);
if ($pref_name == 'DIGEST_PREFERRED_TIME') {
if (get_pref($this->link, 'DIGEST_PREFERRED_TIME') != $value) {
@@ -71,7 +71,7 @@ class Pref_Prefs extends Handler_Protected {
function getHelp() {
- $pref_name = db_escape_string($_REQUEST["pn"]);
+ $pref_name = db_escape_string($this->link, $_REQUEST["pn"]);
$result = db_query($this->link, "SELECT help_text FROM ttrss_prefs
WHERE pref_name = '$pref_name'");
@@ -86,8 +86,8 @@ class Pref_Prefs extends Handler_Protected {
function changeemail() {
- $email = db_escape_string($_POST["email"]);
- $full_name = db_escape_string($_POST["full_name"]);
+ $email = db_escape_string($this->link, $_POST["email"]);
+ $full_name = db_escape_string($this->link, $_POST["full_name"]);
$active_uid = $_SESSION["uid"];
@@ -798,7 +798,7 @@ class Pref_Prefs extends Handler_Protected {
}
function otpenable() {
- $password = db_escape_string($_REQUEST["password"]);
+ $password = db_escape_string($this->link, $_REQUEST["password"]);
$enable_otp = $_REQUEST["enable_otp"] == "on";
global $pluginhost;
@@ -819,7 +819,7 @@ class Pref_Prefs extends Handler_Protected {
}
function otpdisable() {
- $password = db_escape_string($_REQUEST["password"]);
+ $password = db_escape_string($this->link, $_REQUEST["password"]);
global $pluginhost;
$authenticator = $pluginhost->get_plugin($_SESSION["auth_module"]);
@@ -846,7 +846,7 @@ class Pref_Prefs extends Handler_Protected {
}
function clearplugindata() {
- $name = db_escape_string($_REQUEST["name"]);
+ $name = db_escape_string($this->link, $_REQUEST["name"]);
global $pluginhost;
$pluginhost->clear_data($pluginhost->get_plugin($name));
diff --git a/classes/pref/users.php b/classes/pref/users.php
index d36ed29f7..b4f043775 100644
--- a/classes/pref/users.php
+++ b/classes/pref/users.php
@@ -116,7 +116,7 @@ class Pref_Users extends Handler_Protected {
header("Content-Type: text/xml");
- $id = db_escape_string($_REQUEST["id"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
print "<dlg id=\"$method\">";
print "<title>".__('User Editor')."</title>";
@@ -199,11 +199,11 @@ class Pref_Users extends Handler_Protected {
}
function editSave() {
- $login = db_escape_string(trim($_REQUEST["login"]));
- $uid = db_escape_string($_REQUEST["id"]);
+ $login = db_escape_string($this->link, trim($_REQUEST["login"]));
+ $uid = db_escape_string($this->link, $_REQUEST["id"]);
$access_level = (int) $_REQUEST["access_level"];
- $email = db_escape_string(trim($_REQUEST["email"]));
- $password = db_escape_string(trim($_REQUEST["password"]));
+ $email = db_escape_string($this->link, trim($_REQUEST["email"]));
+ $password = db_escape_string($this->link, trim($_REQUEST["password"]));
if ($password) {
$salt = substr(bin2hex(get_random_bytes(125)), 0, 250);
@@ -220,7 +220,7 @@ class Pref_Users extends Handler_Protected {
}
function remove() {
- $ids = split(",", db_escape_string($_REQUEST["ids"]));
+ $ids = split(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
if ($id != $_SESSION["uid"] && $id != 1) {
@@ -233,7 +233,7 @@ class Pref_Users extends Handler_Protected {
function add() {
- $login = db_escape_string(trim($_REQUEST["login"]));
+ $login = db_escape_string($this->link, trim($_REQUEST["login"]));
$tmp_user_pwd = make_password(8);
$salt = substr(bin2hex(get_random_bytes(125)), 0, 250);
$pwd_hash = encrypt_password($tmp_user_pwd, $salt, true);
@@ -270,11 +270,9 @@ class Pref_Users extends Handler_Protected {
}
}
- function resetPass() {
-
- $uid = db_escape_string($_REQUEST["id"]);
+ static function resetUserPassword($link, $uid, $show_password) {
- $result = db_query($this->link, "SELECT login,email
+ $result = db_query($link, "SELECT login,email
FROM ttrss_users WHERE id = '$uid'");
$login = db_fetch_result($result, 0, "login");
@@ -286,18 +284,20 @@ class Pref_Users extends Handler_Protected {
$pwd_hash = encrypt_password($tmp_user_pwd, $new_salt, true);
- db_query($this->link, "UPDATE ttrss_users SET pwd_hash = '$pwd_hash', salt = '$new_salt'
+ db_query($link, "UPDATE ttrss_users SET pwd_hash = '$pwd_hash', salt = '$new_salt'
WHERE id = '$uid'");
- print T_sprintf("Changed password of user <b>%s</b>
- to <b>%s</b>", $login, $tmp_user_pwd);
+ if ($show_password) {
+ print T_sprintf("Changed password of user <b>%s</b>
+ to <b>%s</b>", $login, $tmp_user_pwd);
+ } else {
+ print T_sprintf("Sending new password of user <b>%s</b>
+ to <b>%s</b>", $login, $email);
+ }
require_once 'lib/phpmailer/class.phpmailer.php';
if ($email) {
- print " ";
- print T_sprintf("Notifying <b>%s</b>.", $email);
-
require_once "lib/MiniTemplator.class.php";
$tpl = new MiniTemplator;
@@ -340,8 +340,11 @@ class Pref_Users extends Handler_Protected {
if (!$rc) print_error($mail->ErrorInfo);
}
+ }
- print "</div>";
+ function resetPass() {
+ $uid = db_escape_string($this->link, $_REQUEST["id"]);
+ Pref_Users::resetUserPassword($this->link, $uid, true);
}
function index() {
@@ -353,7 +356,7 @@ class Pref_Users extends Handler_Protected {
print "<div id=\"pref-user-toolbar\" dojoType=\"dijit.Toolbar\">";
- $user_search = db_escape_string($_REQUEST["search"]);
+ $user_search = db_escape_string($this->link, $_REQUEST["search"]);
if (array_key_exists("search", $_REQUEST)) {
$_SESSION["prefs_user_search"] = $user_search;
@@ -368,7 +371,7 @@ class Pref_Users extends Handler_Protected {
__('Search')."</button>
</div>";
- $sort = db_escape_string($_REQUEST["sort"]);
+ $sort = db_escape_string($this->link, $_REQUEST["sort"]);
if (!$sort || $sort == "undefined") {
$sort = "login";
diff --git a/classes/rpc.php b/classes/rpc.php
index 8144f6b97..ee5a9e68a 100644
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -8,14 +8,14 @@ class RPC extends Handler_Protected {
}
function setprofile() {
- $id = db_escape_string($_REQUEST["id"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
$_SESSION["profile"] = $id;
$_SESSION["prefs_cache"] = array();
}
function remprofiles() {
- $ids = explode(",", db_escape_string(trim($_REQUEST["ids"])));
+ $ids = explode(",", db_escape_string($this->link, trim($_REQUEST["ids"])));
foreach ($ids as $id) {
if ($_SESSION["profile"] != $id) {
@@ -27,7 +27,7 @@ class RPC extends Handler_Protected {
// Silent
function addprofile() {
- $title = db_escape_string(trim($_REQUEST["title"]));
+ $title = db_escape_string($this->link, trim($_REQUEST["title"]));
if ($title) {
db_query($this->link, "BEGIN");
@@ -57,8 +57,8 @@ class RPC extends Handler_Protected {
// Silent
function saveprofile() {
- $id = db_escape_string($_REQUEST["id"]);
- $title = db_escape_string(trim($_REQUEST["value"]));
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
+ $title = db_escape_string($this->link, trim($_REQUEST["value"]));
if ($id == 0) {
print __("Default profile");
@@ -88,7 +88,7 @@ class RPC extends Handler_Protected {
// Silent
function remarchive() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
$result = db_query($this->link, "DELETE FROM ttrss_archived_feeds WHERE
@@ -101,11 +101,11 @@ class RPC extends Handler_Protected {
}
function addfeed() {
- $feed = db_escape_string($_REQUEST['feed']);
- $cat = db_escape_string($_REQUEST['cat']);
- $login = db_escape_string($_REQUEST['login']);
- $pass = db_escape_string($_REQUEST['pass']);
- $need_auth = db_escape_string($_REQUEST['need_auth']) != "";
+ $feed = db_escape_string($this->link, $_REQUEST['feed']);
+ $cat = db_escape_string($this->link, $_REQUEST['cat']);
+ $login = db_escape_string($this->link, $_REQUEST['login']);
+ $pass = db_escape_string($this->link, $_REQUEST['pass']);
+ $need_auth = db_escape_string($this->link, $_REQUEST['need_auth']) != "";
$rc = subscribe_to_feed($this->link, $feed, $cat, $login, $pass, $need_auth);
@@ -113,7 +113,7 @@ class RPC extends Handler_Protected {
}
function togglepref() {
- $key = db_escape_string($_REQUEST["key"]);
+ $key = db_escape_string($this->link, $_REQUEST["key"]);
set_pref($this->link, $key, !get_pref($this->link, $key));
$value = get_pref($this->link, $key);
@@ -132,7 +132,7 @@ class RPC extends Handler_Protected {
function mark() {
$mark = $_REQUEST["mark"];
- $id = db_escape_string($_REQUEST["id"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
if ($mark == "1") {
$mark = "true";
@@ -148,7 +148,7 @@ class RPC extends Handler_Protected {
}
function delete() {
- $ids = db_escape_string($_REQUEST["ids"]);
+ $ids = db_escape_string($this->link, $_REQUEST["ids"]);
$result = db_query($this->link, "DELETE FROM ttrss_user_entries
WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
@@ -157,7 +157,7 @@ class RPC extends Handler_Protected {
}
function unarchive() {
- $ids = db_escape_string($_REQUEST["ids"]);
+ $ids = db_escape_string($this->link, $_REQUEST["ids"]);
$result = db_query($this->link, "UPDATE ttrss_user_entries
SET feed_id = orig_feed_id, orig_feed_id = NULL
@@ -167,7 +167,7 @@ class RPC extends Handler_Protected {
}
function archive() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
foreach ($ids as $id) {
$this->archive_article($this->link, $id, $_SESSION["uid"]);
@@ -210,8 +210,8 @@ class RPC extends Handler_Protected {
function publ() {
$pub = $_REQUEST["pub"];
- $id = db_escape_string($_REQUEST["id"]);
- $note = trim(strip_tags(db_escape_string($_REQUEST["note"])));
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
+ $note = trim(strip_tags(db_escape_string($this->link, $_REQUEST["note"])));
if ($pub == "1") {
$pub = "true";
@@ -257,7 +257,7 @@ class RPC extends Handler_Protected {
/* GET["cmode"] = 0 - mark as read, 1 - as unread, 2 - toggle */
function catchupSelected() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
$cmode = sprintf("%d", $_REQUEST["cmode"]);
catchupArticlesById($this->link, $ids, $cmode);
@@ -266,7 +266,7 @@ class RPC extends Handler_Protected {
}
function markSelected() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
$cmode = sprintf("%d", $_REQUEST["cmode"]);
$this->markArticlesById($this->link, $ids, $cmode);
@@ -275,7 +275,7 @@ class RPC extends Handler_Protected {
}
function publishSelected() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
$cmode = sprintf("%d", $_REQUEST["cmode"]);
$this->publishArticlesById($this->link, $ids, $cmode);
@@ -301,9 +301,9 @@ class RPC extends Handler_Protected {
function setArticleTags() {
- $id = db_escape_string($_REQUEST["id"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
- $tags_str = db_escape_string($_REQUEST["tags_str"]);
+ $tags_str = db_escape_string($this->link, $_REQUEST["tags_str"]);
$tags = array_unique(trim_array(explode(",", $tags_str)));
db_query($this->link, "BEGIN");
@@ -373,7 +373,7 @@ class RPC extends Handler_Protected {
}
function completeLabels() {
- $search = db_escape_string($_REQUEST["search"]);
+ $search = db_escape_string($this->link, $_REQUEST["search"]);
$result = db_query($this->link, "SELECT DISTINCT caption FROM
ttrss_labels2
@@ -390,7 +390,7 @@ class RPC extends Handler_Protected {
function completeTags() {
- $search = db_escape_string($_REQUEST["search"]);
+ $search = db_escape_string($this->link, $_REQUEST["search"]);
$result = db_query($this->link, "SELECT DISTINCT tag_name FROM ttrss_tags
WHERE owner_uid = '".$_SESSION["uid"]."' AND
@@ -405,7 +405,7 @@ class RPC extends Handler_Protected {
}
function purge() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
$days = sprintf("%d", $_REQUEST["days"]);
foreach ($ids as $id) {
@@ -420,7 +420,7 @@ class RPC extends Handler_Protected {
}
function getArticles() {
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
$articles = array();
foreach ($ids as $id) {
@@ -433,7 +433,7 @@ class RPC extends Handler_Protected {
}
function checkDate() {
- $date = db_escape_string($_REQUEST["date"]);
+ $date = db_escape_string($this->link, $_REQUEST["date"]);
$date_parsed = strtotime($date);
print json_encode(array("result" => (bool)$date_parsed,
@@ -451,10 +451,10 @@ class RPC extends Handler_Protected {
function labelops($assign) {
$reply = array();
- $ids = explode(",", db_escape_string($_REQUEST["ids"]));
- $label_id = db_escape_string($_REQUEST["lid"]);
+ $ids = explode(",", db_escape_string($this->link, $_REQUEST["ids"]));
+ $label_id = db_escape_string($this->link, $_REQUEST["lid"]);
- $label = db_escape_string(label_find_caption($this->link, $label_id,
+ $label = db_escape_string($this->link, label_find_caption($this->link, $label_id,
$_SESSION["uid"]));
$reply["info-for-headlines"] = array();
@@ -482,9 +482,9 @@ class RPC extends Handler_Protected {
}
function updateFeedBrowser() {
- $search = db_escape_string($_REQUEST["search"]);
- $limit = db_escape_string($_REQUEST["limit"]);
- $mode = (int) db_escape_string($_REQUEST["mode"]);
+ $search = db_escape_string($this->link, $_REQUEST["search"]);
+ $limit = db_escape_string($this->link, $_REQUEST["limit"]);
+ $mode = (int) db_escape_string($this->link, $_REQUEST["mode"]);
require_once "feedbrowser.php";
@@ -504,8 +504,8 @@ class RPC extends Handler_Protected {
if ($mode == 1) {
foreach ($payload as $feed) {
- $title = db_escape_string($feed[0]);
- $feed_url = db_escape_string($feed[1]);
+ $title = db_escape_string($this->link, $feed[0]);
+ $feed_url = db_escape_string($this->link, $feed[1]);
$result = db_query($this->link, "SELECT id FROM ttrss_feeds WHERE
feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
@@ -524,9 +524,9 @@ class RPC extends Handler_Protected {
WHERE id = '$id' AND owner_uid = " . $_SESSION["uid"]);
if (db_num_rows($result) != 0) {
- $site_url = db_escape_string(db_fetch_result($result, 0, "site_url"));
- $feed_url = db_escape_string(db_fetch_result($result, 0, "feed_url"));
- $title = db_escape_string(db_fetch_result($result, 0, "title"));
+ $site_url = db_escape_string($this->link, db_fetch_result($result, 0, "site_url"));
+ $feed_url = db_escape_string($this->link, db_fetch_result($result, 0, "feed_url"));
+ $title = db_escape_string($this->link, db_fetch_result($result, 0, "title"));
$result = db_query($this->link, "SELECT id FROM ttrss_feeds WHERE
feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
@@ -543,9 +543,9 @@ class RPC extends Handler_Protected {
}
function catchupFeed() {
- $feed_id = db_escape_string($_REQUEST['feed_id']);
- $is_cat = db_escape_string($_REQUEST['is_cat']) == "true";
- $max_id = (int) db_escape_string($_REQUEST['max_id']);
+ $feed_id = db_escape_string($this->link, $_REQUEST['feed_id']);
+ $is_cat = db_escape_string($this->link, $_REQUEST['is_cat']) == "true";
+ $max_id = (int) db_escape_string($this->link, $_REQUEST['max_id']);
catchup_feed($this->link, $feed_id, $is_cat, false, $max_id);
@@ -553,7 +553,7 @@ class RPC extends Handler_Protected {
}
function quickAddCat() {
- $cat = db_escape_string($_REQUEST["cat"]);
+ $cat = db_escape_string($this->link, $_REQUEST["cat"]);
add_feed_category($this->link, $cat);
@@ -570,8 +570,8 @@ class RPC extends Handler_Protected {
}
function regenFeedKey() {
- $feed_id = db_escape_string($_REQUEST['id']);
- $is_cat = db_escape_string($_REQUEST['is_cat']) == "true";
+ $feed_id = db_escape_string($this->link, $_REQUEST['id']);
+ $is_cat = db_escape_string($this->link, $_REQUEST['is_cat']) == "true";
$new_key = $this->update_feed_access_key($this->link, $feed_id, $is_cat);
@@ -619,11 +619,11 @@ class RPC extends Handler_Protected {
}
function batchAddFeeds() {
- $cat_id = db_escape_string($_REQUEST['cat']);
- $feeds = explode("\n", db_escape_string($_REQUEST['feeds']));
- $login = db_escape_string($_REQUEST['login']);
- $pass = db_escape_string($_REQUEST['pass']);
- $need_auth = db_escape_string($_REQUEST['need_auth']) != "";
+ $cat_id = db_escape_string($this->link, $_REQUEST['cat']);
+ $feeds = explode("\n", db_escape_string($this->link, $_REQUEST['feeds']));
+ $login = db_escape_string($this->link, $_REQUEST['login']);
+ $pass = db_escape_string($this->link, $_REQUEST['pass']);
+ $need_auth = db_escape_string($this->link, $_REQUEST['need_auth']) != "";
foreach ($feeds as $feed) {
$feed = trim($feed);
@@ -656,8 +656,8 @@ class RPC extends Handler_Protected {
}
function setScore() {
- $ids = db_escape_string($_REQUEST['id']);
- $score = (int)db_escape_string($_REQUEST['score']);
+ $ids = db_escape_string($this->link, $_REQUEST['id']);
+ $score = (int)db_escape_string($this->link, $_REQUEST['score']);
db_query($this->link, "UPDATE ttrss_user_entries SET
score = '$score' WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
@@ -756,7 +756,7 @@ class RPC extends Handler_Protected {
AND owner_uid = " . $owner_uid);
if (db_num_rows($result) == 1) {
- $key = db_escape_string(sha1(uniqid(rand(), true)));
+ $key = db_escape_string($this->link, sha1(uniqid(rand(), true)));
db_query($link, "UPDATE ttrss_access_keys SET access_key = '$key'
WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat
@@ -829,16 +829,17 @@ class RPC extends Handler_Protected {
}
}
- function getlinkbyid() {
- $id = db_escape_string($_REQUEST['id']);
+ function getlinktitlebyid() {
+ $id = db_escape_string($this->link, $_REQUEST['id']);
- $result = db_query($this->link, "SELECT link FROM ttrss_entries, ttrss_user_entries
+ $result = db_query($this->link, "SELECT link, title FROM ttrss_entries, ttrss_user_entries
WHERE ref_id = '$id' AND ref_id = id AND owner_uid = ". $_SESSION["uid"]);
if (db_num_rows($result) != 0) {
$link = db_fetch_result($result, 0, "link");
+ $title = db_fetch_result($result, 0, "title");
- echo json_encode(array("link" => $link));
+ echo json_encode(array("link" => $link, "title" => $title));
} else {
echo json_encode(array("error" => "ARTICLE_NOT_FOUND"));
}
diff --git a/include/db-prefs.php b/include/db-prefs.php
index 641e9d1dd..f6a78939b 100644
--- a/include/db-prefs.php
+++ b/include/db-prefs.php
@@ -44,7 +44,7 @@
function get_pref($link, $pref_name, $user_id = false, $die_on_error = false) {
- $pref_name = db_escape_string($pref_name);
+ $pref_name = db_escape_string($link, $pref_name);
$prefs_cache = true;
$profile = false;
@@ -115,8 +115,8 @@
}
function set_pref($link, $pref_name, $value, $user_id = false, $strip_tags = true) {
- $pref_name = db_escape_string($pref_name);
- $value = db_escape_string($value, $strip_tags);
+ $pref_name = db_escape_string($link, $pref_name);
+ $value = db_escape_string($link, $value, $strip_tags);
if (!$user_id) {
$user_id = $_SESSION["uid"];
diff --git a/include/db.php b/include/db.php
index 0f4bf3708..0479df6a9 100644
--- a/include/db.php
+++ b/include/db.php
@@ -41,21 +41,13 @@ function db_connect($host, $user, $pass, $db) {
}
}
-function db_escape_string($s, $strip_tags = true, $link = NULL) {
+function db_escape_string($link, $s, $strip_tags = true) {
if ($strip_tags) $s = strip_tags($s);
if (DB_TYPE == "pgsql") {
- if ($link) {
- return pg_escape_string($link, $s);
- } else {
- return pg_escape_string($s);
- }
+ return pg_escape_string($link, $s);
} else {
- if ($link) {
- return mysql_real_escape_string($s, $link);
- } else {
- return mysql_real_escape_string($s);
- }
+ return mysql_real_escape_string($s, $link);
}
}
diff --git a/include/functions.php b/include/functions.php
index 5d5550059..56bc66b6c 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -54,6 +54,7 @@
"ja_JP" => "日本語 (Japanese)",
"lv_LV" => "Latviešu",
"nb_NO" => "Norwegian bokmål",
+ "nl_NL" => "Dutch",
"pl_PL" => "Polski",
"ru_RU" => "Русский",
"pt_BR" => "Portuguese/Brazil",
@@ -516,7 +517,7 @@
function initialize_user_prefs($link, $uid, $profile = false) {
- $uid = db_escape_string($uid);
+ $uid = db_escape_string($link, $uid);
if (!$profile) {
$profile = "NULL";
@@ -768,6 +769,7 @@
/* bump login timestamp */
db_query($link, "UPDATE ttrss_users SET last_login = NOW() WHERE id = " .
$_SESSION["uid"]);
+ $_SESSION["last_login_update"] = time();
}
if ($_SESSION["uid"] && $_SESSION["language"] && SESSION_COOKIE_LIFETIME > 0) {
@@ -778,7 +780,21 @@
if ($_SESSION["uid"]) {
cache_prefs($link);
load_user_plugins($link, $_SESSION["uid"]);
+
+ /* cleanup ccache */
+
+ db_query($link, "DELETE FROM ttrss_counters_cache WHERE owner_uid = ".
+ $_SESSION["uid"] . " AND
+ (SELECT COUNT(id) FROM ttrss_feeds WHERE
+ ttrss_feeds.id = feed_id) = 0");
+
+ db_query($link, "DELETE FROM ttrss_cat_counters_cache WHERE owner_uid = ".
+ $_SESSION["uid"] . " AND
+ (SELECT COUNT(id) FROM ttrss_feed_categories WHERE
+ ttrss_feed_categories.id = feed_id) = 0");
+
}
+
}
}
@@ -911,7 +927,7 @@
}
}
- if (db_escape_string("testTEST") != "testTEST") {
+ if (db_escape_string($link, "testTEST") != "testTEST") {
$error_code = 12;
}
@@ -1086,7 +1102,7 @@
} else { // tag
db_query($link, "BEGIN");
- $tag_name = db_escape_string($feed);
+ $tag_name = db_escape_string($link, $feed);
$result = db_query($link, "SELECT post_int_id FROM ttrss_tags
WHERE tag_name = '$tag_name' AND owner_uid = $owner_uid");
@@ -1283,7 +1299,7 @@
return 0;
} else if ($feed != "0" && $n_feed == 0) {
- $feed = db_escape_string($feed);
+ $feed = db_escape_string($link, $feed);
$result = db_query($link, "SELECT SUM((SELECT COUNT(int_id)
FROM ttrss_user_entries,ttrss_entries WHERE int_id = post_int_id
@@ -2744,7 +2760,7 @@
function get_article_tags($link, $id, $owner_uid = 0, $tag_cache = false) {
- $a_id = db_escape_string($id);
+ $a_id = db_escape_string($link, $id);
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
@@ -2779,7 +2795,7 @@
/* update the cache */
- $tags_str = db_escape_string(join(",", $tags));
+ $tags_str = db_escape_string($link, join(",", $tags));
db_query($link, "UPDATE ttrss_user_entries
SET tag_cache = '$tags_str' WHERE ref_id = '$id'
@@ -2989,11 +3005,6 @@
</head><body>";
}
- $title_escaped = htmlspecialchars($line['title']);
-
- $rv['content'] .= "<div id=\"PTITLE-FULL-$id\" style=\"display : none\">" .
- strip_tags($line['title']) . "</div>";
-
$rv['content'] .= "<div class=\"postReply\" id=\"POST-$id\">";
$rv['content'] .= "<div class=\"postHeader\" id=\"POSTHDR-$id\">";
@@ -3014,8 +3025,8 @@
title=\"".htmlspecialchars($line['title'])."\"
href=\"" .
htmlspecialchars($line["link"]) . "\">" .
- $line["title"] .
- "<span class='author'>$entry_author</span></a></div>";
+ $line["title"] . "</a>" .
+ "<span class='author'>$entry_author</span></div>";
} else {
$rv['content'] .= "<div class='postTitle'>" . $line["title"] . "$entry_author</div>";
}
@@ -3091,31 +3102,6 @@
$rv['content'] .= "<div class=\"postContent\">";
- // N-grams
-
- if (DB_TYPE == "pgsql" and defined('_NGRAM_TITLE_RELATED_THRESHOLD')) {
-
- $ngram_result = db_query($link, "SELECT id,title FROM
- ttrss_entries,ttrss_user_entries
- WHERE ref_id = id AND updated >= NOW() - INTERVAL '7 day'
- AND similarity(title, '$title_escaped') >= "._NGRAM_TITLE_RELATED_THRESHOLD."
- AND title != '$title_escaped'
- AND owner_uid = $owner_uid");
-
- if (db_num_rows($ngram_result) > 0) {
- $rv['content'] .= "<div dojoType=\"dijit.form.DropDownButton\">".
- "<span>" . __('Related')."</span>";
- $rv['content'] .= "<div dojoType=\"dijit.Menu\" style=\"display: none;\">";
-
- while ($nline = db_fetch_assoc($ngram_result)) {
- $rv['content'] .= "<div onclick=\"hlOpenInNewTab(null,".$nline['id'].")\"
- dojoType=\"dijit.MenuItem\">".$nline['title']."</div>";
-
- }
- $rv['content'] .= "</div></div><br/";
- }
- }
-
$rv['content'] .= $line["content"];
$rv['content'] .= format_article_enclosures($link, $id,
@@ -3511,7 +3497,7 @@
if (db_num_rows($result) == 1) {
return db_fetch_result($result, 0, "access_key");
} else {
- $key = db_escape_string(sha1(uniqid(rand(), true)));
+ $key = db_escape_string($link, sha1(uniqid(rand(), true)));
$result = db_query($link, "INSERT INTO ttrss_access_keys
(access_key, feed_id, is_cat, owner_uid)
@@ -3865,7 +3851,7 @@
if ($regexp_valid) {
- $rule['reg_exp'] = db_escape_string($rule['reg_exp']);
+ $rule['reg_exp'] = db_escape_string($link, $rule['reg_exp']);
switch ($rule["type"]) {
case "title":
@@ -3896,7 +3882,7 @@
}
if (isset($rule["feed_id"]) && $rule["feed_id"] > 0) {
- $qpart .= " AND feed_id = " . db_escape_string($rule["feed_id"]);
+ $qpart .= " AND feed_id = " . db_escape_string($link, $rule["feed_id"]);
}
if (isset($rule["cat_id"])) {
@@ -4098,4 +4084,11 @@
return $max_ts;
}
+ function get_site_title() {
+ if (defined("_SITE_TITLE")) {
+ return _SITE_TITLE;
+ } else {
+ return "Tiny Tiny RSS";
+ }
+ }
?>
diff --git a/include/labels.php b/include/labels.php
index da7e3f97b..e45a38622 100644
--- a/include/labels.php
+++ b/include/labels.php
@@ -88,7 +88,7 @@
if (!$labels)
$labels = get_article_labels($link, $id);
- $labels = db_escape_string(json_encode($labels));
+ $labels = db_escape_string($link, json_encode($labels));
db_query($link, "UPDATE ttrss_user_entries SET
label_cache = '$labels' WHERE ref_id = '$id' AND owner_uid = '$owner_uid'");
diff --git a/include/login_form.php b/include/login_form.php
index 68df544e3..af451239d 100644
--- a/include/login_form.php
+++ b/include/login_form.php
@@ -65,6 +65,20 @@
font-size : 12px;
}
+ a.forgotpass {
+ text-align : right;
+ font-size : 11px;
+ display : inline-block;
+ }
+
+ a {
+ color : #4684ff;
+ }
+
+ a:hover {
+ color : black;
+ }
+
div.footer a {
color : gray;
}
@@ -179,6 +193,8 @@ function bwLimitChange(elem) {
<input type="password" name="password" required="1"
style="width : 220px" class="input"
value="<?php echo $_SESSION["fake_password"] ?>"/>
+ <label></label>
+ <a class='forgotpass' href="public.php?op=forgotpass"><?php echo __("I forgot my password") ?></a>
</div>
<div class="row">
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index df1d16986..55c0baa4f 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -18,10 +18,10 @@
$count = 0;
while ($line = db_fetch_assoc($result)) {
- $subscribers = db_escape_string($line["subscribers"]);
- $feed_url = db_escape_string($line["feed_url"]);
- $title = db_escape_string($line["title"]);
- $site_url = db_escape_string($line["site_url"]);
+ $subscribers = db_escape_string($link, $line["subscribers"]);
+ $feed_url = db_escape_string($link, $line["feed_url"]);
+ $title = db_escape_string($link, $line["title"]);
+ $site_url = db_escape_string($link, $line["site_url"]);
$tmp_result = db_query($link, "SELECT subscribers FROM
ttrss_feedbrowser_cache WHERE feed_url = '$feed_url'");
@@ -200,7 +200,7 @@
$cache_images = sql_bool_to_bool(db_fetch_result($result, 0, "cache_images"));
$fetch_url = db_fetch_result($result, 0, "feed_url");
- $feed = db_escape_string($feed);
+ $feed = db_escape_string($link, $feed);
/* if ($auth_login && $auth_pass ){
$url_parts = array();
@@ -238,7 +238,7 @@
_debug("update_rss_feed: unable to fetch: $fetch_last_error");
}
- $error_escaped = db_escape_string($fetch_last_error);
+ $error_escaped = db_escape_string($link, $fetch_last_error);
db_query($link,
"UPDATE ttrss_feeds SET last_error = '$error_escaped',
@@ -287,7 +287,7 @@
// print_r($rss);
- $feed = db_escape_string($feed);
+ $feed = db_escape_string($link, $feed);
if (!$rss->error()) {
@@ -318,7 +318,7 @@
$owner_uid = db_fetch_result($result, 0, "owner_uid");
- $site_url = db_escape_string(mb_substr(rewrite_relative_url($fetch_url, $rss->get_link()), 0, 245));
+ $site_url = db_escape_string($link, mb_substr(rewrite_relative_url($fetch_url, $rss->get_link()), 0, 245));
if ($debug_enabled) {
_debug("update_rss_feed: checking favicon...");
@@ -333,7 +333,7 @@
if (!$registered_title || $registered_title == "[Unknown]") {
- $feed_title = db_escape_string($rss->get_title());
+ $feed_title = db_escape_string($link, $rss->get_title());
if ($debug_enabled) {
_debug("update_rss_feed: registering title: $feed_title");
@@ -475,13 +475,13 @@
$entry_author = $entry_author_item->get_name();
if (!$entry_author) $entry_author = $entry_author_item->get_email();
- $entry_author = db_escape_string($entry_author);
+ $entry_author = db_escape_string($link, $entry_author);
}
- $entry_guid = db_escape_string(mb_substr($entry_guid, 0, 245));
+ $entry_guid = db_escape_string($link, mb_substr($entry_guid, 0, 245));
- $entry_comments = db_escape_string(mb_substr($entry_comments, 0, 245));
- $entry_author = db_escape_string(mb_substr($entry_author, 0, 245));
+ $entry_comments = db_escape_string($link, mb_substr($entry_comments, 0, 245));
+ $entry_author = db_escape_string($link, mb_substr($entry_author, 0, 245));
$num_comments = $item->get_item_tags('http://purl.org/rss/1.0/modules/slash/', 'comments');
@@ -539,7 +539,7 @@
// FIXME not sure if owner_uid is a good idea here, we may have a base entry without user entry (?)
$result = db_query($link, "SELECT plugin_data,title,content,link,tag_cache,author FROM ttrss_entries, ttrss_user_entries
- WHERE ref_id = id AND guid = '".db_escape_string($entry_guid)."' AND owner_uid = $owner_uid");
+ WHERE ref_id = id AND guid = '".db_escape_string($link, $entry_guid)."' AND owner_uid = $owner_uid");
if (db_num_rows($result) != 0) {
$entry_plugin_data = db_fetch_result($result, 0, "plugin_data");
@@ -568,11 +568,11 @@
}
$entry_tags = $article["tags"];
- $entry_guid = db_escape_string($entry_guid);
- $entry_title = db_escape_string($article["title"]);
- $entry_author = db_escape_string($article["author"]);
- $entry_link = db_escape_string($article["link"]);
- $entry_plugin_data = db_escape_string($article["plugin_data"]);
+ $entry_guid = db_escape_string($link, $entry_guid);
+ $entry_title = db_escape_string($link, $article["title"]);
+ $entry_author = db_escape_string($link, $article["author"]);
+ $entry_link = db_escape_string($link, $article["link"]);
+ $entry_plugin_data = db_escape_string($link, $article["plugin_data"]);
$entry_content = $article["content"]; // escaped below
@@ -583,7 +583,7 @@
if ($cache_images && is_writable(CACHE_DIR . '/images'))
cache_images($entry_content, $site_url, $debug_enabled);
- $entry_content = db_escape_string($entry_content, false);
+ $entry_content = db_escape_string($link, $entry_content, false);
$content_hash = "SHA1:" . sha1($entry_content);
@@ -829,7 +829,7 @@
$update_insignificant = false;
}
- if (db_escape_string($orig_title) != $entry_title) {
+ if (db_escape_string($link, $orig_title) != $entry_title) {
$post_needs_update = true;
$update_insignificant = false;
}
@@ -896,9 +896,9 @@
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]);
+ $enc_url = db_escape_string($link, $enc[0]);
+ $enc_type = db_escape_string($link, $enc[1]);
+ $enc_dur = db_escape_string($link, $enc[2]);
$result = db_query($link, "SELECT id FROM ttrss_enclosures
WHERE content_url = '$enc_url' AND post_id = '$entry_ref_id'");
@@ -959,7 +959,7 @@
foreach ($filtered_tags as $tag) {
$tag = sanitize_tag($tag);
- $tag = db_escape_string($tag);
+ $tag = db_escape_string($link, $tag);
if (!tag_is_valid($tag)) continue;
@@ -981,7 +981,7 @@
$tags_to_cache = array_unique($tags_to_cache);
- $tags_str = db_escape_string(join(",", $tags_to_cache));
+ $tags_str = db_escape_string($link, join(",", $tags_to_cache));
db_query($link, "UPDATE ttrss_user_entries
SET tag_cache = '$tags_str' WHERE ref_id = '$entry_ref_id'
@@ -1031,7 +1031,7 @@
} else {
- $error_msg = db_escape_string(mb_substr($rss->error(), 0, 245));
+ $error_msg = db_escape_string($link, mb_substr($rss->error(), 0, 245));
if ($debug_enabled) {
_debug("update_rss_feed: error fetching feed: $error_msg");
diff --git a/include/sessions.php b/include/sessions.php
index 92e346afe..3355ec49e 100644
--- a/include/sessions.php
+++ b/include/sessions.php
@@ -53,7 +53,7 @@
$expire = time() + $session_expire;
- $data = db_escape_string(base64_encode($data), false, $session_connection);
+ $data = db_escape_string($session_connection, base64_encode($data), false);
if ($session_read) {
$query = "UPDATE ttrss_sessions SET data='$data',
@@ -71,7 +71,7 @@
global $session_connection;
- db_close($session_connection);
+ //db_close($session_connection);
return true;
}
diff --git a/index.php b/index.php
index bf8eafe76..570bba6d4 100644
--- a/index.php
+++ b/index.php
@@ -53,7 +53,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
- <title>Tiny Tiny RSS</title>
+ <title><?php echo get_site_title() ?></title>
<?php echo stylesheet_tag("lib/dijit/themes/claro/claro.css"); ?>
<?php echo stylesheet_tag("tt-rss.css"); ?>
diff --git a/js/functions.js b/js/functions.js
index db4fedcd5..a9367da60 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -1216,20 +1216,31 @@ function quickAddFilter() {
var lh = dojo.connect(dialog, "onLoad", function(){
dojo.disconnect(lh);
- var title = $("PTITLE-FULL-" + getActiveArticleId());
+ var query = "op=rpc&method=getlinktitlebyid&id=" + getActiveArticleId();
- if (title || getActiveFeedId() || activeFeedIsCat()) {
- if (title) title = title.innerHTML;
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ var reply = JSON.parse(transport.responseText);
- console.log(title + " " + getActiveFeedId());
+ var title = false;
- var feed_id = activeFeedIsCat() ? 'CAT:' + parseInt(getActiveFeedId()) :
- getActiveFeedId();
+ if (reply && reply) title = reply.title;
- var rule = { reg_exp: title, feed_id: feed_id, filter_type: 1 };
+ if (title || getActiveFeedId() || activeFeedIsCat()) {
+
+ console.log(title + " " + getActiveFeedId());
+
+ var feed_id = activeFeedIsCat() ? 'CAT:' + parseInt(getActiveFeedId()) :
+ getActiveFeedId();
+
+ var rule = { reg_exp: title, feed_id: feed_id, filter_type: 1 };
+
+ addFilterRule(null, dojo.toJson(rule));
+ }
+
+ } });
- addFilterRule(null, dojo.toJson(rule));
- }
});
}
diff --git a/js/tt-rss.js b/js/tt-rss.js
index eaa1f3daf..b7bb9319b 100644
--- a/js/tt-rss.js
+++ b/js/tt-rss.js
@@ -178,7 +178,11 @@ function search() {
}
function updateTitle() {
- var tmp = "Tiny Tiny RSS";
+ var tmp = document.title;
+
+ if (tmp.indexOf(")") > 0) {
+ tmp = tmp.substr(tmp.indexOf(")") + 1);
+ }
if (global_unread > 0) {
tmp = "(" + global_unread + ") " + tmp;
diff --git a/js/viewfeed.js b/js/viewfeed.js
index 35c9c12a7..e32d3a990 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -1392,6 +1392,7 @@ function cdmExpandArticle(id) {
Element.hide(elem);
Element.show("CEXC-" + getActiveArticleId());
Element.hide(collapse);
+ $("RROW-" + getActiveArticleId()).removeClassName("active");
}
setActiveArticleId(id);
@@ -1413,6 +1414,7 @@ function cdmExpandArticle(id) {
Element.show(elem);
Element.hide("CEXC-" + id);
Element.show(collapse);
+ $("RROW-" + id).addClassName("active");
}
var new_offset = $("RROW-" + id).offsetTop;
@@ -2044,7 +2046,7 @@ function changeScore(id, pic) {
function displayArticleUrl(id) {
try {
- var query = "op=rpc&method=getlinkbyid&id=" + param_escape(id);
+ var query = "op=rpc&method=getlinktitlebyid&id=" + param_escape(id);
new Ajax.Request("backend.php", {
parameters: query,
diff --git a/locale/cs_CZ/LC_MESSAGES/messages.po b/locale/cs_CZ/LC_MESSAGES/messages.po
index d468c7f58..35b2df428 100644
--- a/locale/cs_CZ/LC_MESSAGES/messages.po
+++ b/locale/cs_CZ/LC_MESSAGES/messages.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Michal Stanke <[email protected]>, 2013.
#
#, fuzzy
msgid ""
@@ -9,10 +9,10 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-03-21 23:29+0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2013-03-22 14:50+0100\n"
+"Last-Translator: Michal Stanke <[email protected]>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
-"Language: \n"
+"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -27,27 +27,27 @@ msgstr "Nikdy nečistit"
#: backend.php:73
msgid "1 week old"
-msgstr "starší 1 týdne"
+msgstr "starší než týden"
#: backend.php:74
msgid "2 weeks old"
-msgstr "starší 2 týdnů"
+msgstr "starší než 2 týdny"
#: backend.php:75
msgid "1 month old"
-msgstr "starší 1 měsíce"
+msgstr "starší než měsíc"
#: backend.php:76
msgid "2 months old"
-msgstr "starší 2 měsíců"
+msgstr "starší než 2 měsíce"
#: backend.php:77
msgid "3 months old"
-msgstr "starší 3 měsíců"
+msgstr "starší než 3 měsíce"
#: backend.php:80
msgid "Default interval"
-msgstr "Výchozí časový interval"
+msgstr "Výchozí interval"
#: backend.php:81 backend.php:91
msgid "Disable updates"
@@ -95,7 +95,7 @@ msgstr "Administrátor"
#: db-updater.php:19
msgid "Your access level is insufficient to run this script."
-msgstr "Vaše úroveň přístupu není dostatečná pro spuštění skriptu."
+msgstr "Vaše přístupová práva nejsou dostatečná pro spuštění tohoto skriptu."
#: db-updater.php:44
msgid "Database Updater"
@@ -107,7 +107,7 @@ msgstr "Nelze aktualizovat databázi"
#: db-updater.php:88
msgid "Could not find necessary schema file, need version:"
-msgstr "Nelze nalézt potřebný soubor schéma, požadovaná verze:"
+msgstr "Nelze nalézt potřebný soubor schématu, požadovaná verze:"
#: db-updater.php:89
msgid ", found: "
@@ -122,11 +122,11 @@ msgstr "Databáze Tiny Tiny RSS je aktuální."
#: register.php:371 register.php:381 register.php:393
#: classes/handler/public.php:610 classes/handler/public.php:698
msgid "Return to Tiny Tiny RSS"
-msgstr "Zpět do Tiny TIny RSS"
+msgstr "Zpět do Tiny Tiny RSS"
#: db-updater.php:100
msgid "Please backup your database before proceeding."
-msgstr "Před pokračováním proveďte prosím zálohu databáze."
+msgstr "Před pokračováním prosím zazálohujte databázi."
#: db-updater.php:102
#, php-format
@@ -160,7 +160,7 @@ msgstr "OK"
#: db-updater.php:150
msgid "ERROR!"
-msgstr "CHYBA"
+msgstr "CHYBA!"
#: db-updater.php:158
#, php-format
@@ -168,7 +168,7 @@ msgid ""
"Finished. Performed <b>%d</b> update(s) up to schema\n"
"\t\t\tversion <b>%d</b>."
msgstr ""
-"Dokončeno. Vykonáno <b>%d</b> aktualizací na schéma\n"
+"Dokončeno. Provedeno <b>%d</b> aktualizací na schéma\n"
"\t\t\tverze <b>%d</b>."
#: db-updater.php:168
@@ -185,73 +185,83 @@ msgid ""
"Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer "
"version and continue."
msgstr ""
-"Aktualizace schéma není možná. Aktualizujte Tiny Tiny RSS na novější verzi a "
-"pokračujte."
+"Aktualizace schématu není možná. Aktualizujte Tiny Tiny RSS na novější "
+"verzi a pokračujte."
#: errors.php:9
msgid ""
"This program requires XmlHttpRequest to function properly. Your browser "
"doesn't seem to support it."
msgstr ""
+"Tento program vyžaduje pro správnou funkci XmlHttpRequest. Váš prohlížeč "
+"ji zřejmě nepodporuje."
#: errors.php:12
msgid ""
"This program requires cookies to function properly. Your browser doesn't "
"seem to support them."
msgstr ""
+"Tento program vyžaduje pro správnou funkci povolené cookies. Váš prohlížeš "
+"je zřejmě nepodporuje."
#: errors.php:15
msgid "Backend sanity check failed"
-msgstr ""
+msgstr "Kontrola na pozadí selhala"
#: errors.php:17
msgid "Frontend sanity check failed."
-msgstr ""
+msgstr "Kontrola selhala"
#: errors.php:19
msgid ""
"Incorrect database schema version. &lt;a href='db-updater.php'&gt;Please "
"update&lt;/a&gt;."
msgstr ""
+"Nesprávná verze schámatu databáze. &lt;a href='db-updater.php'&gt;Prosím "
+"aktualizujte&lt;/a&gt;."
#: errors.php:21
msgid "Request not authorized."
-msgstr ""
+msgstr "Požadavek nebyl ověřen"
#: errors.php:23
msgid "No operation to perform."
-msgstr ""
+msgstr "Nic k provedení."
#: errors.php:25
msgid ""
"Could not display feed: query failed. Please check label match syntax or "
"local configuration."
msgstr ""
+"Zdroj nelze zobrazit: dotaz selhal. Zkontrolujte syntaxi label match a "
+"místní konfiguraci."
#: errors.php:27
msgid "Denied. Your access level is insufficient to access this page."
-msgstr ""
+msgstr "Nedovoleno. Vaše práva nejsou dostatečná pro přístup na tuto stránku."
#: errors.php:29
msgid "Configuration check failed"
-msgstr ""
+msgstr "Kontrola konfigurace selhala"
#: errors.php:31
msgid ""
"Your version of MySQL is not currently supported. Please see\n"
"\t\tofficial site for more information."
msgstr ""
+"Vaše verze MySQL není podporována. Více informací\n"
+"\t\tnajdete na oficiálních stránkách."
#: errors.php:36
msgid "SQL escaping test failed, check your database and PHP configuration"
-msgstr ""
+msgstr "Test opuštění SQL selhal, zkontrolujte konfiguraci databáze a PHP"
#: index.php:121 index.php:151 index.php:257 prefs.php:83
#: classes/backend.php:5 classes/pref/labels.php:296
#: classes/pref/filters.php:609 classes/pref/feeds.php:1296
#: plugins/digest/digest_body.php:49 js/viewfeed.js:1205
msgid "Loading, please wait..."
-msgstr "Načítám, čekejte prosím..."
+msgstr "Načítání, čekejte prosím..."
#: index.php:131 index.php:203
msgid "Communication problem with server."
@@ -259,15 +269,15 @@ msgstr "Chyba při komunikaci se serverem."
#: index.php:137 index.php:211
msgid "New version of Tiny Tiny RSS is available!"
-msgstr "Je dostupná nová verze TIny Tiny RSS."
+msgstr "Je dostupná nová verze Tiny Tiny RSS!"
#: index.php:165
msgid "Collapse feedlist"
-msgstr ""
+msgstr "Skrýt seznam zdrojů"
#: index.php:168
msgid "Show articles"
-msgstr ""
+msgstr "Zobrazit články"
#: index.php:171
msgid "Adaptive"
@@ -291,7 +301,7 @@ msgstr "Nepřečteno"
#: index.php:176
msgid "Ignore Scoring"
-msgstr ""
+msgstr "Ignorovat hodnocení"
#: index.php:177
msgid "Updated"
@@ -299,7 +309,7 @@ msgstr "Aktualizováno"
#: index.php:180
msgid "Sort articles"
-msgstr ""
+msgstr "Seřadit články"
#: index.php:183
msgid "Default"
@@ -315,7 +325,7 @@ msgstr "Název"
#: index.php:186
msgid "Score"
-msgstr "Skóre"
+msgstr "Hodnocení"
#: index.php:192 classes/pref/feeds.php:535 classes/pref/feeds.php:758
msgid "Update"
@@ -330,7 +340,7 @@ msgstr "Označit jako přečtené"
#: index.php:216
msgid "Actions..."
-msgstr "Činnosti..."
+msgstr "Akce..."
#: index.php:218
msgid "Preferences..."
@@ -342,7 +352,7 @@ msgstr "Hledat..."
#: index.php:220
msgid "Feed actions:"
-msgstr ""
+msgstr "Akce zdrojů:"
#: index.php:221 classes/handler/public.php:540
msgid "Subscribe to feed..."
@@ -350,36 +360,36 @@ msgstr "Přihlásit se k odběru..."
#: index.php:222
msgid "Edit this feed..."
-msgstr "Upravit kanál..."
+msgstr "Upravit zdroj..."
#: index.php:223
msgid "Rescore feed"
-msgstr ""
+msgstr "Znovu ohodnotit zdroj"
#: index.php:224 classes/pref/feeds.php:684 classes/pref/feeds.php:1269
#: js/PrefFeedTree.js:73
msgid "Unsubscribe"
-msgstr "Odhlásit se"
+msgstr "Zrušit odběr"
#: index.php:225
msgid "All feeds:"
-msgstr "Všechny kanály:"
+msgstr "Všechny zdroje:"
#: index.php:227
msgid "(Un)hide read feeds"
-msgstr "Zobrazit/Skrýt přečtené kanály"
+msgstr "Zobrazit/Skrýt přečtené zdroje"
#: index.php:228
msgid "Other actions:"
-msgstr "Ostatní činnosti:"
+msgstr "Ostatní akce:"
#: index.php:230
msgid "Switch to digest..."
-msgstr ""
+msgstr "Přepnout na výběr..."
#: index.php:232
msgid "Show tag cloud..."
-msgstr ""
+msgstr "Zobrazit seznam štítků..."
#: index.php:234 include/functions.php:1894
msgid "Toggle widescreen mode"
@@ -387,11 +397,11 @@ msgstr "Přepnout širokoúhlý režim"
#: index.php:236
msgid "Select by tags..."
-msgstr ""
+msgstr "Výběr podle štítků..."
#: index.php:237
msgid "Create label..."
-msgstr ""
+msgstr "Vytvořit štítek..."
#: index.php:238
msgid "Create filter..."
@@ -422,7 +432,7 @@ msgstr "Opustit nastavení"
#: prefs.php:106 classes/pref/feeds.php:100 classes/pref/feeds.php:1174
#: classes/pref/feeds.php:1237
msgid "Feeds"
-msgstr "Kanály"
+msgstr "Zdroje"
#: prefs.php:109 classes/pref/filters.php:117
msgid "Filters"
@@ -451,10 +461,12 @@ msgid ""
"were not logged in once, are erased automatically 24 hours after temporary "
"password is sent."
msgstr ""
+"Vaše dočasné heslo bude odesláno na zadanou e-mailovou adresu. Účet, který "
+"se do 24 hodin od odeslání dočasného hesla nepřihlásí, bude smazán."
#: register.php:221
msgid "Desired login:"
-msgstr ""
+msgstr "Požadované jméno:"
#: register.php:224
msgid "Check availability"
@@ -490,11 +502,11 @@ msgstr "Účet byl úspěšně vytvořen."
#: register.php:390
msgid "New user registrations are currently closed."
-msgstr "Registrace nových uživatelů nejsou nyní povoleny."
+msgstr "Registrace nových uživatelů nyní nejsou povoleny."
#: update.php:55
msgid "Tiny Tiny RSS data update script."
-msgstr ""
+msgstr "Skript aktualizace dat Tiny Tiny RSS."
#: mobile/login_form.php:28 include/login_form.php:209
#: classes/handler/public.php:468
@@ -513,7 +525,7 @@ msgstr "Heslo:"
#: mobile/login_form.php:52
msgid "Open regular version"
-msgstr ""
+msgstr "Otevřít normální verzi"
#: mobile/mobile-functions.php:68 mobile/mobile-functions.php:144
#: mobile/mobile-functions.php:180 mobile/mobile-functions.php:207
@@ -529,21 +541,21 @@ msgstr "Speciální"
#: mobile/mobile-functions.php:416
msgid "Nothing found (click to reload feed)."
-msgstr ""
+msgstr "Nic nenalezeno (klikněte pro načtení zdroje)."
#: mobile/prefs.php:24
msgid "Enable categories"
-msgstr ""
+msgstr "Povolit kategorie"
#: mobile/prefs.php:25 mobile/prefs.php:30 mobile/prefs.php:36
#: mobile/prefs.php:41 mobile/prefs.php:46 mobile/prefs.php:51
msgid "ON"
-msgstr "Zapnuto"
+msgstr "Zap."
#: mobile/prefs.php:25 mobile/prefs.php:30 mobile/prefs.php:36
#: mobile/prefs.php:41 mobile/prefs.php:46 mobile/prefs.php:51
msgid "OFF"
-msgstr "Vypnuto"
+msgstr "Vyp."
#: mobile/prefs.php:29
msgid "Browse categories like folders"
@@ -555,11 +567,11 @@ msgstr "Zobrazit obrázky v příspěvcích"
#: mobile/prefs.php:40
msgid "Hide read articles and feeds"
-msgstr "Skrýt přečtené články a kanály"
+msgstr "Skrýt přečtené články a zdroje"
#: mobile/prefs.php:45
msgid "Sort feeds by unread count"
-msgstr "Řadit kanály podle počtu nepřečtených článků"
+msgstr "Řadit zdroje podle počtu nepřečtených článků"
#: mobile/prefs.php:50 include/localized_schema.php:45
msgid "Reverse headline order (oldest first)"
@@ -578,15 +590,15 @@ msgstr "%d archivovaných článků"
#: include/feedbrowser.php:107
msgid "No feeds found."
-msgstr "Nenalezeny žádné kanály."
+msgstr "Nenalezeny žádné zdroje."
#: include/functions.php:712
msgid "Session failed to validate (incorrect IP)"
-msgstr "Nezdařilo se ověřit sezení (neplatné IP)"
+msgstr "Nezdařilo se ověřit relace (neplatné IP)"
#: include/functions.php:1598 classes/dlg.php:369 classes/pref/filters.php:368
msgid "All feeds"
-msgstr "Všechny kanály"
+msgstr "Všechny zdroje"
#: include/functions.php:1799
msgid "Starred articles"
@@ -618,15 +630,15 @@ msgstr "Navigace"
#: include/functions.php:1872
msgid "Open next feed"
-msgstr "Otevřít následující kanál"
+msgstr "Otevřít další zdroj"
#: include/functions.php:1873
msgid "Open previous feed"
-msgstr "Otevřít předchozí kanál"
+msgstr "Otevřít předchozí zdroj"
#: include/functions.php:1874
msgid "Open next article"
-msgstr "Otevřít následující článek"
+msgstr "Otevřít další článek"
#: include/functions.php:1875
msgid "Open previous article"
@@ -634,11 +646,11 @@ msgstr "Otevřít předchozí článek"
#: include/functions.php:1876
msgid "Open next article (don't scroll long articles)"
-msgstr ""
+msgstr "Otevřít další článek (nerolovat dlouhé články)"
#: include/functions.php:1877
msgid "Open previous article (don't scroll long articles)"
-msgstr ""
+msgstr "Otevřít předchozí článek (nerolovat dlouhé články)"
#: include/functions.php:1878
msgid "Show search dialog"
@@ -662,7 +674,7 @@ msgstr "Přepnout přečteno"
#: include/functions.php:1883
msgid "Edit tags"
-msgstr "Upravit značky"
+msgstr "Upravit štítky"
#: include/functions.php:1884
msgid "Dismiss selected"
@@ -707,7 +719,7 @@ msgstr "Zavřít článek"
#: include/functions.php:1895 plugins/embed_original/init.php:33
msgid "Toggle embed original"
-msgstr ""
+msgstr "Přepnout vložený originál"
#: include/functions.php:1896
msgid "Article selection"
@@ -740,15 +752,15 @@ msgstr "Zrušit výběr"
#: include/functions.php:1903 classes/pref/feeds.php:488
#: classes/pref/feeds.php:719
msgid "Feed"
-msgstr "Kanál"
+msgstr "Zdroj"
#: include/functions.php:1904
msgid "Refresh current feed"
-msgstr "Obnovit současný kanál"
+msgstr "Obnovit současný zdroj"
#: include/functions.php:1905
msgid "Un/hide read feeds"
-msgstr "Zobrazit/Skrýt přečtené kanály"
+msgstr "Zobrazit/Skrýt přečtené zdroje"
#: include/functions.php:1906 classes/pref/feeds.php:1240
msgid "Subscribe to feed"
@@ -756,7 +768,7 @@ msgstr "Přihlásit se k odběru"
#: include/functions.php:1907 js/FeedTree.js:135 js/PrefFeedTree.js:67
msgid "Edit feed"
-msgstr "Upravit kanál"
+msgstr "Upravit zdroj"
#: include/functions.php:1909
msgid "Reverse headlines"
@@ -764,19 +776,19 @@ msgstr ""
#: include/functions.php:1910
msgid "Debug feed update"
-msgstr ""
+msgstr "Debug aktualizace zdrojů"
#: include/functions.php:1911 js/FeedTree.js:178
msgid "Mark all feeds as read"
-msgstr "Označit všechny kanály za přečtené"
+msgstr "Označit všechny zdroje jako přečtené"
#: include/functions.php:1912
msgid "Un/collapse current category"
-msgstr ""
+msgstr "Zobrazit/skrýt aktuální kategorii"
#: include/functions.php:1913
msgid "Toggle combined mode"
-msgstr ""
+msgstr "Přepnout kombinovaný režim"
#: include/functions.php:1914
msgid "Go to"
@@ -784,19 +796,19 @@ msgstr "Přejít na"
#: include/functions.php:1916
msgid "Fresh"
-msgstr ""
+msgstr "Nový"
#: include/functions.php:1919
msgid "Tag cloud"
-msgstr ""
+msgstr "Seznam štítků"
#: include/functions.php:1921
msgid "Other"
-msgstr "Jiné"
+msgstr "Ostatní"
#: include/functions.php:1922 classes/pref/labels.php:281
msgid "Create label"
-msgstr ""
+msgstr "Vytvořit štítek"
#: include/functions.php:1923 classes/pref/filters.php:587
msgid "Create filter"
@@ -804,16 +816,16 @@ msgstr "Vytvořit filtr"
#: include/functions.php:1924
msgid "Un/collapse sidebar"
-msgstr ""
+msgstr "Zobrazit/skrýt postranní panel"
#: include/functions.php:1925
msgid "Show help dialog"
-msgstr ""
+msgstr "Zobrazit nápovědu"
#: include/functions.php:2406
#, php-format
msgid "Search results: %s"
-msgstr ""
+msgstr "Výslekdy vyhledávání: %s"
#: include/functions.php:2895 js/viewfeed.js:1929
msgid "Click to play"
@@ -829,11 +841,11 @@ msgstr " - "
#: include/functions.php:3040 include/functions.php:3357 classes/rpc.php:360
msgid "no tags"
-msgstr "žádné značky"
+msgstr "žádné štítky"
#: include/functions.php:3050 classes/feeds.php:650
msgid "Edit tags for this article"
-msgstr "Upravit značky pro článek"
+msgstr "Upravit štítky tohoto článku"
#: include/functions.php:3079 classes/feeds.php:606
msgid "Originally from:"
@@ -841,11 +853,11 @@ msgstr "Původně z:"
#: include/functions.php:3092 classes/feeds.php:619 classes/pref/feeds.php:507
msgid "Feed URL"
-msgstr "URL kanálu"
+msgstr "URL zdroje"
#: include/functions.php:3121
msgid "Related"
-msgstr ""
+msgstr "Podobné"
#: include/functions.php:3148 classes/dlg.php:43 classes/dlg.php:162
#: classes/dlg.php:185 classes/dlg.php:222 classes/dlg.php:506
@@ -872,7 +884,7 @@ msgstr "Přílohy"
#: include/localized_schema.php:4
msgid "Title or Content"
-msgstr ""
+msgstr "Nadpis nebo Obsah"
#: include/localized_schema.php:5
msgid "Link"
@@ -901,7 +913,7 @@ msgstr "Publikovat článek"
#: include/localized_schema.php:13
msgid "Assign tags"
-msgstr "Přiřadit značky"
+msgstr "Přiřadit štítky"
#: include/localized_schema.php:14 js/viewfeed.js:1893
msgid "Assign label"
@@ -909,7 +921,7 @@ msgstr ""
#: include/localized_schema.php:15
msgid "Modify score"
-msgstr ""
+msgstr "Změnit hodnocení"
#: include/localized_schema.php:17
msgid "General"
@@ -929,6 +941,9 @@ msgid ""
"with partially colliding userbase. When disabled, it forces same posts from "
"different feeds to appear only once."
msgstr ""
+"Tato volba je užitečná pro sledování několika agregátorů s částečně kolidující "
+"databází uživatelů. Pokud je vypnuta, sloučí stejné příspěvky z různých zdrojů "
+"pro zobrazení jako jeden."
#: include/localized_schema.php:22
msgid ""
diff --git a/locale/nl_NL/LC_MESSAGES/messages.mo b/locale/nl_NL/LC_MESSAGES/messages.mo
new file mode 100644
index 000000000..95cd5ab45
--- /dev/null
+++ b/locale/nl_NL/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/locale/nl_NL/LC_MESSAGES/messages.po b/locale/nl_NL/LC_MESSAGES/messages.po
new file mode 100644
index 000000000..e2775aabd
--- /dev/null
+++ b/locale/nl_NL/LC_MESSAGES/messages.po
@@ -0,0 +1,3218 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: TT-RSS\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-03-21 15:10+0400\n"
+"PO-Revision-Date: 2013-03-22 16:19+0100\n"
+"Last-Translator: Dingoe <[email protected]>\n"
+"Language-Team: translations <[email protected]>\n"
+"Language: DUTCH\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-KeywordsList: _\n"
+"X-Poedit-Basepath: .\n"
+
+#: backend.php:71
+msgid "Use default"
+msgstr "Gebruik standaard"
+
+#: backend.php:72
+msgid "Never purge"
+msgstr "Nooit opschonen"
+
+#: backend.php:73
+msgid "1 week old"
+msgstr "1 week oud"
+
+#: backend.php:74
+msgid "2 weeks old"
+msgstr "2 weken oud"
+
+#: backend.php:75
+msgid "1 month old"
+msgstr "1 maand oud"
+
+#: backend.php:76
+msgid "2 months old"
+msgstr "2 maanden oud"
+
+#: backend.php:77
+msgid "3 months old"
+msgstr "3 maanden oud"
+
+#: backend.php:80
+msgid "Default interval"
+msgstr "Standaard interval"
+
+#: backend.php:81 backend.php:91
+msgid "Disable updates"
+msgstr "updates uitschakelen"
+
+#: backend.php:82 backend.php:92
+msgid "Each 15 minutes"
+msgstr "Elke 15 minuten"
+
+#: backend.php:83 backend.php:93
+msgid "Each 30 minutes"
+msgstr "Elke 30 minuten"
+
+#: backend.php:84 backend.php:94
+msgid "Hourly"
+msgstr "Ieder uur"
+
+#: backend.php:85 backend.php:95
+msgid "Each 4 hours"
+msgstr "Om de 4 uur"
+
+#: backend.php:86 backend.php:96
+msgid "Each 12 hours"
+msgstr "Om de 12 uur"
+
+#: backend.php:87 backend.php:97
+msgid "Daily"
+msgstr "Dagelijks"
+
+#: backend.php:88 backend.php:98
+msgid "Weekly"
+msgstr "Wekelijks"
+
+#: backend.php:101 classes/pref/users.php:139
+msgid "User"
+msgstr "Gebruiker"
+
+#: backend.php:102
+msgid "Power User"
+msgstr "Hoofdgebruiker"
+
+#: backend.php:103
+msgid "Administrator"
+msgstr "Beheerder"
+
+#: db-updater.php:19
+msgid "Your access level is insufficient to run this script."
+msgstr "Uw toegangsrechten zijn niet voldoende om dit script uit te voeren."
+
+#: db-updater.php:44
+msgid "Database Updater"
+msgstr "Database updater"
+
+#: db-updater.php:85
+msgid "Could not update database"
+msgstr "Kon de database niet bijwerken"
+
+#: db-updater.php:88
+msgid "Could not find necessary schema file, need version:"
+msgstr "Kon geen juist updateschemabestand vinden. Benodigde versie:"
+
+#: db-updater.php:89
+msgid ", found: "
+msgstr ", gevonden: "
+
+#: db-updater.php:92
+msgid "Tiny Tiny RSS database is up to date."
+msgstr "Tiny Tiny RSS database is bijgewerkt."
+
+#: db-updater.php:94 db-updater.php:163 db-updater.php:176 register.php:194
+#: register.php:239 register.php:252 register.php:267 register.php:286
+#: register.php:371 register.php:381 register.php:393
+#: classes/handler/public.php:610 classes/handler/public.php:698
+msgid "Return to Tiny Tiny RSS"
+msgstr "Ga terug naar Tiny Tiny RSS"
+
+#: db-updater.php:100
+msgid "Please backup your database before proceeding."
+msgstr "Maak aub een back-up van uw database voordat u verder gaat."
+
+#: db-updater.php:102
+#, php-format
+msgid ""
+"Your Tiny Tiny RSS database needs update to the latest version (<b>%d</b> to "
+"<b>%d</b>)."
+msgstr ""
+"Uw Tiny Tiny RSS database moet worden geüpdate naar de laatste versie (<b>"
+"%d</b> naar <b>%d</b>)."
+
+#: db-updater.php:116
+msgid "Perform updates"
+msgstr "Voor de updates uit"
+
+#: db-updater.php:121
+msgid "Performing updates..."
+msgstr "Uitvoeren van updates..."
+
+#: db-updater.php:127
+#, php-format
+msgid "Updating to version %d..."
+msgstr "Updaten naar versie %d..."
+
+#: db-updater.php:142
+msgid "Checking version... "
+msgstr "Versie controleren..."
+
+#: db-updater.php:148
+msgid "OK!"
+msgstr "OK!"
+
+#: db-updater.php:150
+msgid "ERROR!"
+msgstr "FOUT!"
+
+#: db-updater.php:158
+#, php-format
+msgid ""
+"Finished. Performed <b>%d</b> update(s) up to schema\n"
+"\t\t\tversion <b>%d</b>."
+msgstr ""
+"Klaar. <b>%d</b> update(s) uitgevoerd volgens schema naar\n"
+"\t\t\tversie <b>%d</b>."
+
+#: db-updater.php:168
+msgid "Your database schema is from a newer version of Tiny Tiny RSS."
+msgstr "Uw database schema is van een nieuwere versie van Tiny Tiny RSS."
+
+#: db-updater.php:170
+#, php-format
+msgid "Found schema version: <b>%d</b>, required: <b>%d</b>."
+msgstr "Versie schema gevonden: <b>%d</b>, vereist: <b>%d</b>."
+
+#: db-updater.php:172
+msgid ""
+"Schema upgrade impossible. Please update Tiny Tiny RSS files to the newer "
+"version and continue."
+msgstr ""
+"Schema update onmogelijk. Update Tiny Tiny RSS bestanden naar de nieuwere "
+"versie en gaan door."
+
+#: errors.php:9
+msgid ""
+"This program requires XmlHttpRequest to function properly. Your browser "
+"doesn't seem to support it."
+msgstr ""
+"Dit programma vereist XmlHttpRequest om goed te functioneren. Uw browser "
+"lijkt dit niet te ondersteunen."
+
+#: errors.php:12
+msgid ""
+"This program requires cookies to function properly. Your browser doesn't "
+"seem to support them."
+msgstr ""
+"Dit programma vereist cookies om goed te functioneren. Uw browser lijkt dit "
+"niet te ondersteunen."
+
+#: errors.php:15
+msgid "Backend sanity check failed"
+msgstr "Gezondheidscontrole server mislukt"
+
+#: errors.php:17
+msgid "Frontend sanity check failed."
+msgstr "Frontend gezondheidscontrole mislukt."
+
+#: errors.php:19
+msgid ""
+"Incorrect database schema version. &lt;a href='db-updater.php'&gt;Please "
+"update&lt;/a&gt;."
+msgstr ""
+"Onjuiste database schema versie. &lt;a href='db-updater.php'&gt;Bijwerken "
+"aub!&lt;/a&gt;."
+
+#: errors.php:21
+msgid "Request not authorized."
+msgstr "Verzoek niet toegestaan."
+
+#: errors.php:23
+msgid "No operation to perform."
+msgstr "Geen uit te voeren opdracht."
+
+#: errors.php:25
+msgid ""
+"Could not display feed: query failed. Please check label match syntax or "
+"local configuration."
+msgstr ""
+"Kon feed niet weergeven: de zoekopdracht is mislukt. Controleer aub de "
+"syntax van de labelzoektekst of de lokale configuratie. "
+
+#: errors.php:27
+msgid "Denied. Your access level is insufficient to access this page."
+msgstr "Niet toegestaan. Uw toegangsniveau is onvoldoende voor deze pagina."
+
+#: errors.php:29
+msgid "Configuration check failed"
+msgstr "Configuratiecontrole mislukt"
+
+#: errors.php:31
+msgid ""
+"Your version of MySQL is not currently supported. Please see\n"
+"\t\tofficial site for more information."
+msgstr ""
+"Uw versie van MySQL wordt niet ondersteund. Zie de\n"
+"\t\tofficiële website voor meer informatie."
+
+#: errors.php:36
+msgid "SQL escaping test failed, check your database and PHP configuration"
+msgstr ""
+"SQL escaping test mislukt. Controleer uw database en de PHP configuratie"
+
+#: index.php:120 index.php:150 index.php:256 prefs.php:82
+#: classes/backend.php:5 classes/pref/labels.php:296
+#: classes/pref/filters.php:609 classes/pref/feeds.php:1296
+#: plugins/digest/digest_body.php:49 js/viewfeed.js:1205
+msgid "Loading, please wait..."
+msgstr "Aan 't laden, even wachten aub..."
+
+#: index.php:130 index.php:202
+msgid "Communication problem with server."
+msgstr "communicatieprobleem met de server."
+
+#: index.php:136 index.php:210
+msgid "New version of Tiny Tiny RSS is available!"
+msgstr "Er is een nieuwe versie van Tiny Tiny RSS beschikbaar!"
+
+#: index.php:164
+msgid "Collapse feedlist"
+msgstr "Feedlijst inklappen"
+
+#: index.php:167
+msgid "Show articles"
+msgstr "Toon artikelen"
+
+#: index.php:170
+msgid "Adaptive"
+msgstr "Aangepast"
+
+#: index.php:171
+msgid "All Articles"
+msgstr "Alle artikelen"
+
+#: index.php:172 include/functions.php:1921 classes/feeds.php:106
+msgid "Starred"
+msgstr "Met ster"
+
+#: index.php:173 include/functions.php:1922 classes/feeds.php:107
+msgid "Published"
+msgstr "Gepubliceerd"
+
+#: index.php:174 classes/feeds.php:93 classes/feeds.php:105
+msgid "Unread"
+msgstr "Ongelezen"
+
+#: index.php:175
+msgid "Ignore Scoring"
+msgstr "Score negeren"
+
+#: index.php:176
+msgid "Updated"
+msgstr "Bijgewerkt"
+
+#: index.php:179
+msgid "Sort articles"
+msgstr "Artikelen sorteren"
+
+#: index.php:182
+msgid "Default"
+msgstr "Standaard"
+
+#: index.php:183
+msgid "Date"
+msgstr "Datum"
+
+#: index.php:184 include/localized_schema.php:3
+msgid "Title"
+msgstr "Titel"
+
+#: index.php:185
+msgid "Score"
+msgstr "Score"
+
+#: index.php:191 classes/pref/feeds.php:535 classes/pref/feeds.php:758
+msgid "Update"
+msgstr "Bijwerken"
+
+#: index.php:195 index.php:225 include/functions.php:1912
+#: include/localized_schema.php:10 classes/feeds.php:111 classes/feeds.php:136
+#: classes/feeds.php:406 js/FeedTree.js:128 js/FeedTree.js:156
+#: plugins/digest/digest.js:630
+msgid "Mark as read"
+msgstr "Markeren als gelezen"
+
+#: index.php:215
+msgid "Actions..."
+msgstr "Acties..."
+
+#: index.php:217
+msgid "Preferences..."
+msgstr "Voorkeuren…"
+
+#: index.php:218
+msgid "Search..."
+msgstr "zoeken..."
+
+#: index.php:219
+msgid "Feed actions:"
+msgstr "Feed acties:"
+
+#: index.php:220 classes/handler/public.php:540
+msgid "Subscribe to feed..."
+msgstr "Abonneren op feed..."
+
+#: index.php:221
+msgid "Edit this feed..."
+msgstr "Bewerk deze feed..."
+
+#: index.php:222
+msgid "Rescore feed"
+msgstr "Feed opnieuw score geven"
+
+#: index.php:223 classes/pref/feeds.php:684 classes/pref/feeds.php:1269
+#: js/PrefFeedTree.js:73
+msgid "Unsubscribe"
+msgstr "Abonnement opzeggen"
+
+#: index.php:224
+msgid "All feeds:"
+msgstr "Alle feeds:"
+
+#: index.php:226
+msgid "(Un)hide read feeds"
+msgstr "Toon/Verberg gelezen feeds"
+
+#: index.php:227
+msgid "Other actions:"
+msgstr "andere acties:"
+
+#: index.php:229
+msgid "Switch to digest..."
+msgstr "Omschakelen naar samenvatting…"
+
+#: index.php:231
+msgid "Show tag cloud..."
+msgstr "Toon tagwolk..."
+
+#: index.php:233 include/functions.php:1899
+msgid "Toggle widescreen mode"
+msgstr "Wisselen breedbeeld modus"
+
+#: index.php:235
+msgid "Select by tags..."
+msgstr "Selectie met tags..."
+
+#: index.php:236
+msgid "Create label..."
+msgstr "Aanmaken label…"
+
+#: index.php:237
+msgid "Create filter..."
+msgstr "Aanmaken filter…"
+
+#: index.php:238
+msgid "Keyboard shortcuts help"
+msgstr "Hulp bij sneltoetscombinaties"
+
+#: index.php:240 mobile/mobile-functions.php:69
+#: mobile/mobile-functions.php:244 plugins/digest/digest_body.php:63
+msgid "Logout"
+msgstr "Afmelden"
+
+#: prefs.php:26 prefs.php:102 include/functions.php:1924
+#: classes/pref/prefs.php:377
+msgid "Preferences"
+msgstr "Voorkeuren"
+
+#: prefs.php:93
+msgid "Keyboard shortcuts"
+msgstr "Sneltoetscombinaties"
+
+#: prefs.php:94
+msgid "Exit preferences"
+msgstr "Verlaat voorkeuren"
+
+#: prefs.php:105 classes/pref/feeds.php:100 classes/pref/feeds.php:1174
+#: classes/pref/feeds.php:1237
+msgid "Feeds"
+msgstr "Feeds"
+
+#: prefs.php:108 classes/pref/filters.php:117
+msgid "Filters"
+msgstr "Filters"
+
+#: prefs.php:111 mobile/mobile-functions.php:205 include/functions.php:1127
+#: include/functions.php:1748 classes/pref/labels.php:90
+msgid "Labels"
+msgstr "Labels"
+
+#: prefs.php:115
+msgid "Users"
+msgstr "Gebruikers"
+
+#: register.php:186 include/login_form.php:212
+msgid "Create new account"
+msgstr "Aanmaken nieuw account"
+
+#: register.php:190
+msgid "New user registrations are administratively disabled."
+msgstr ""
+"Het registreren van nieuwe gebruikers is door de administrateur "
+"uitgeschakeld."
+
+#: register.php:215
+msgid ""
+"Your temporary password will be sent to the specified email. Accounts, which "
+"were not logged in once, are erased automatically 24 hours after temporary "
+"password is sent."
+msgstr ""
+"Uw tijdelijke wachtwoord wordt naar het vermelde e-mailadres verstuurd. "
+"Accounts waarin niet wordt ingelogd, worden automatisch 24 uur na het "
+"verzenden van het tijdelijk wachtwoord verwijderd."
+
+#: register.php:221
+msgid "Desired login:"
+msgstr "Gewenst loginID:"
+
+#: register.php:224
+msgid "Check availability"
+msgstr "controleer beschikbaarheid"
+
+#: register.php:226
+msgid "Email:"
+msgstr "E-mail:"
+
+#: register.php:229
+msgid "How much is two plus two:"
+msgstr "hoeveel is twee plus twee:"
+
+#: register.php:232
+msgid "Submit registration"
+msgstr "Registratie indienen"
+
+#: register.php:250
+msgid "Your registration information is incomplete."
+msgstr "Uw registratie informatie is incompleet."
+
+#: register.php:265
+msgid "Sorry, this username is already taken."
+msgstr "Sorry, deze naam is al in gebruik."
+
+#: register.php:284
+msgid "Registration failed."
+msgstr "de registratie is mislukt."
+
+#: register.php:368
+msgid "Account created successfully."
+msgstr "Het account is met succes aangemaakt."
+
+#: register.php:390
+msgid "New user registrations are currently closed."
+msgstr "Nieuwe gebruikersregistratie is op dit moment niet mogelijk."
+
+#: update.php:55
+msgid "Tiny Tiny RSS data update script."
+msgstr "Tiny Tiny RSS data update script."
+
+#: mobile/login_form.php:28 include/login_form.php:209
+#: classes/handler/public.php:468
+msgid "Log in"
+msgstr "Aanmelden"
+
+#: mobile/login_form.php:40 include/login_form.php:169
+#: classes/handler/public.php:452
+msgid "Login:"
+msgstr "Aanmelden:"
+
+#: mobile/login_form.php:45 include/login_form.php:178
+#: classes/handler/public.php:455
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: mobile/login_form.php:52
+msgid "Open regular version"
+msgstr "Open de reguliere versie"
+
+#: mobile/mobile-functions.php:68 mobile/mobile-functions.php:144
+#: mobile/mobile-functions.php:180 mobile/mobile-functions.php:207
+#: mobile/mobile-functions.php:243 mobile/mobile-functions.php:380
+#: mobile/prefs.php:19
+msgid "Home"
+msgstr "Thuisbasis"
+
+#: mobile/mobile-functions.php:178 include/functions.php:1125
+#: include/functions.php:1746
+msgid "Special"
+msgstr "Speciaal"
+
+#: mobile/mobile-functions.php:416
+msgid "Nothing found (click to reload feed)."
+msgstr "Niets gevonden (klik om feed opnieuw te laden)."
+
+#: mobile/prefs.php:24
+msgid "Enable categories"
+msgstr "Inschakelen categorieën"
+
+#: mobile/prefs.php:25 mobile/prefs.php:30 mobile/prefs.php:36
+#: mobile/prefs.php:41 mobile/prefs.php:46 mobile/prefs.php:51
+msgid "ON"
+msgstr "AAN"
+
+#: mobile/prefs.php:25 mobile/prefs.php:30 mobile/prefs.php:36
+#: mobile/prefs.php:41 mobile/prefs.php:46 mobile/prefs.php:51
+msgid "OFF"
+msgstr "UIT"
+
+#: mobile/prefs.php:29
+msgid "Browse categories like folders"
+msgstr "Browse categorieën als mappen"
+
+#: mobile/prefs.php:35
+msgid "Show images in posts"
+msgstr "Toon afbeeldingen in berichten"
+
+#: mobile/prefs.php:40
+msgid "Hide read articles and feeds"
+msgstr "Verberg gelezen artikelen en feeds"
+
+#: mobile/prefs.php:45
+msgid "Sort feeds by unread count"
+msgstr "sorteer feeds op ongelezen aantallen"
+
+#: mobile/prefs.php:50 include/localized_schema.php:45
+msgid "Reverse headline order (oldest first)"
+msgstr "Draai de koptekst volgorde om (oudste eerst)"
+
+#: include/digest.php:131 include/functions.php:1136
+#: include/functions.php:1649 include/functions.php:1734
+#: include/functions.php:1756 classes/opml.php:416 classes/pref/feeds.php:188
+msgid "Uncategorized"
+msgstr "Ongecategoriseerd"
+
+#: include/feedbrowser.php:83
+#, php-format
+msgid "%d archived articles"
+msgstr "%d gearchiveerde artikelen"
+
+#: include/feedbrowser.php:107
+msgid "No feeds found."
+msgstr "Geen feeds gevonden."
+
+#: include/functions.php:712
+msgid "Session failed to validate (incorrect IP)"
+msgstr "De sessie kon niet worden gevalideerd (onjuist IP)"
+
+#: include/functions.php:1598 classes/dlg.php:369 classes/pref/filters.php:368
+msgid "All feeds"
+msgstr "Alle feeds"
+
+#: include/functions.php:1799
+msgid "Starred articles"
+msgstr "Artikelen met ster"
+
+#: include/functions.php:1801
+msgid "Published articles"
+msgstr "Gepubliceerde artikelen"
+
+#: include/functions.php:1803
+msgid "Fresh articles"
+msgstr "Nieuwe artikelen"
+
+#: include/functions.php:1805 include/functions.php:1919
+msgid "All articles"
+msgstr "Alle artikelen"
+
+#: include/functions.php:1807
+msgid "Archived articles"
+msgstr "Gearchiveerde artikelen"
+
+#: include/functions.php:1809
+msgid "Recently read"
+msgstr "Recent gelezen"
+
+#: include/functions.php:1876
+msgid "Navigation"
+msgstr "Navigatie"
+
+#: include/functions.php:1877
+msgid "Open next feed"
+msgstr "Open volgende feed"
+
+#: include/functions.php:1878
+msgid "Open previous feed"
+msgstr "Open voorgaande feed"
+
+#: include/functions.php:1879
+msgid "Open next article"
+msgstr "Open volgende artikel"
+
+#: include/functions.php:1880
+msgid "Open previous article"
+msgstr "Open voorgaand artikel"
+
+#: include/functions.php:1881
+msgid "Open next article (don't scroll long articles)"
+msgstr "Open volgend artikel (lange artikelen niet scrollen)"
+
+#: include/functions.php:1882
+msgid "Open previous article (don't scroll long articles)"
+msgstr "Open vorig artikel (lange artikelen niet scrollen)"
+
+#: include/functions.php:1883
+msgid "Show search dialog"
+msgstr "toon zoekdialoogvenster"
+
+#: include/functions.php:1884
+msgid "Article"
+msgstr "Artikel"
+
+#: include/functions.php:1885
+msgid "Toggle starred"
+msgstr "In/uitschakelen sterren"
+
+#: include/functions.php:1886
+msgid "Toggle published"
+msgstr "In/uitschakelen gepubliceerd"
+
+#: include/functions.php:1887
+msgid "Toggle unread"
+msgstr "In/uitschakelen gelezen"
+
+#: include/functions.php:1888
+msgid "Edit tags"
+msgstr "Bewerk tags"
+
+#: include/functions.php:1889
+msgid "Dismiss selected"
+msgstr "Geselecteerde negeren"
+
+#: include/functions.php:1890
+msgid "Dismiss read"
+msgstr "Gelezene negeren"
+
+#: include/functions.php:1891
+msgid "Open in new window"
+msgstr "open in nieuw venster"
+
+#: include/functions.php:1892 js/viewfeed.js:1836
+msgid "Mark below as read"
+msgstr "Hieronder markeren als gelezen"
+
+#: include/functions.php:1893 js/viewfeed.js:1830
+msgid "Mark above as read"
+msgstr "hierboven markeren als gelezen"
+
+#: include/functions.php:1894
+msgid "Scroll down"
+msgstr "Omlaag scrollen"
+
+#: include/functions.php:1895
+msgid "Scroll up"
+msgstr "Omhoog scrollen"
+
+#: include/functions.php:1896
+msgid "Select article under cursor"
+msgstr "Selecteer artikel onder de cursor"
+
+#: include/functions.php:1897
+msgid "Email article"
+msgstr "E-mail artikel"
+
+#: include/functions.php:1898
+msgid "Close/collapse article"
+msgstr "Sluiten/inklappen artikel"
+
+#: include/functions.php:1900
+msgid "Article selection"
+msgstr "Artikelselectie"
+
+#: include/functions.php:1901
+msgid "Select all articles"
+msgstr "Selecteer alle artikelen"
+
+#: include/functions.php:1902
+msgid "Select unread"
+msgstr "Selecteer ongelezen"
+
+#: include/functions.php:1903
+msgid "Select starred"
+msgstr "Selecteer met ster"
+
+#: include/functions.php:1904
+msgid "Select published"
+msgstr "Selecteer gepubliceerde"
+
+#: include/functions.php:1905
+msgid "Invert selection"
+msgstr "Omdraaien selectie"
+
+#: include/functions.php:1906
+msgid "Deselect everything"
+msgstr "Deselecteer alles"
+
+#: include/functions.php:1907 classes/pref/feeds.php:488
+#: classes/pref/feeds.php:719
+msgid "Feed"
+msgstr "Feed"
+
+#: include/functions.php:1908
+msgid "Refresh current feed"
+msgstr "Ververs huidige feed"
+
+#: include/functions.php:1909
+msgid "Un/hide read feeds"
+msgstr "Toon/Verberg gelezen feeds"
+
+#: include/functions.php:1910 classes/pref/feeds.php:1240
+msgid "Subscribe to feed"
+msgstr "Abonneer op feed"
+
+#: include/functions.php:1911 js/FeedTree.js:135 js/PrefFeedTree.js:67
+msgid "Edit feed"
+msgstr "Bewerk feed"
+
+#: include/functions.php:1913
+msgid "Reverse headlines"
+msgstr "Draai kopteksten om"
+
+#: include/functions.php:1914
+msgid "Debug feed update"
+msgstr "Debug feed update"
+
+#: include/functions.php:1915 js/FeedTree.js:178
+msgid "Mark all feeds as read"
+msgstr "Markeer alle feeds als gelezen"
+
+#: include/functions.php:1916
+msgid "Un/collapse current category"
+msgstr "Uit/Inklappen huidige categorie"
+
+#: include/functions.php:1917
+msgid "Toggle combined mode"
+msgstr "In/uitschakelen gecombineerde modus"
+
+#: include/functions.php:1918
+msgid "Go to"
+msgstr "Ga naar"
+
+#: include/functions.php:1920
+msgid "Fresh"
+msgstr "Nieuw"
+
+#: include/functions.php:1923
+msgid "Tag cloud"
+msgstr "Tag wolk"
+
+#: include/functions.php:1925
+msgid "Other"
+msgstr "Andere"
+
+#: include/functions.php:1926 classes/pref/labels.php:281
+msgid "Create label"
+msgstr "Aanmaken label"
+
+#: include/functions.php:1927 classes/pref/filters.php:587
+msgid "Create filter"
+msgstr "Aanmaken filter"
+
+#: include/functions.php:1928
+msgid "Un/collapse sidebar"
+msgstr "Uit/Inklappen zijbalk"
+
+#: include/functions.php:1929
+msgid "Show help dialog"
+msgstr "Toon helpdialoogvenster"
+
+#: include/functions.php:2407
+#, php-format
+msgid "Search results: %s"
+msgstr "zoekresultaten: %s"
+
+#: include/functions.php:2896 js/viewfeed.js:1923
+msgid "Click to play"
+msgstr "Klik om af te spelen"
+
+#: include/functions.php:2897 js/viewfeed.js:1922
+msgid "Play"
+msgstr "Afspelen"
+
+#: include/functions.php:3018
+msgid " - "
+msgstr " - "
+
+#: include/functions.php:3040 include/functions.php:3357 classes/rpc.php:360
+msgid "no tags"
+msgstr "geen tags"
+
+#: include/functions.php:3050 classes/feeds.php:651
+msgid "Edit tags for this article"
+msgstr "Bewerk tags voor dit artikel"
+
+#: include/functions.php:3079 classes/feeds.php:606
+msgid "Originally from:"
+msgstr "Oorspronkelijk uit:"
+
+#: include/functions.php:3092 classes/feeds.php:619 classes/pref/feeds.php:507
+msgid "Feed URL"
+msgstr "Feed URL"
+
+#: include/functions.php:3121
+msgid "Related"
+msgstr "Gerelateerd"
+
+#: include/functions.php:3148 classes/dlg.php:43 classes/dlg.php:162
+#: classes/dlg.php:185 classes/dlg.php:222 classes/dlg.php:506
+#: classes/dlg.php:541 classes/dlg.php:572 classes/dlg.php:606
+#: classes/dlg.php:618 classes/backend.php:105 classes/pref/users.php:106
+#: classes/pref/filters.php:108 classes/pref/feeds.php:1553
+#: classes/pref/feeds.php:1624 plugins/import_export/init.php:407
+#: plugins/import_export/init.php:431 plugins/share/init.php:67
+#: plugins/updater/init.php:330
+msgid "Close this window"
+msgstr "Sluit dit venster"
+
+#: include/functions.php:3382
+msgid "(edit note)"
+msgstr "(bewerk notitie)"
+
+#: include/functions.php:3615
+msgid "unknown type"
+msgstr "Onbekend type"
+
+#: include/functions.php:3665
+msgid "Attachments"
+msgstr "Bijlagen"
+
+#: include/localized_schema.php:4
+msgid "Title or Content"
+msgstr "Titel of inhoud"
+
+#: include/localized_schema.php:5
+msgid "Link"
+msgstr "Koppeling"
+
+#: include/localized_schema.php:6
+msgid "Content"
+msgstr "Inhoud"
+
+#: include/localized_schema.php:7
+msgid "Article Date"
+msgstr "Datum artikel"
+
+#: include/localized_schema.php:9
+msgid "Delete article"
+msgstr "Verwijder artikel"
+
+#: include/localized_schema.php:11
+msgid "Set starred"
+msgstr "Ster toevoegen"
+
+#: include/localized_schema.php:12 js/viewfeed.js:480
+#: plugins/digest/digest.js:264 plugins/digest/digest.js:734
+msgid "Publish article"
+msgstr "Artikel publiceren"
+
+#: include/localized_schema.php:13
+msgid "Assign tags"
+msgstr "Tags toevoegen"
+
+#: include/localized_schema.php:14 js/viewfeed.js:1887
+msgid "Assign label"
+msgstr "Labels toevoegen"
+
+#: include/localized_schema.php:15
+msgid "Modify score"
+msgstr "verander de score"
+
+#: include/localized_schema.php:17
+msgid "General"
+msgstr "Algemeen"
+
+#: include/localized_schema.php:18
+msgid "Interface"
+msgstr "Interface"
+
+#: include/localized_schema.php:19
+msgid "Advanced"
+msgstr "Geavanceerd"
+
+#: include/localized_schema.php:21
+msgid ""
+"This option is useful when you are reading several planet-type aggregators "
+"with partially colliding userbase. When disabled, it forces same posts from "
+"different feeds to appear only once."
+msgstr ""
+"Deze optie is nuttig als u verscheidene planet-type nieuws aggregators leest "
+"met een ten dele overeenkomende gebruikersgroep. Indien uitgeschakeld "
+"forceert het berichten van verschillende feeds slechts eenmaal te "
+"verschijnen."
+
+#: include/localized_schema.php:22
+msgid ""
+"Display expanded list of feed articles, instead of separate displays for "
+"headlines and article content"
+msgstr ""
+"Uitgeklapte lijst van artikelen weergeven in plaats van afzonderlijke "
+"weergave van kopteksten en artikelinhoud"
+
+#: include/localized_schema.php:23
+msgid ""
+"Automatically open next feed with unread articles after marking one as read"
+msgstr ""
+"Automatisch volgende feed met ongelezen artikelen openen nadat er een is "
+"gemarkeerd als gelezen"
+
+#: include/localized_schema.php:24
+msgid ""
+"This option enables sending daily digest of new (and unread) headlines on "
+"your configured e-mail address"
+msgstr ""
+"Deze optie schakelt het verzenden in van een dagelijkse samenvatting van "
+"nieuwe (en ongelezen) kopteksten naar het door u ingestelde e-mailadres"
+
+#: include/localized_schema.php:25
+msgid ""
+"This option enables marking articles as read automatically while you scroll "
+"article list."
+msgstr ""
+"Deze optie schakelt het automatisch markeren als gelezen van artikelen in, "
+"terwijl u door de artikellijst scrolt."
+
+#: include/localized_schema.php:26
+msgid "Strip all but most common HTML tags when reading articles."
+msgstr ""
+"Verwijder alles behalve de meest algemene HTML tags bij het lezen van "
+"artikelen."
+
+#: include/localized_schema.php:27
+msgid ""
+"When auto-detecting tags in articles these tags will not be applied (comma-"
+"separated list)."
+msgstr ""
+"Wanneer tags automatisch worden gedetecteerd in artikelen, zullen deze tags "
+"niet worden toegekend (komma-gescheiden lijst)."
+
+#: include/localized_schema.php:28
+msgid ""
+"When this option is enabled, headlines in Special feeds and Labels are "
+"grouped by feeds"
+msgstr ""
+"Als deze optie is ingeschakeld worden kopteksten in de Speciale feedsrubriek "
+"en Labels gegroepeerd per feed"
+
+#: include/localized_schema.php:29
+msgid "Customize CSS stylesheet to your liking"
+msgstr "Aanpassen CSS opmaakmodel aan uw voorkeur"
+
+#: include/localized_schema.php:30
+msgid "Use feed-specified date to sort headlines instead of local import date."
+msgstr ""
+"Door feed gespecificeerde data gebruiken om kopteksten te sorteren in plaats "
+"van lokaal geïmporteerde data."
+
+#: include/localized_schema.php:31
+msgid "Click to register your SSL client certificate with tt-rss"
+msgstr "Klik om uw SSL cliëntcertificaat te registreren bij tt-rss"
+
+#: include/localized_schema.php:32
+msgid "Uses UTC timezone"
+msgstr "Gebruikt UTC tijdzone"
+
+#: include/localized_schema.php:33
+msgid "Purge articles after this number of days (0 - disables)"
+msgstr ""
+"Permanent verwijderen van artikelen na dit aantal dagen (0 - zet dit uit)"
+
+#: include/localized_schema.php:34
+msgid "Default interval between feed updates"
+msgstr "Standaard interval voor feed updates"
+
+#: include/localized_schema.php:35
+msgid "Amount of articles to display at once"
+msgstr "Aantal tegelijkertijd weer te geven artikelen "
+
+#: include/localized_schema.php:36
+msgid "Allow duplicate posts"
+msgstr "toestaan dubbele berichten"
+
+#: include/localized_schema.php:37
+msgid "Enable feed categories"
+msgstr "Inschakelen feed categorieën"
+
+#: include/localized_schema.php:38
+msgid "Show content preview in headlines list"
+msgstr "toon voorbeeld van inhoud in lijst van kopteksten"
+
+#: include/localized_schema.php:39
+msgid "Short date format"
+msgstr "Korte datumformaat"
+
+#: include/localized_schema.php:40
+msgid "Long date format"
+msgstr "Lang datumformaat"
+
+#: include/localized_schema.php:41
+msgid "Combined feed display"
+msgstr "Gecombineerde feed weergave"
+
+#: include/localized_schema.php:42
+msgid "Hide feeds with no unread messages"
+msgstr "Feeds zonder ongelezen artikelen verbergen"
+
+#: include/localized_schema.php:43
+msgid "On catchup show next feed"
+msgstr "toon volgende feed na bijwerken"
+
+#: include/localized_schema.php:44
+msgid "Sort feeds by unread articles count"
+msgstr "Sorteer feeds op aantal ongelezen artikelen"
+
+#: include/localized_schema.php:46
+msgid "Enable e-mail digest"
+msgstr "Inschakelen e-mail samenvatting"
+
+#: include/localized_schema.php:47
+msgid "Confirm marking feed as read"
+msgstr "Bevestigen feed markeren als gelezen"
+
+#: include/localized_schema.php:48
+msgid "Automatically mark articles as read"
+msgstr "Artikelen automatisch als gelezen markeren"
+
+#: include/localized_schema.php:49
+msgid "Strip unsafe tags from articles"
+msgstr "Verwijder onveilige tags uit artikelen"
+
+#: include/localized_schema.php:50
+msgid "Blacklisted tags"
+msgstr "Op de zwarte lijst geplaatste tags"
+
+#: include/localized_schema.php:51
+msgid "Maximum age of fresh articles (in hours)"
+msgstr "Maximum leeftijd van nieuwe artikelen (uren) "
+
+#: include/localized_schema.php:52
+msgid "Mark articles in e-mail digest as read"
+msgstr "Markeer artikelen in e-mail samenvatting als gelezen"
+
+#: include/localized_schema.php:53
+msgid "Automatically expand articles in combined mode"
+msgstr "Artikelen automatisch uitklappen in gecombineerde modus"
+
+#: include/localized_schema.php:54
+msgid "Purge unread articles"
+msgstr "Ongelezen artikelen permanent verwijderen"
+
+#: include/localized_schema.php:55
+msgid "Show special feeds when hiding read feeds"
+msgstr "Toon speciale feeds bij verbergen gelezen feeds"
+
+#: include/localized_schema.php:56
+msgid "Group headlines in virtual feeds"
+msgstr "Kopteksten in virtuele feeds groeperen"
+
+#: include/localized_schema.php:57
+msgid "Do not embed images in articles"
+msgstr "Afbeeldingen niet insluiten in artikelen"
+
+#: include/localized_schema.php:58
+msgid "Enable external API"
+msgstr "Inschakelen externe API"
+
+#: include/localized_schema.php:59
+msgid "User timezone"
+msgstr "Gebruiker's tijdzone"
+
+#: include/localized_schema.php:60 js/prefs.js:1740
+msgid "Customize stylesheet"
+msgstr "Aanpassen opmaakmodel"
+
+#: include/localized_schema.php:61
+msgid "Sort headlines by feed date"
+msgstr "Sorteer kopteksten op feed datum"
+
+#: include/localized_schema.php:62
+msgid "Login with an SSL certificate"
+msgstr "Aanmelden met een SSL-certificaat"
+
+#: include/localized_schema.php:63
+msgid "Try to send digests around specified time"
+msgstr "Tracht samenvattingen te verzenden rond een bepaalde tijd"
+
+#: include/localized_schema.php:64
+msgid "Assign articles to labels automatically"
+msgstr "Artikelen automatisch toekennen aan labels"
+
+#: include/login_form.php:185 classes/handler/public.php:458
+msgid "Language:"
+msgstr "Taal:"
+
+#: include/login_form.php:193
+msgid "Profile:"
+msgstr "Profiel:"
+
+#: include/login_form.php:197 classes/handler/public.php:212
+#: classes/rpc.php:64 classes/dlg.php:98
+msgid "Default profile"
+msgstr "Standaard profiel"
+
+#: include/login_form.php:205
+msgid "Use less traffic"
+msgstr "Gebruik minder dataverkeer"
+
+#: classes/article.php:25
+msgid "Article not found."
+msgstr "Artikel niet gevonden."
+
+#: classes/handler/public.php:393 plugins/bookmarklets/init.php:38
+msgid "Share with Tiny Tiny RSS"
+msgstr "Deel met Tiny Tiny RSS"
+
+#: classes/handler/public.php:401
+msgid "Title:"
+msgstr "Titel:"
+
+#: classes/handler/public.php:403 classes/dlg.php:665
+#: classes/pref/feeds.php:505 classes/pref/feeds.php:734
+#: plugins/instances/init.php:215
+msgid "URL:"
+msgstr "URL:"
+
+#: classes/handler/public.php:405
+msgid "Content:"
+msgstr "Inhoud:"
+
+#: classes/handler/public.php:407
+msgid "Labels:"
+msgstr "Labels:"
+
+#: classes/handler/public.php:426
+msgid "Shared article will appear in the Published feed."
+msgstr "Gedeeld artikel zal verschijnen in de Gepubliceerd feed."
+
+#: classes/handler/public.php:428
+msgid "Share"
+msgstr "Delen"
+
+#: classes/handler/public.php:429 classes/handler/public.php:471
+#: classes/dlg.php:296 classes/dlg.php:348 classes/dlg.php:408
+#: classes/dlg.php:439 classes/dlg.php:650 classes/dlg.php:700
+#: classes/dlg.php:749 classes/pref/users.php:194 classes/pref/labels.php:81
+#: classes/pref/filters.php:349 classes/pref/filters.php:729
+#: classes/pref/filters.php:798 classes/pref/filters.php:865
+#: classes/pref/feeds.php:701 classes/pref/feeds.php:849
+#: plugins/mail/init.php:131 plugins/note/init.php:55
+#: plugins/instances/init.php:251
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: classes/handler/public.php:450
+msgid "Not logged in"
+msgstr "Niet ingelogd"
+
+#: classes/handler/public.php:510
+msgid "Incorrect username or password"
+msgstr "Onjuiste gebruikersnaam of wachtwoord"
+
+#: classes/handler/public.php:546 classes/handler/public.php:643
+#, php-format
+msgid "Already subscribed to <b>%s</b>."
+msgstr "Reeds geabonneerd op <b>%s</b>."
+
+#: classes/handler/public.php:549 classes/handler/public.php:634
+#, php-format
+msgid "Subscribed to <b>%s</b>."
+msgstr "Geabonneerd op <b>%s</b>."
+
+#: classes/handler/public.php:552 classes/handler/public.php:637
+#, php-format
+msgid "Could not subscribe to <b>%s</b>."
+msgstr "Kon niet abonneren op <b>%s</b>."
+
+#: classes/handler/public.php:555 classes/handler/public.php:640
+#, php-format
+msgid "No feeds found in <b>%s</b>."
+msgstr "Geen feeds gevonden in <b>%s</b>."
+
+#: classes/handler/public.php:558 classes/handler/public.php:646
+msgid "Multiple feed URLs found."
+msgstr "Meerdere feed-URL's gevonden."
+
+#: classes/handler/public.php:562 classes/handler/public.php:651
+#, php-format
+msgid "Could not subscribe to <b>%s</b>.<br>Can't download the Feed URL."
+msgstr "Kon niet abonneren op <b>%s</b>.<br>Kon de feed URL niet downloaden."
+
+#: classes/handler/public.php:580 classes/handler/public.php:669
+msgid "Subscribe to selected feed"
+msgstr "Abonneren op de geselecteerde feed"
+
+#: classes/handler/public.php:605 classes/handler/public.php:693
+msgid "Edit subscription options"
+msgstr "Bewerk abonnement opties"
+
+#: classes/dlg.php:22
+msgid ""
+"If you have imported labels and/or filters, you might need to reload "
+"preferences to see your new data."
+msgstr ""
+"Indien u labels en/of filters heeft geïmporteerd moet u waarschijnlijk te "
+"voorkeuren herladen om uw bijgewerkte gegevens te zien."
+
+#: classes/dlg.php:55 classes/pref/users.php:378 classes/pref/labels.php:272
+#: classes/pref/filters.php:230 classes/pref/filters.php:277
+#: classes/pref/filters.php:578 classes/pref/filters.php:657
+#: classes/pref/filters.php:684 classes/pref/feeds.php:1228
+#: classes/pref/feeds.php:1498 classes/pref/feeds.php:1567
+#: plugins/instances/init.php:287
+msgid "Select"
+msgstr "Selecteer"
+
+#: classes/dlg.php:58 classes/feeds.php:92 classes/pref/users.php:381
+#: classes/pref/labels.php:275 classes/pref/filters.php:233
+#: classes/pref/filters.php:280 classes/pref/filters.php:581
+#: classes/pref/filters.php:660 classes/pref/filters.php:687
+#: classes/pref/feeds.php:1231 classes/pref/feeds.php:1501
+#: classes/pref/feeds.php:1570 plugins/instances/init.php:290
+msgid "All"
+msgstr "Alles"
+
+#: classes/dlg.php:60 classes/feeds.php:95 classes/pref/users.php:383
+#: classes/pref/labels.php:277 classes/pref/filters.php:235
+#: classes/pref/filters.php:282 classes/pref/filters.php:583
+#: classes/pref/filters.php:662 classes/pref/filters.php:689
+#: classes/pref/feeds.php:1233 classes/pref/feeds.php:1503
+#: classes/pref/feeds.php:1572 plugins/instances/init.php:292
+msgid "None"
+msgstr "Niets"
+
+#: classes/dlg.php:69
+msgid "Create profile"
+msgstr "Maak profiel"
+
+#: classes/dlg.php:92 classes/dlg.php:122
+msgid "(active)"
+msgstr "(actief)"
+
+#: classes/dlg.php:156
+msgid "Remove selected profiles"
+msgstr "Verwijder geselecteerde profielen"
+
+#: classes/dlg.php:158
+msgid "Activate profile"
+msgstr "Activeer profiel"
+
+#: classes/dlg.php:168
+msgid "Public OPML URL"
+msgstr "Publieke OPML URL"
+
+#: classes/dlg.php:173
+msgid "Your Public OPML URL is:"
+msgstr "Uw publieke OPML URL is:"
+
+#: classes/dlg.php:182 classes/dlg.php:569
+msgid "Generate new URL"
+msgstr "Genereer nieuwe URL"
+
+#: classes/dlg.php:194
+msgid "Notice"
+msgstr "NB!"
+
+#: classes/dlg.php:200
+msgid ""
+"Update daemon is enabled in configuration, but daemon process is not "
+"running, which prevents all feeds from updating. Please start the daemon "
+"process or contact instance owner."
+msgstr ""
+"De update deamon is ingeschakeld in de configuratie, maar het deamon proces "
+"loopt niet. Dit voorkomt dat alle feeds wordt bijgewerkt. Start het deamon "
+"proces of contacteer de eigenaar van deze instantie."
+
+#: classes/dlg.php:204 classes/dlg.php:213
+msgid "Last update:"
+msgstr "Laatste update:"
+
+#: classes/dlg.php:209
+msgid ""
+"Update daemon is taking too long to perform a feed update. This could "
+"indicate a problem like crash or a hang. Please check the daemon process or "
+"contact instance owner."
+msgstr ""
+"De update deamon neemt te veel tijd om een feed bij te werken. Dit kan "
+"betekenen dat het proces is gescrashed of hangt. Controleer het deamon "
+"proces of contacteer de eigenaar van deze instantie."
+
+#: classes/dlg.php:234 classes/dlg.php:242
+msgid "Feed or site URL"
+msgstr "Feed of website URL"
+
+#: classes/dlg.php:248 classes/dlg.php:713 classes/pref/feeds.php:527
+#: classes/pref/feeds.php:747
+msgid "Place in category:"
+msgstr "Plaats in categorie:"
+
+#: classes/dlg.php:256
+msgid "Available feeds"
+msgstr "Beschikbare feeds"
+
+#: classes/dlg.php:268 classes/pref/users.php:155 classes/pref/feeds.php:557
+#: classes/pref/feeds.php:783
+msgid "Authentication"
+msgstr "Authenticatie"
+
+#: classes/dlg.php:272 classes/dlg.php:727 classes/pref/users.php:438
+#: classes/pref/feeds.php:563 classes/pref/feeds.php:787
+msgid "Login"
+msgstr "LoginID"
+
+#: classes/dlg.php:275 classes/dlg.php:730 classes/pref/prefs.php:202
+#: classes/pref/feeds.php:569 classes/pref/feeds.php:793
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: classes/dlg.php:285
+msgid "This feed requires authentication."
+msgstr "Deze feed vereist authenticatie."
+
+#: classes/dlg.php:290 classes/dlg.php:346 classes/dlg.php:748
+msgid "Subscribe"
+msgstr "Abonneren"
+
+#: classes/dlg.php:293
+msgid "More feeds"
+msgstr "Meer feeds"
+
+#: classes/dlg.php:316 classes/dlg.php:407 classes/pref/users.php:368
+#: classes/pref/filters.php:574 classes/pref/feeds.php:1224 js/tt-rss.js:166
+msgid "Search"
+msgstr "Zoeken"
+
+#: classes/dlg.php:320
+msgid "Popular feeds"
+msgstr "Populaire feeds"
+
+#: classes/dlg.php:321
+msgid "Feed archive"
+msgstr "Feed archief"
+
+#: classes/dlg.php:324
+msgid "limit:"
+msgstr "Beperking:"
+
+#: classes/dlg.php:347 classes/pref/users.php:394 classes/pref/labels.php:284
+#: classes/pref/filters.php:339 classes/pref/filters.php:596
+#: classes/pref/feeds.php:674 plugins/instances/init.php:297
+msgid "Remove"
+msgstr "Verwijderen"
+
+#: classes/dlg.php:358
+msgid "Look for"
+msgstr "Zoek naar"
+
+#: classes/dlg.php:366
+msgid "Limit search to:"
+msgstr "Beperk zoeken naar:"
+
+#: classes/dlg.php:382
+msgid "This feed"
+msgstr "Deze feed"
+
+#: classes/dlg.php:414
+msgid "Tags for this article (separated by commas):"
+msgstr "Tags voor dit artikel (komma gescheiden):"
+
+#: classes/dlg.php:437 classes/dlg.php:648 classes/pref/users.php:192
+#: classes/pref/labels.php:79 classes/pref/filters.php:346
+#: classes/pref/feeds.php:700 classes/pref/feeds.php:846
+#: plugins/nsfw/init.php:86 plugins/note/init.php:53
+#: plugins/owncloud/init.php:62 plugins/instances/init.php:248
+msgid "Save"
+msgstr "Opslaan"
+
+#: classes/dlg.php:445
+msgid "Tag Cloud"
+msgstr "Tag Wolk"
+
+#: classes/dlg.php:514
+msgid "Select item(s) by tags"
+msgstr "Selecteer item(s) via tags"
+
+#: classes/dlg.php:517
+msgid "Match:"
+msgstr "Match:"
+
+#: classes/dlg.php:519
+msgid "Any"
+msgstr "Elke"
+
+#: classes/dlg.php:522
+msgid "All tags."
+msgstr "Alle tags."
+
+#: classes/dlg.php:524
+msgid "Which Tags?"
+msgstr "Welke tags?"
+
+#: classes/dlg.php:537
+msgid "Display entries"
+msgstr "Items weergeven"
+
+#: classes/dlg.php:549 classes/feeds.php:138
+msgid "View as RSS"
+msgstr "Toon als RSS"
+
+#: classes/dlg.php:560
+msgid "You can view this feed as RSS using the following URL:"
+msgstr "u kunt deze feed bekijken als RSS via de volgende URL:"
+
+#: classes/dlg.php:589 plugins/updater/init.php:304
+#, php-format
+msgid "New version of Tiny Tiny RSS is available (%s)."
+msgstr "Nieuwe versie van Tiny Tiny RSS is beschikbaar (%s)."
+
+#: classes/dlg.php:597
+msgid ""
+"You can update using built-in updater in the Preferences or by using update."
+"php"
+msgstr ""
+"U kunt updaten met behulp van de ingebouwde updater in de Voorkeuren of via "
+"update.php"
+
+#: classes/dlg.php:601 classes/pref/users.php:390
+msgid "Details"
+msgstr "Details"
+
+#: classes/dlg.php:603
+msgid "Download"
+msgstr "Downloaden"
+
+#: classes/dlg.php:611
+msgid "Error receiving version information or no new version available."
+msgstr ""
+"Fout bij verkrijgen van informatie over de versie, of geen nieuwe versie "
+"beschikbaar."
+
+#: classes/dlg.php:632
+#, php-format
+msgid ""
+"You can override colors, fonts and layout of your currently selected theme "
+"with custom CSS declarations here. <a target=\"_blank\" class=\"visibleLink"
+"\" href=\"%s\">This file</a> can be used as a baseline."
+msgstr ""
+"U kunt door de CSS-declaraties aan te passen de kleuren, lettertypen en lay-"
+"out van uw huidige thema hier aanpassen. <a target=\"_blank\" class="
+"\"visibleLink\" href=\"%s\">Dit bestand</a> kan als richtlijn worden "
+"gebruikt."
+
+#: classes/dlg.php:659 plugins/instances/init.php:207
+msgid "Instance"
+msgstr "Instantie"
+
+#: classes/dlg.php:668 plugins/instances/init.php:218
+#: plugins/instances/init.php:315
+msgid "Instance URL"
+msgstr "instantie URL"
+
+#: classes/dlg.php:678 plugins/instances/init.php:229
+msgid "Access key:"
+msgstr "Toegangssleutel:"
+
+#: classes/dlg.php:681 plugins/instances/init.php:232
+#: plugins/instances/init.php:316
+msgid "Access key"
+msgstr "Toegangssleutel"
+
+#: classes/dlg.php:685 plugins/instances/init.php:236
+msgid "Use one access key for both linked instances."
+msgstr "Gebruik één toegang-sleutel voor beide gekoppelde instanties."
+
+#: classes/dlg.php:693 plugins/instances/init.php:244
+msgid "Generate new key"
+msgstr "Genereer nieuwe sleutel"
+
+#: classes/dlg.php:697
+msgid "Create link"
+msgstr "Link aanmaken"
+
+#: classes/dlg.php:710
+msgid "Add one valid RSS feed per line (no feed detection is done)"
+msgstr ""
+"Een geldige RSS feed per regel toevoegen (geen feed detectie uitgevoerd)"
+
+#: classes/dlg.php:719
+msgid "Feeds to subscribe, One per line"
+msgstr "Te abonneren feeds: één per regel"
+
+#: classes/dlg.php:741
+msgid "Feeds require authentication."
+msgstr "Feeds vereisen authenticatie."
+
+#: classes/feeds.php:68
+msgid "Visit the website"
+msgstr "Bezoek de website"
+
+#: classes/feeds.php:83
+msgid "View as RSS feed"
+msgstr "Toon als RSS feed"
+
+#: classes/feeds.php:91
+msgid "Select:"
+msgstr "Selecteer:"
+
+#: classes/feeds.php:94
+msgid "Invert"
+msgstr "Omkeren"
+
+#: classes/feeds.php:101
+msgid "More..."
+msgstr "Meer…"
+
+#: classes/feeds.php:103
+msgid "Selection toggle:"
+msgstr "Selectie schakelaar:"
+
+#: classes/feeds.php:109
+msgid "Selection:"
+msgstr "Selectie:"
+
+#: classes/feeds.php:112
+msgid "Set score"
+msgstr "Geef score"
+
+#: classes/feeds.php:115
+msgid "Archive"
+msgstr "Archief"
+
+#: classes/feeds.php:117
+msgid "Move back"
+msgstr "Terugzetten"
+
+#: classes/feeds.php:118 classes/pref/filters.php:242
+#: classes/pref/filters.php:289 classes/pref/filters.php:669
+#: classes/pref/filters.php:696
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: classes/feeds.php:125 classes/feeds.php:130 plugins/mailto/init.php:28
+#: plugins/mail/init.php:28
+msgid "Forward by email"
+msgstr "doorsturen per e-mail"
+
+#: classes/feeds.php:134
+msgid "Feed:"
+msgstr "Feed:"
+
+#: classes/feeds.php:201 classes/feeds.php:796
+msgid "Feed not found."
+msgstr "Feed niet gevonden."
+
+#: classes/feeds.php:496
+msgid "mark as read"
+msgstr "Markeer als gelezen"
+
+#: classes/feeds.php:551
+msgid "Collapse article"
+msgstr "Artikel inklappen"
+
+#: classes/feeds.php:697
+msgid "No unread articles found to display."
+msgstr "Er zijn geen ongelezen artikelen gevonden om weer te geven."
+
+#: classes/feeds.php:700
+msgid "No updated articles found to display."
+msgstr "Geen bijgewerkte artikelen gevonden om weer te geven."
+
+#: classes/feeds.php:703
+msgid "No starred articles found to display."
+msgstr "Er zijn geen artikelen met ster gevonden om weer te geven."
+
+#: classes/feeds.php:707
+msgid ""
+"No articles found to display. You can assign articles to labels manually "
+"(see the Actions menu above) or use a filter."
+msgstr ""
+"Geen artikelen gevonden voor weergave. U kunt artikelen handmatig aan labels "
+"toekennen (zie het Actie menu hierboven) of een filter gebruiken."
+
+#: classes/feeds.php:709
+msgid "No articles found to display."
+msgstr "Geen artikelen gevonden om weer te geven."
+
+#: classes/feeds.php:724 classes/feeds.php:905
+#, php-format
+msgid "Feeds last updated at %s"
+msgstr "Feeds laatst bijgewerkt op %s"
+
+#: classes/feeds.php:734 classes/feeds.php:915
+msgid "Some feeds have update errors (click for details)"
+msgstr "Sommige feeds hebben update fouten (klik voor details)"
+
+#: classes/feeds.php:895
+msgid "No feed selected."
+msgstr "Geen feeds geselecteerd."
+
+#: classes/backend.php:34
+msgid "Keyboard Shortcuts"
+msgstr "Sneltoetscombinaties"
+
+#: classes/backend.php:57
+msgid "Shift"
+msgstr "Shift"
+
+#: classes/backend.php:60
+msgid "Ctrl"
+msgstr "Ctrl"
+
+#: classes/backend.php:84
+msgid "Other interface tips are available in the Tiny Tiny RSS wiki."
+msgstr "andere interface tips zijn te vinden in de Tiny Tiny RSS wiki."
+
+#: classes/backend.php:99
+msgid "Help topic not found."
+msgstr "Help onderwerp niet gevonden."
+
+#: classes/opml.php:28 classes/opml.php:33
+msgid "OPML Utility"
+msgstr "OPML hulpprogramma"
+
+#: classes/opml.php:37
+msgid "Importing OPML..."
+msgstr "OPML aan 't importeren…"
+
+#: classes/opml.php:41
+msgid "Return to preferences"
+msgstr "Terug naar voorkeuren"
+
+#: classes/opml.php:270
+#, php-format
+msgid "Adding feed: %s"
+msgstr "Feed toevoegen: %s"
+
+#: classes/opml.php:281
+#, php-format
+msgid "Duplicate feed: %s"
+msgstr "Dubbele feed: %s"
+
+#: classes/opml.php:295
+#, php-format
+msgid "Adding label %s"
+msgstr "Toevoegen label %s"
+
+#: classes/opml.php:298
+#, php-format
+msgid "Duplicate label: %s"
+msgstr "Dubbele label: %s"
+
+#: classes/opml.php:310
+#, php-format
+msgid "Setting preference key %s to %s"
+msgstr "Instellen voorkeursleutel %s op %s"
+
+#: classes/opml.php:339
+msgid "Adding filter..."
+msgstr "filter toevoegen..."
+
+#: classes/opml.php:416
+#, php-format
+msgid "Processing category: %s"
+msgstr "Verwerken categorie: %s"
+
+#: classes/opml.php:468
+msgid "Error: please upload OPML file."
+msgstr "Fout: OPML-bestand uploaden aub."
+
+#: classes/opml.php:475
+msgid "Error while parsing document."
+msgstr "Fout bij het parseren van het document."
+
+#: classes/pref/users.php:6 plugins/instances/init.php:157
+msgid "Your access level is insufficient to open this tab."
+msgstr "Uw toegangsniveau is niet toereikend om deze tab te openen."
+
+#: classes/pref/users.php:27
+msgid "User details"
+msgstr "Gebruiker's details"
+
+#: classes/pref/users.php:41
+msgid "User not found"
+msgstr "Gebruiker niet gevonden"
+
+#: classes/pref/users.php:60 classes/pref/users.php:440
+msgid "Registered"
+msgstr "Geregistreerd"
+
+#: classes/pref/users.php:61
+msgid "Last logged in"
+msgstr "Laatst ingelogd"
+
+#: classes/pref/users.php:68
+msgid "Subscribed feeds count"
+msgstr "Aantal geabonneerde feeds"
+
+#: classes/pref/users.php:72
+msgid "Subscribed feeds"
+msgstr "Geabonneerde feeds"
+
+#: classes/pref/users.php:122
+msgid "User Editor"
+msgstr "Gebruiker's Editor"
+
+#: classes/pref/users.php:158
+msgid "Access level: "
+msgstr "Toegangsniveau:"
+
+#: classes/pref/users.php:171
+msgid "Change password to"
+msgstr "Wijzig wachtwoord naar"
+
+#: classes/pref/users.php:177 classes/pref/feeds.php:577
+#: classes/pref/feeds.php:799
+msgid "Options"
+msgstr "Opties"
+
+#: classes/pref/users.php:180
+msgid "E-mail: "
+msgstr "E-mail: "
+
+#: classes/pref/users.php:258
+#, php-format
+msgid "Added user <b>%s</b> with password <b>%s</b>"
+msgstr "Gebruiker <b>%s</b> toegevoegd met wachtwoord <b>%s</b>"
+
+#: classes/pref/users.php:265
+#, php-format
+msgid "Could not create user <b>%s</b>"
+msgstr "Kon gebruiker <b>%s</b> niet aanmaken"
+
+#: classes/pref/users.php:269
+#, php-format
+msgid "User <b>%s</b> already exists."
+msgstr "Gebruiker <b>%s</b> bestaat al."
+
+#: classes/pref/users.php:292
+#, php-format
+msgid ""
+"Changed password of user <b>%s</b>\n"
+"\t\t\t\t to <b>%s</b>"
+msgstr ""
+"Wijzig wachtwoord van gebruiker<b>%s</b>\n"
+"\t\t\t\t naar <b>%s</b>"
+
+#: classes/pref/users.php:299
+#, php-format
+msgid "Notifying <b>%s</b>."
+msgstr "Melden aan <b>%s</b>."
+
+#: classes/pref/users.php:336
+msgid "[tt-rss] Password change notification"
+msgstr "[tt-rss] Melding verandering van wachtwoord"
+
+#: classes/pref/users.php:386
+msgid "Create user"
+msgstr "Gebruiker aanmaken"
+
+#: classes/pref/users.php:392 classes/pref/filters.php:593
+#: plugins/instances/init.php:296
+msgid "Edit"
+msgstr "Bewerken"
+
+#: classes/pref/users.php:396
+msgid "Reset password"
+msgstr "Herstel wachtwoord"
+
+#: classes/pref/users.php:439
+msgid "Access Level"
+msgstr "Toegangsniveau"
+
+#: classes/pref/users.php:441
+msgid "Last login"
+msgstr "Laatste loginID"
+
+#: classes/pref/users.php:462 plugins/instances/init.php:337
+msgid "Click to edit"
+msgstr "Klik voor bewerken"
+
+#: classes/pref/users.php:482
+msgid "No users defined."
+msgstr "Geen gebruikers gedefinieerd."
+
+#: classes/pref/users.php:484
+msgid "No matching users found."
+msgstr "geen overeenkomstige gebruikers gevonden."
+
+#: classes/pref/labels.php:22
+msgid "Caption"
+msgstr "Onderschrift"
+
+#: classes/pref/labels.php:37
+msgid "Colors"
+msgstr "Kleuren"
+
+#: classes/pref/labels.php:42
+msgid "Foreground:"
+msgstr "Voorgrond:"
+
+#: classes/pref/labels.php:42
+msgid "Background:"
+msgstr "Achtergrond:"
+
+#: classes/pref/labels.php:232
+#, php-format
+msgid "Created label <b>%s</b>"
+msgstr "aangemaakt label <b>%s</b>"
+
+#: classes/pref/labels.php:287
+msgid "Clear colors"
+msgstr "Wis kleuren"
+
+#: classes/pref/filters.php:57
+msgid "Articles matching this filter:"
+msgstr "Artikelen volgens dit filter:"
+
+#: classes/pref/filters.php:94
+msgid "No recent articles matching this filter have been found."
+msgstr ""
+"Er zijn geen recente artikelen die overeenkomen met dit filter gevonden."
+
+#: classes/pref/filters.php:98
+msgid ""
+"Complex expressions might not give results while testing due to issues with "
+"database server regexp implementation."
+msgstr ""
+"complexe expressies kunnen geen resultaat geven bij het testen, tengevolge "
+"van problemen bij de database server's regexp implementatie."
+
+#: classes/pref/filters.php:225 classes/pref/filters.php:652
+#: classes/pref/filters.php:767
+msgid "Match"
+msgstr "Match"
+
+#: classes/pref/filters.php:239 classes/pref/filters.php:286
+#: classes/pref/filters.php:666 classes/pref/filters.php:693
+msgid "Add"
+msgstr "Toevoegen"
+
+#: classes/pref/filters.php:272 classes/pref/filters.php:679
+msgid "Apply actions"
+msgstr "Acties toepassen"
+
+#: classes/pref/filters.php:322 classes/pref/filters.php:708
+msgid "Enabled"
+msgstr "Ingeschakeld"
+
+#: classes/pref/filters.php:331 classes/pref/filters.php:711
+msgid "Match any rule"
+msgstr "Match elke regel"
+
+#: classes/pref/filters.php:343 classes/pref/filters.php:723
+msgid "Test"
+msgstr "Test"
+
+#: classes/pref/filters.php:375
+#, php-format
+msgid "%s on %s in %s"
+msgstr "%s op %s in %s"
+
+#: classes/pref/filters.php:590
+msgid "Combine"
+msgstr "Combineren"
+
+#: classes/pref/filters.php:600 classes/pref/feeds.php:1283
+msgid "Rescore articles"
+msgstr "Artikelen nieuwe score geven"
+
+#: classes/pref/filters.php:726
+msgid "Create"
+msgstr "Aanmaken"
+
+#: classes/pref/filters.php:776
+msgid "on field"
+msgstr "op veld"
+
+#: classes/pref/filters.php:782 js/PrefFilterTree.js:29
+#: plugins/digest/digest.js:241
+msgid "in"
+msgstr "in"
+
+#: classes/pref/filters.php:795
+msgid "Save rule"
+msgstr "Regel opslaan"
+
+#: classes/pref/filters.php:795 js/functions.js:1078
+msgid "Add rule"
+msgstr "regel toevoegen"
+
+#: classes/pref/filters.php:818
+msgid "Perform Action"
+msgstr "Actie doorvoeren"
+
+#: classes/pref/filters.php:844
+msgid "with parameters:"
+msgstr "met parameters:"
+
+#: classes/pref/filters.php:862
+msgid "Save action"
+msgstr "Actie opslaan"
+
+#: classes/pref/filters.php:862 js/functions.js:1104
+msgid "Add action"
+msgstr "Actie toevoegen"
+
+#: classes/pref/prefs.php:17
+msgid "Old password cannot be blank."
+msgstr "Oud wachtwoord kan niet leeg zijn."
+
+#: classes/pref/prefs.php:22
+msgid "New password cannot be blank."
+msgstr "Nieuw wachtwoord kan niet leeg zijn."
+
+#: classes/pref/prefs.php:27
+msgid "Entered passwords do not match."
+msgstr "Ingevulde wachtwoorden komen niet overeen."
+
+#: classes/pref/prefs.php:37
+msgid "Function not supported by authentication module."
+msgstr "Functie niet ondersteund door authenticatiemodule."
+
+#: classes/pref/prefs.php:69
+msgid "The configuration was saved."
+msgstr "De configuratie is opgeslagen."
+
+#: classes/pref/prefs.php:83
+#, php-format
+msgid "Unknown option: %s"
+msgstr "Onbekende optie: %s"
+
+#: classes/pref/prefs.php:97
+msgid "Your personal data has been saved."
+msgstr "Uw persoonlijke gegevens zijn opgeslagen."
+
+#: classes/pref/prefs.php:137
+msgid "Personal data / Authentication"
+msgstr "Persoonlijke gegevens / Authenticatie"
+
+#: classes/pref/prefs.php:157
+msgid "Personal data"
+msgstr "Persoonlijke gegevens"
+
+#: classes/pref/prefs.php:167
+msgid "Full name"
+msgstr "volledige naam"
+
+#: classes/pref/prefs.php:171
+msgid "E-mail"
+msgstr "E-mail"
+
+#: classes/pref/prefs.php:177
+msgid "Access level"
+msgstr "Toegangsniveau"
+
+#: classes/pref/prefs.php:187
+msgid "Save data"
+msgstr "Gegevens opslaan"
+
+#: classes/pref/prefs.php:209
+msgid "Your password is at default value, please change it."
+msgstr "Uw wachtwoord staat op de standaard waarde. Verander het aub."
+
+#: classes/pref/prefs.php:241
+msgid "Old password"
+msgstr "Oud wachtwoord"
+
+#: classes/pref/prefs.php:244
+msgid "New password"
+msgstr "Nieuw wachtwoord"
+
+#: classes/pref/prefs.php:249
+msgid "Confirm password"
+msgstr "Bevestigen wachtwoord"
+
+#: classes/pref/prefs.php:259
+msgid "Change password"
+msgstr "Wijzig wachtwoord"
+
+#: classes/pref/prefs.php:265
+msgid "One time passwords / Authenticator"
+msgstr "eenmalig wachtwoord / Authenticator"
+
+#: classes/pref/prefs.php:294 classes/pref/prefs.php:345
+msgid "Enter your password"
+msgstr "Vul uw wachtwoord in"
+
+#: classes/pref/prefs.php:305
+msgid "Disable OTP"
+msgstr "EWW (Eenmalig wachtwoord) uitschakelen"
+
+#: classes/pref/prefs.php:311
+msgid ""
+"You will need a compatible Authenticator to use this. Changing your password "
+"would automatically disable OTP."
+msgstr ""
+"U heeft een compatibele Authenticator nodig om dit te gebruiken. Veranderen "
+"van wachtwoord schakelt automatisch EWW uit."
+
+#: classes/pref/prefs.php:313
+msgid "Scan the following code by the Authenticator application:"
+msgstr "Scan de volgende code met de Authenticator applicatie:"
+
+#: classes/pref/prefs.php:354
+msgid "I have scanned the code and would like to enable OTP"
+msgstr "Ik heb de code gescanned en wil nu EWW inschakelen"
+
+#: classes/pref/prefs.php:362
+msgid "Enable OTP"
+msgstr "Inschakelen EWW"
+
+#: classes/pref/prefs.php:493
+msgid "Customize"
+msgstr "Aanpassen"
+
+#: classes/pref/prefs.php:552
+msgid "Register"
+msgstr "Registreren"
+
+#: classes/pref/prefs.php:556
+msgid "Clear"
+msgstr "Wissen"
+
+#: classes/pref/prefs.php:562
+#, php-format
+msgid "Current server time: %s (UTC)"
+msgstr "Huidige servertijd: %s (UTC)"
+
+#: classes/pref/prefs.php:595
+msgid "Save configuration"
+msgstr "Configuratie opslaan"
+
+#: classes/pref/prefs.php:598
+msgid "Manage profiles"
+msgstr "Profielbeheer"
+
+#: classes/pref/prefs.php:601
+msgid "Reset to defaults"
+msgstr "Terugzetten naar de standaardwaarden"
+
+#: classes/pref/prefs.php:613
+msgid "Show additional preferences"
+msgstr "Toon additionele voorkeuren"
+
+#: classes/pref/prefs.php:625 classes/pref/prefs.php:627
+msgid "Plugins"
+msgstr "Plug-ins"
+
+#: classes/pref/prefs.php:655
+msgid "System plugins"
+msgstr "Systeem plug-ins"
+
+#: classes/pref/prefs.php:659 classes/pref/prefs.php:708
+msgid "Plugin"
+msgstr "Plug-in"
+
+#: classes/pref/prefs.php:660 classes/pref/prefs.php:709
+msgid "Description"
+msgstr "Omschrijving"
+
+#: classes/pref/prefs.php:661 classes/pref/prefs.php:710
+msgid "Version"
+msgstr "Versie"
+
+#: classes/pref/prefs.php:662 classes/pref/prefs.php:711
+msgid "Author"
+msgstr "Auteur"
+
+#: classes/pref/prefs.php:695 classes/pref/prefs.php:746
+msgid "Clear data"
+msgstr "Wis data"
+
+#: classes/pref/prefs.php:704
+msgid "User plugins"
+msgstr "Gebruiker's plug-ins"
+
+#: classes/pref/prefs.php:761
+msgid "Enable selected plugins"
+msgstr "Geselecteerd plug-ins inschakelen"
+
+#: classes/pref/prefs.php:816 classes/pref/prefs.php:834
+msgid "Incorrect password"
+msgstr "Onjuist wachtwoord"
+
+#: classes/pref/feeds.php:12
+msgid "Check to enable field"
+msgstr "Aanvinken om veld in te schakelen"
+
+#: classes/pref/feeds.php:58 classes/pref/feeds.php:175
+#: classes/pref/feeds.php:217 classes/pref/feeds.php:223
+#: classes/pref/feeds.php:248
+#, php-format
+msgid "(%d feeds)"
+msgstr "(%d feeds)"
+
+#: classes/pref/feeds.php:494
+msgid "Feed Title"
+msgstr "Feed titel"
+
+#: classes/pref/feeds.php:550 classes/pref/feeds.php:774
+msgid "Article purging:"
+msgstr "Artikelopschoning:"
+
+#: classes/pref/feeds.php:573
+msgid ""
+"<b>Hint:</b> you need to fill in your login information if your feed "
+"requires authentication, except for Twitter feeds."
+msgstr ""
+"<b>Hint:</b> U moet uw aanmeld informatie invullen als uw feed authenticatie "
+"vereist, behalve voor Twitter feeds."
+
+#: classes/pref/feeds.php:589 classes/pref/feeds.php:803
+msgid "Hide from Popular feeds"
+msgstr "Verbergen voor populaire feeds"
+
+#: classes/pref/feeds.php:601 classes/pref/feeds.php:809
+msgid "Include in e-mail digest"
+msgstr "toevoegen aan e-mail samenvatting"
+
+#: classes/pref/feeds.php:614 classes/pref/feeds.php:815
+msgid "Always display image attachments"
+msgstr "Altijd afbeeldingsbijlagen weergeven"
+
+#: classes/pref/feeds.php:627 classes/pref/feeds.php:823
+msgid "Do not embed images"
+msgstr "Afbeeldingen niet insluiten."
+
+#: classes/pref/feeds.php:640 classes/pref/feeds.php:831
+msgid "Cache images locally"
+msgstr "Afbeelding lokaal in cache plaatsen"
+
+#: classes/pref/feeds.php:652 classes/pref/feeds.php:837
+msgid "Mark updated articles as unread"
+msgstr "Markeer bijgewerkte artikelen als niet-gelezen"
+
+#: classes/pref/feeds.php:658
+msgid "Icon"
+msgstr "Icon"
+
+#: classes/pref/feeds.php:672
+msgid "Replace"
+msgstr "Vervangen"
+
+#: classes/pref/feeds.php:691
+msgid "Resubscribe to push updates"
+msgstr "Herabonneren voor push updates"
+
+#: classes/pref/feeds.php:698
+msgid "Resets PubSubHubbub subscription status for push-enabled feeds."
+msgstr "Herstelt PubSubHubbub abonnement status voor gepushte feeds."
+
+#: classes/pref/feeds.php:713
+msgid "Enable the options you wish to apply using checkboxes on the right:"
+msgstr "Inschakelen van toe te passen opties met de selectievakjes rechts:"
+
+#: classes/pref/feeds.php:1077 classes/pref/feeds.php:1130
+msgid "All done."
+msgstr "Alles gedaan."
+
+#: classes/pref/feeds.php:1185
+msgid "Feeds with errors"
+msgstr "Feeds met fouten"
+
+#: classes/pref/feeds.php:1205
+msgid "Inactive feeds"
+msgstr "Inactieve feeds"
+
+#: classes/pref/feeds.php:1242
+msgid "Edit selected feeds"
+msgstr "Bewerk geselecteerde feeds"
+
+#: classes/pref/feeds.php:1244 classes/pref/feeds.php:1258
+msgid "Reset sort order"
+msgstr "Herstel sorteervolgorde"
+
+#: classes/pref/feeds.php:1246 js/prefs.js:1785
+msgid "Batch subscribe"
+msgstr "Batchmatig abonneren"
+
+#: classes/pref/feeds.php:1251
+msgid "Categories"
+msgstr "Categorieën"
+
+#: classes/pref/feeds.php:1254
+msgid "Add category"
+msgstr "Categorie toevoegen"
+
+#: classes/pref/feeds.php:1256
+msgid "(Un)hide empty categories"
+msgstr "Verberg/Toon lege categorieën"
+
+#: classes/pref/feeds.php:1260
+msgid "Remove selected"
+msgstr "Verwijder geselecteerde"
+
+#: classes/pref/feeds.php:1274
+msgid "More actions..."
+msgstr "Meer acties…"
+
+#: classes/pref/feeds.php:1278
+msgid "Manual purge"
+msgstr "Handmatig opschonen"
+
+#: classes/pref/feeds.php:1282
+msgid "Clear feed data"
+msgstr "Wis feed data"
+
+#: classes/pref/feeds.php:1333
+msgid "OPML"
+msgstr "OPML"
+
+#: classes/pref/feeds.php:1335
+msgid ""
+"Using OPML you can export and import your feeds, filters, labels and Tiny "
+"Tiny RSS settings."
+msgstr ""
+"Met OPML kunt u feeds, filters, labels en Tiny Tiny RSS instellingen "
+"exporteren en importeren."
+
+#: classes/pref/feeds.php:1337
+msgid "Only main settings profile can be migrated using OPML."
+msgstr ""
+"Alleen het hoofdprofiel van de instellingen kan worden overgebracht met OPML."
+
+#: classes/pref/feeds.php:1350
+msgid "Import my OPML"
+msgstr "Importeer mijn OPML"
+
+#: classes/pref/feeds.php:1354
+msgid "Filename:"
+msgstr "Bestandsnaam:"
+
+#: classes/pref/feeds.php:1356
+msgid "Include settings"
+msgstr "toevoegingsinstellingen"
+
+#: classes/pref/feeds.php:1360
+msgid "Export OPML"
+msgstr "OPML exporteren"
+
+#: classes/pref/feeds.php:1364
+msgid ""
+"Your OPML can be published publicly and can be subscribed by anyone who "
+"knows the URL below."
+msgstr ""
+"Uw OPML kan openbaar worden gepubliceerd en er kan op worden geabonneerd "
+"door iedereen die de URL hieronder kent."
+
+#: classes/pref/feeds.php:1366
+msgid ""
+"Published OPML does not include your Tiny Tiny RSS settings, feeds that "
+"require authentication or feeds hidden from Popular feeds."
+msgstr ""
+"De gepubliceerde OPML bevatten niet uw Tiny Tiny RSS instellingen, feeds die "
+"authenticatie vereisen of feeds verborgen voor Populaire feeds."
+
+#: classes/pref/feeds.php:1369
+msgid "Display published OPML URL"
+msgstr "Gepubliceerde OPML URL weergeven"
+
+#: classes/pref/feeds.php:1379
+msgid "Firefox integration"
+msgstr "Firefox integratie"
+
+#: classes/pref/feeds.php:1381
+msgid ""
+"This Tiny Tiny RSS site can be used as a Firefox Feed Reader by clicking the "
+"link below."
+msgstr ""
+"Deze Tiny Tiny RSS site kan gebruikt worden als een Firefox Feed Reader door "
+"op de link hieronder te klikken."
+
+#: classes/pref/feeds.php:1388
+msgid "Click here to register this site as a feed reader."
+msgstr "Klik hier om deze site te registreren als een feed reader."
+
+#: classes/pref/feeds.php:1396
+msgid "Published & shared articles / Generated feeds"
+msgstr "Gepubliceerde & gedeelde artikelen / Gegenereerde feeds"
+
+#: classes/pref/feeds.php:1398
+msgid "Published articles and generated feeds"
+msgstr "Gepubliceerde artikelen en gegenereerde feeds"
+
+#: classes/pref/feeds.php:1400
+msgid ""
+"Published articles are exported as a public RSS feed and can be subscribed "
+"by anyone who knows the URL specified below."
+msgstr ""
+"Gepubliceerde artikelen worden geëxporteerd als publieke RSS-feed en er kan "
+"door iedereen die de URL hieronder kent op worden geabonneerd."
+
+#: classes/pref/feeds.php:1406
+msgid "Display URL"
+msgstr "Toon URL"
+
+#: classes/pref/feeds.php:1409
+msgid "Clear all generated URLs"
+msgstr "Wis alle gegenereerde URL's"
+
+#: classes/pref/feeds.php:1411
+msgid "Articles shared by URL"
+msgstr "Artikelen gedeeld met URL"
+
+#: classes/pref/feeds.php:1413
+msgid "You can disable all articles shared by unique URLs here."
+msgstr "U kunt alle artikelen gedeeld via unieke URL's hier uitschakelen."
+
+#: classes/pref/feeds.php:1416
+msgid "Unshare all articles"
+msgstr "Delen alle artikelen teniet doen"
+
+#: classes/pref/feeds.php:1494
+msgid ""
+"These feeds have not been updated with new content for 3 months (oldest "
+"first):"
+msgstr "Deze feeds hebben al 3 maanden geen nieuwe inhoud (oudste eerst):"
+
+#: classes/pref/feeds.php:1531 classes/pref/feeds.php:1600
+msgid "Click to edit feed"
+msgstr "Klik om feed te bewerken"
+
+#: classes/pref/feeds.php:1549 classes/pref/feeds.php:1620
+msgid "Unsubscribe from selected feeds"
+msgstr "Abonnement opzeggen voor geselecteerde feeds"
+
+#: classes/pref/feeds.php:1560
+msgid "These feeds have not been updated because of errors:"
+msgstr "Deze feeds zijn niet bijgewerkt omdat er fouten zijn opgetreden:"
+
+#: plugins/pocket/init.php:30
+msgid "Pocket"
+msgstr "Pocket"
+
+#: plugins/digest/digest_body.php:43
+msgid ""
+"Your browser doesn't support Javascript, which is required\n"
+"\t\t\tfor this application to function properly. Please check your\n"
+"\t\t\tbrowser settings."
+msgstr ""
+"Uw browser ondersteunt geen Javascript. Dit is vereist voor\n"
+"\t\t\thet goed functioneren van deze applicatie. Controleer aub uw\n"
+"\t\t\tbrowser instellingen."
+
+#: plugins/digest/digest_body.php:55
+msgid "Back to feeds"
+msgstr "Terug naar de feeds"
+
+#: plugins/digest/digest_body.php:60
+msgid "Hello,"
+msgstr "Hallo,"
+
+#: plugins/digest/digest_body.php:66
+msgid "Regular version"
+msgstr "Reguliere versie"
+
+#: plugins/close_button/init.php:24
+msgid "Close article"
+msgstr "Sluit artikel"
+
+#: plugins/nsfw/init.php:32 plugins/nsfw/init.php:43
+msgid "Not work safe (click to toggle)"
+msgstr "NVVW (Niet Veilig Voor Werk) (klik om in/uit te schakelen)"
+
+#: plugins/nsfw/init.php:53
+msgid "NSFW Plugin"
+msgstr "NVVW (Niet Veilig Voor Werk) Plug-in"
+
+#: plugins/nsfw/init.php:80
+msgid "Tags to consider NSFW (comma-separated)"
+msgstr "Tags te overwegen als NVVW (komma gescheiden)"
+
+#: plugins/nsfw/init.php:101
+msgid "Configuration saved."
+msgstr "Configuratie opgeslagen."
+
+#: plugins/pinterest/init.php:29
+msgid "Pinterest"
+msgstr "Pinterest"
+
+#: plugins/auth_internal/init.php:62
+msgid "Please enter your one time password:"
+msgstr "Geef aub uw eenmalig wachtwoord:"
+
+#: plugins/auth_internal/init.php:185
+msgid "Password has been changed."
+msgstr "Wachtwoord is veranderd."
+
+#: plugins/auth_internal/init.php:187
+msgid "Old password is incorrect."
+msgstr "Oud wachtwoord is onjuist."
+
+#: plugins/mailto/init.php:52 plugins/mailto/init.php:58
+#: plugins/mail/init.php:71 plugins/mail/init.php:77
+msgid "[Forwarded]"
+msgstr "[Doorgestuurd]"
+
+#: plugins/mailto/init.php:52 plugins/mail/init.php:71
+msgid "Multiple articles"
+msgstr "Meerdere artikelen"
+
+#: plugins/mailto/init.php:74
+msgid "Clicking the following link to invoke your mail client:"
+msgstr "Klikken op de volgende link om uw e-mail cliënt te starten:"
+
+#: plugins/mailto/init.php:78
+msgid "Forward selected article(s) by email."
+msgstr "Geselecteerde artikel(en) doorsturen per e-mail."
+
+#: plugins/mailto/init.php:81
+msgid ""
+"You should be able to edit the message before sending in your mail client."
+msgstr ""
+"U zou in staat moeten zijn het bericht te bewerken vóórdat u het verzendt "
+"met uw e-mail cliënt."
+
+#: plugins/mailto/init.php:86
+msgid "Close this dialog"
+msgstr "Sluit dit dialoogvenster"
+
+#: plugins/bookmarklets/init.php:22
+msgid "Bookmarklets"
+msgstr "Bookmarklets"
+
+#: plugins/bookmarklets/init.php:24
+msgid ""
+"Drag the link below to your browser toolbar, open the feed you're interested "
+"in in your browser and click on the link to subscribe to it."
+msgstr ""
+"Sleep de link hieronder naar uw browser's werkbalk, open de feed waar u "
+"geïnteresseerd in bent in uw browser en klik op de link om u er op te "
+"abonneren."
+
+#: plugins/bookmarklets/init.php:28
+#, php-format
+msgid "Subscribe to %s in Tiny Tiny RSS?"
+msgstr "Abonneren op %s in Tiny Tiny RSS?"
+
+#: plugins/bookmarklets/init.php:32
+msgid "Subscribe in Tiny Tiny RSS"
+msgstr "Abonneren in Tiny Tiny RSS"
+
+#: plugins/bookmarklets/init.php:34
+msgid "Use this bookmarklet to publish arbitrary pages using Tiny Tiny RSS"
+msgstr ""
+"Gebruik deze bookmarklet om arbitraire pagina's met Tiny Tiny RSS te "
+"publiceren"
+
+#: plugins/import_export/init.php:64
+msgid "Import and export"
+msgstr "Import en export"
+
+#: plugins/import_export/init.php:66
+msgid "Article archive"
+msgstr "Artikelarchief"
+
+#: plugins/import_export/init.php:68
+msgid ""
+"You can export and import your Starred and Archived articles for safekeeping "
+"or when migrating between tt-rss instances."
+msgstr ""
+"U kunt uw gearchiveerde of artikelen met ster exporteren en importeren om "
+"veilig te bewaren wanneer u migreert tussen tt-rss instanties."
+
+#: plugins/import_export/init.php:71
+msgid "Export my data"
+msgstr "Exporteer mijn data"
+
+#: plugins/import_export/init.php:87
+msgid "Import"
+msgstr "Importeren"
+
+#: plugins/import_export/init.php:221
+msgid "Could not import: incorrect schema version."
+msgstr "Kon niet importeren: onjuiste schema versie."
+
+#: plugins/import_export/init.php:226
+msgid "Could not import: unrecognized document format."
+msgstr "Kon niet importeren: onbekend documentformaat."
+
+#: plugins/import_export/init.php:385
+#, php-format
+msgid "Finished: %d articles processed, %d imported, %d feeds created."
+msgstr "Klaar: %d artikelen afgehandeld, %d geïmporteerd, %d feeds aangemaakt."
+
+#: plugins/import_export/init.php:391
+msgid "Could not load XML document."
+msgstr "Kon XML-document niet laden."
+
+#: plugins/import_export/init.php:403
+msgid "Prepare data"
+msgstr "Voorbereiden data"
+
+#: plugins/import_export/init.php:424
+#, php-format
+msgid ""
+"Could not upload file. You might need to adjust upload_max_filesize\n"
+"\t\t\t\tin PHP.ini (current value = %s)"
+msgstr ""
+"Kon bestand niet uploaden. U moet misschien de upload_max_filesize\n"
+"\t\t\t\tin PHP.ini aanpassen (huidige waarde = %s)"
+
+#: plugins/mail/init.php:92
+msgid "From:"
+msgstr "Van:"
+
+#: plugins/mail/init.php:101
+msgid "To:"
+msgstr "Naar:"
+
+#: plugins/mail/init.php:114
+msgid "Subject:"
+msgstr "Onderwerp:"
+
+#: plugins/mail/init.php:130
+msgid "Send e-mail"
+msgstr "Zend e-mail"
+
+#: plugins/note/init.php:28 plugins/note/note.js:11
+msgid "Edit article note"
+msgstr "Bewerk artikel notitie"
+
+#: plugins/example/init.php:38
+msgid "Example Pane"
+msgstr "Voorbeeldpaneel"
+
+#: plugins/example/init.php:69
+msgid "Sample value"
+msgstr "Voorbeeld waarde"
+
+#: plugins/example/init.php:75
+msgid "Set value"
+msgstr "Geef waarde"
+
+#: plugins/identica/init.php:29
+msgid "Share on identi.ca"
+msgstr "Deel op identi.ca"
+
+#: plugins/owncloud/init.php:35
+msgid "Owncloud"
+msgstr "Owncloud"
+
+#: plugins/owncloud/init.php:59
+msgid "Owncloud url"
+msgstr "Owncloud url"
+
+#: plugins/owncloud/init.php:74
+msgid "Bookmark on OwnCloud "
+msgstr "Bladwijzers op OwnCloud"
+
+#: plugins/instances/init.php:144
+msgid "Linked"
+msgstr "Gekoppeld"
+
+#: plugins/instances/init.php:295
+msgid "Link instance"
+msgstr "Link instantie"
+
+#: plugins/instances/init.php:307
+msgid ""
+"You can connect other instances of Tiny Tiny RSS to this one to share "
+"Popular feeds. Link to this instance of Tiny Tiny RSS by using this URL:"
+msgstr ""
+"U kunt deze instantie verbinden met andere instanties van Tiny Tiny RSS om "
+"Populaire feeds te delen. Verbindt deze instantie van Tiny Tiny RSS met "
+"deze URL:"
+
+#: plugins/instances/init.php:317
+msgid "Last connected"
+msgstr "Laatst verbonden"
+
+#: plugins/instances/init.php:318
+msgid "Status"
+msgstr "Status"
+
+#: plugins/instances/init.php:319
+msgid "Stored feeds"
+msgstr "Opgeslagen feeds"
+
+#: plugins/share/init.php:27
+msgid "Share by URL"
+msgstr "Deel via URL"
+
+#: plugins/share/init.php:49
+msgid "You can share this article by the following unique URL:"
+msgstr "U kunt dit artikel delen via de volgende unieke URL:"
+
+#: plugins/flattr/init.php:30
+msgid "Flattr this article."
+msgstr "Flattr dit artikel."
+
+#: plugins/googleplus/init.php:29
+msgid "Share on Google+"
+msgstr "Deel op Google+"
+
+#: plugins/updater/init.php:295 plugins/updater/init.php:307
+#: plugins/updater/updater.js:10
+msgid "Update Tiny Tiny RSS"
+msgstr "Tiny Tiny RSS bijwerken"
+
+#: plugins/updater/init.php:310
+msgid "Your Tiny Tiny RSS installation is up to date."
+msgstr "Uw Tiny Tiny RSS installatie is up-to-date."
+
+#: plugins/updater/init.php:320
+msgid ""
+"Do not close this dialog until updating is finished. Backup your tt-rss "
+"directory before continuing."
+msgstr ""
+"Sluit dit dialoogvenster niet voordat het bijwerken klaar is. Maak een back-"
+"up van uw tt-rss map alvorens verder te gaan."
+
+#: plugins/updater/init.php:323
+msgid "Ready to update."
+msgstr "Klaar voor bijwerken."
+
+#: plugins/updater/init.php:328
+msgid "Start update"
+msgstr "Start update"
+
+#: plugins/tweet/init.php:29
+msgid "Share on Twitter"
+msgstr "Deel op Twitter"
+
+#: js/feedlist.js:215
+msgid "New articles available in this feed (click to show)"
+msgstr "Nieuwe artikelen beschikbaar in deze feed (klik voor weergave)"
+
+#: js/feedlist.js:417 js/feedlist.js:432 plugins/digest/digest.js:25
+msgid "Mark all articles in %s as read?"
+msgstr "Markeer alle artikelen in %s als gelezen?"
+
+#: js/functions.js:91
+msgid ""
+"Are you sure to report this exception to tt-rss.org? The report will include "
+"your browser information. Your IP would be saved in the database."
+msgstr ""
+"Weet u zeker dat u deze uitzondering wilt rapporteren aan tt-rss.org? Het "
+"rapport zal uw browser informatie bevatten. Uw IP-adres zal bewaard worden "
+"in een database."
+
+#: js/functions.js:627
+msgid "Date syntax appears to be correct:"
+msgstr "Data syntax lijkt correct:"
+
+#: js/functions.js:630
+msgid "Date syntax is incorrect."
+msgstr "Data syntax is onjuist."
+
+#: js/functions.js:757
+msgid "Remove stored feed icon?"
+msgstr "Opgeslagen feed pictogram verwijderen?"
+
+#: js/functions.js:789
+msgid "Please select an image file to upload."
+msgstr "Selecteer aub een afbeeldingsbestand om te uploaden."
+
+#: js/functions.js:791
+msgid "Upload new icon for this feed?"
+msgstr "Nieuw pictogram voor deze feed uploaden?"
+
+#: js/functions.js:808
+msgid "Please enter label caption:"
+msgstr "Geeft een onderschrift voor label:"
+
+#: js/functions.js:813
+msgid "Can't create label: missing caption."
+msgstr "Kan geen label aanmaken: onderschrift ontbreekt"
+
+#: js/functions.js:856
+msgid "Subscribe to Feed"
+msgstr "Abonneren op feed"
+
+#: js/functions.js:883
+msgid "Subscribed to %s"
+msgstr "Geabonneerd op %s"
+
+#: js/functions.js:888
+msgid "Specified URL seems to be invalid."
+msgstr "Gespecificeerde URL lijkt ongeldig te zijn."
+
+#: js/functions.js:891
+msgid "Specified URL doesn't seem to contain any feeds."
+msgstr "Gespecificeerde URL lijkt geen feeds te bevatten."
+
+#: js/functions.js:944
+msgid "Couldn't download the specified URL: %s"
+msgstr "Kon de gespecificeerde URL: %s niet downloaden"
+
+#: js/functions.js:948
+msgid "You are already subscribed to this feed."
+msgstr "U bent al geabonneerd op deze feed."
+
+#: js/functions.js:1078
+msgid "Edit rule"
+msgstr "Bewerk regel"
+
+#: js/functions.js:1104
+msgid "Edit action"
+msgstr "Bewerk actie"
+
+#: js/functions.js:1141
+msgid "Create Filter"
+msgstr "Filter aanmaken"
+
+#: js/functions.js:1245
+msgid ""
+"Reset subscription? Tiny Tiny RSS will try to subscribe to the notification "
+"hub again on next feed update."
+msgstr ""
+"Abonnement opnieuw instellen? Tiny Tiny RSS zal proberen zich opnieuw op de "
+"notification hub te abonneren bij de volgende feed update."
+
+#: js/functions.js:1266 js/tt-rss.js:369
+msgid "Unsubscribe from %s?"
+msgstr "Abonnement opzeggen voor %s?"
+
+#: js/functions.js:1375
+msgid "Please enter category title:"
+msgstr "Vul titel van categorie in aub:"
+
+#: js/functions.js:1406
+msgid "Generate new syndication address for this feed?"
+msgstr "nieuw syndicatie-adres voor deze feed genereren?"
+
+#: js/functions.js:1597 js/tt-rss.js:350 js/tt-rss.js:729
+msgid "You can't edit this kind of feed."
+msgstr "U kunt dit type feed niet bewerken."
+
+#: js/functions.js:1612
+msgid "Edit Feed"
+msgstr "Bewerken feed"
+
+#: js/functions.js:1650
+msgid "More Feeds"
+msgstr "Meer feeds"
+
+#: js/functions.js:1711 js/functions.js:1821 js/prefs.js:397 js/prefs.js:427
+#: js/prefs.js:459 js/prefs.js:642 js/prefs.js:662 js/prefs.js:1210
+#: js/prefs.js:1355
+msgid "No feeds are selected."
+msgstr "Er zijn geen feeds geselecteerd."
+
+#: js/functions.js:1753
+msgid ""
+"Remove selected feeds from the archive? Feeds with stored articles will not "
+"be removed."
+msgstr ""
+"Geselecteerde feeds uit het archief verwijderen? Feeds met opgeslagen "
+"artikelen zullen niet worden verwijderd."
+
+#: js/functions.js:1792
+msgid "Feeds with update errors"
+msgstr "Feeds met update fouten"
+
+#: js/functions.js:1803 js/prefs.js:1192
+msgid "Remove selected feeds?"
+msgstr "Geselecteerde feeds verwijderen?"
+
+#: js/functions.js:1904
+msgid "Help"
+msgstr "Help"
+
+#: js/PrefFeedTree.js:47
+msgid "Edit category"
+msgstr "Bewerk categorie"
+
+#: js/PrefFeedTree.js:54
+msgid "Remove category"
+msgstr "Categorie verwijderen"
+
+#: js/PrefFilterTree.js:32
+msgid "Inverse"
+msgstr "Omgekeerd"
+
+#: js/prefs.js:55
+msgid "Please enter login:"
+msgstr "Geef loginID aub:"
+
+#: js/prefs.js:62
+msgid "Can't create user: no login specified."
+msgstr "Kan geen gebruiker aanmaken: geen loginID gespecificeerd."
+
+#: js/prefs.js:117
+msgid "Edit Filter"
+msgstr "Bewerk filter"
+
+#: js/prefs.js:164
+msgid "Remove filter?"
+msgstr "Filter verwijderen?"
+
+#: js/prefs.js:279
+msgid "Remove selected labels?"
+msgstr "Geselecteerde labels verwijderen?"
+
+#: js/prefs.js:295 js/prefs.js:1396
+msgid "No labels are selected."
+msgstr "Er zijn geen labels geselecteerd."
+
+#: js/prefs.js:309
+msgid ""
+"Remove selected users? Neither default admin nor your account will be "
+"removed."
+msgstr ""
+"Geselecteerde gebruikers verwijderen? Noch de standaard admin gebruiker, "
+"noch uw eigen account zal worden verwijderd."
+
+#: js/prefs.js:326 js/prefs.js:507 js/prefs.js:528 js/prefs.js:567
+msgid "No users are selected."
+msgstr "Er zijn geen gebruikers geselecteerd."
+
+#: js/prefs.js:344
+msgid "Remove selected filters?"
+msgstr "Geselecteerde filters verwijderen?"
+
+#: js/prefs.js:359 js/prefs.js:597 js/prefs.js:616
+msgid "No filters are selected."
+msgstr "Er zijn geen filters geselecteerd."
+
+#: js/prefs.js:378
+msgid "Unsubscribe from selected feeds?"
+msgstr "Abonnement opzeggen voor geselecteerde feeds?"
+
+#: js/prefs.js:412
+msgid "Please select only one feed."
+msgstr "Selecteer aub slecht één feed."
+
+#: js/prefs.js:418
+msgid "Erase all non-starred articles in selected feed?"
+msgstr "Alle artikelen zonder ster in deze feed wissen?"
+
+#: js/prefs.js:440
+msgid "How many days of articles to keep (0 - use default)?"
+msgstr "hoeveel dagen moeten artikelen worden bewaard (0 = gebruik Standaard)?"
+
+#: js/prefs.js:478
+msgid "Login field cannot be blank."
+msgstr "Het loginID veld kan niet leeg zijn."
+
+#: js/prefs.js:512 js/prefs.js:533 js/prefs.js:572
+msgid "Please select only one user."
+msgstr "Selecteer aub slechts één gebruiker."
+
+#: js/prefs.js:537
+msgid "Reset password of selected user?"
+msgstr "Wachtwoord van geselecteerde gebruiker opnieuw instellen?"
+
+#: js/prefs.js:602
+msgid "Please select only one filter."
+msgstr "Selecteer aub slecht één filter."
+
+#: js/prefs.js:620
+msgid "Combine selected filters?"
+msgstr "Geselecteerde filters combineren?"
+
+#: js/prefs.js:684
+msgid "Edit Multiple Feeds"
+msgstr "Bewerk meervoudige feeds"
+
+#: js/prefs.js:708
+msgid "Save changes to selected feeds?"
+msgstr "Veranderingen aan geselecteerde feeds opslaan?"
+
+#: js/prefs.js:797
+msgid "OPML Import"
+msgstr "OPML import"
+
+#: js/prefs.js:824
+msgid "Please choose an OPML file first."
+msgstr "kies eerst een OPML-bestand aub."
+
+#: js/prefs.js:980
+msgid "Reset to defaults?"
+msgstr "Terugzetten naar de standaardwaarden?"
+
+#: js/prefs.js:1099
+msgid ""
+"Remove category %s? Any nested feeds would be placed into Uncategorized."
+msgstr ""
+"Categorie %s verwijderen? elke genestelde feed zal in de rubriek "
+"'Ongecategoriseerd' worden geplaatst."
+
+#: js/prefs.js:1126
+msgid "Remove selected categories?"
+msgstr "Geselecteerde categorieën verwijderen?"
+
+#: js/prefs.js:1142
+msgid "No categories are selected."
+msgstr "Geen categorieën geselecteerd."
+
+#: js/prefs.js:1150
+msgid "Category title:"
+msgstr "Categorie titel:"
+
+#: js/prefs.js:1181
+msgid "Feeds without recent updates"
+msgstr "Feeds zonder recente updates"
+
+#: js/prefs.js:1230
+msgid "Replace current OPML publishing address with a new one?"
+msgstr "huidig OPML publicatieadres vervangen door een nieuwe?"
+
+#: js/prefs.js:1339
+msgid "Rescore articles in selected feeds?"
+msgstr "Artikelen in geselecteerde feeds opnieuw een score geven?"
+
+#: js/prefs.js:1362
+msgid "Rescore all articles? This operation may take a lot of time."
+msgstr ""
+"Alle artikelen opnieuw een score geven? Dit kan veel tjid in beslag nemen."
+
+#: js/prefs.js:1382
+msgid "Reset selected labels to default colors?"
+msgstr "Geselecteerd label naar de standaard kleur terugzetten?"
+
+#: js/prefs.js:1419
+msgid "Settings Profiles"
+msgstr "Instellingsprofielen"
+
+#: js/prefs.js:1428
+msgid ""
+"Remove selected profiles? Active and default profiles will not be removed."
+msgstr ""
+"Geselecteerde profielen verwijderen? Actieve en standaard profielen zullen "
+"niet worden verwijderd."
+
+#: js/prefs.js:1446
+msgid "No profiles are selected."
+msgstr "Er zijn geen profielen geselecteerd."
+
+#: js/prefs.js:1454 js/prefs.js:1507
+msgid "Activate selected profile?"
+msgstr "Geselecteerd profiel activeren?"
+
+#: js/prefs.js:1470 js/prefs.js:1523
+msgid "Please choose a profile to activate."
+msgstr "Kies een te activeren profiel aub."
+
+#: js/prefs.js:1531
+msgid "This will invalidate all previously generated feed URLs. Continue?"
+msgstr "Dit zal alle eerder gegenereerde feed-URL's ongeldig maken. Doorgaan?"
+
+#: js/prefs.js:1550
+msgid "This will invalidate all previously shared article URLs. Continue?"
+msgstr "Dit zal all eerder gedeelde artikel-URL's ongeldig maken. Doorgaan?"
+
+#: js/prefs.js:1648
+msgid "Label Editor"
+msgstr "Label editor"
+
+#: js/prefs.js:1711
+msgid ""
+"This will clear your stored authentication information for Twitter. Continue?"
+msgstr ""
+"Dit zal uw opgeslagen authenticatie informatie voor Twitter verwijderen. "
+"Doorgaan?"
+
+#: js/prefs.js:1791
+msgid "Subscribing to feeds..."
+msgstr "Abonneren op feeds..."
+
+#: js/prefs.js:1828
+msgid "Clear stored data for this plugin?"
+msgstr "Wis opgeslagen data voor deze plug-in?"
+
+#: js/tt-rss.js:120
+msgid "Mark all articles as read?"
+msgstr "Markeer alle artikelen als gelezen?"
+
+#: js/tt-rss.js:358
+msgid "You can't unsubscribe from the category."
+msgstr "U kunt het abonnementen niet opzeggen in deze categorie."
+
+#: js/tt-rss.js:363 js/tt-rss.js:513
+msgid "Please select some feed first."
+msgstr "Selecteer aub eerst een feed."
+
+#: js/tt-rss.js:508
+msgid "You can't rescore this kind of feed."
+msgstr "U kunt dit type feed geen andere score geven."
+
+#: js/tt-rss.js:518
+msgid "Rescore articles in %s?"
+msgstr "Artikelen in %s opnieuw een score geven?"
+
+#: js/tt-rss.js:688
+msgid "Please enable mail plugin first."
+msgstr "Eerst de e-mail plug-in inschakelen aub."
+
+#: js/tt-rss.js:850
+msgid "New version available!"
+msgstr "Nieuwe versie beschikbaar!"
+
+#: js/viewfeed.js:104
+msgid "Cancel search"
+msgstr "Zoeken annuleren"
+
+#: js/viewfeed.js:437 plugins/digest/digest.js:257
+#: plugins/digest/digest.js:694
+msgid "Unstar article"
+msgstr "Ster weghalen bij artikel"
+
+#: js/viewfeed.js:442 plugins/digest/digest.js:259
+#: plugins/digest/digest.js:698
+msgid "Star article"
+msgstr "Geef artikel een ster"
+
+#: js/viewfeed.js:475 plugins/digest/digest.js:262
+#: plugins/digest/digest.js:729
+msgid "Unpublish article"
+msgstr "Ongepubliceerd artikel"
+
+#: js/viewfeed.js:688 js/viewfeed.js:716 js/viewfeed.js:743 js/viewfeed.js:805
+#: js/viewfeed.js:837 js/viewfeed.js:974 js/viewfeed.js:1017
+#: js/viewfeed.js:1067 js/viewfeed.js:2005 plugins/mailto/init.js:7
+#: plugins/mail/mail.js:7
+msgid "No articles are selected."
+msgstr "Geen artikelen geselecteerd."
+
+#: js/viewfeed.js:954
+msgid "Mark all visible articles in %s as read?"
+msgstr "Markeer alle zichtbare artikelen in %s als gelezen?"
+
+#: js/viewfeed.js:982
+msgid "Delete %d selected articles in %s?"
+msgstr "Verwijder %d geselecteerde artikelen in %s?"
+
+#: js/viewfeed.js:984
+msgid "Delete %d selected articles?"
+msgstr "Verwijder %d geselecteerde artikelen?"
+
+#: js/viewfeed.js:1026
+msgid "Archive %d selected articles in %s?"
+msgstr "%d geselecteerd artikelen archiveren in %s?"
+
+#: js/viewfeed.js:1029
+msgid "Move %d archived articles back?"
+msgstr "%d gearchiveerde artikelen terugzetten?"
+
+#: js/viewfeed.js:1073
+msgid "Mark %d selected articles in %s as read?"
+msgstr "Markeer %d geselecteerde artikelen in %s als gelezen?"
+
+#: js/viewfeed.js:1097
+msgid "Edit article Tags"
+msgstr "Bewerken artikel tags"
+
+#: js/viewfeed.js:1283
+msgid "No article is selected."
+msgstr "Geen artikel geselecteerd."
+
+#: js/viewfeed.js:1318
+msgid "No articles found to mark"
+msgstr "Geen artikelen gevonden om te markeren"
+
+#: js/viewfeed.js:1320
+msgid "Mark %d article(s) as read?"
+msgstr "Markeer %d artikel(en) als gelezen?"
+
+#: js/viewfeed.js:1822
+msgid "Open original article"
+msgstr "Open origineel artikel"
+
+#: js/viewfeed.js:1892
+msgid "Remove label"
+msgstr "Label verwijderen"
+
+#: js/viewfeed.js:1916
+msgid "Playing..."
+msgstr "aan 't afspelen..."
+
+#: js/viewfeed.js:1917
+msgid "Click to pause"
+msgstr "Klik voor pauze"
+
+#: js/viewfeed.js:1974
+msgid "Please enter new score for selected articles:"
+msgstr "Geef aub een nieuwe score voor de geselecteerde artikelen:"
+
+#: js/viewfeed.js:2016
+msgid "Please enter new score for this article:"
+msgstr "Geef aub een nieuwe score voor dit artikel:"
+
+#: plugins/digest/digest.js:71
+msgid "Mark %d displayed articles as read?"
+msgstr "Markeer %d getoonde artikelen als gelezen?"
+
+#: plugins/digest/digest.js:289
+msgid "Error: unable to load article."
+msgstr "Fout: kan artikel niet laden."
+
+#: plugins/digest/digest.js:447
+msgid "Click to expand article."
+msgstr "Klik om artikel uit te klappen."
+
+#: plugins/digest/digest.js:518
+msgid "%d more..."
+msgstr "%d meer…"
+
+#: plugins/digest/digest.js:525
+msgid "No unread feeds."
+msgstr "Geen ongelezen feeds."
+
+#: plugins/digest/digest.js:632
+msgid "Load more..."
+msgstr "Laad meer..."
+
+#: plugins/mailto/init.js:21 plugins/mail/mail.js:21
+msgid "Forward article by email"
+msgstr "Artikel doorsturen per e-mail"
+
+#: plugins/import_export/import_export.js:13
+msgid "Export Data"
+msgstr "Data exporteren"
+
+#: plugins/import_export/import_export.js:40
+msgid ""
+"Finished, exported %d articles. You can download the data <a "
+"class='visibleLink' href='%u'>here</a>."
+msgstr ""
+"Klaar met exporteren van %d artikelen. U kunt de data <a class='visibleLink' "
+"href='%u'>hier</a> downloaden. "
+
+#: plugins/import_export/import_export.js:93
+msgid "Data Import"
+msgstr "Data import"
+
+#: plugins/import_export/import_export.js:112
+msgid "Please choose the file first."
+msgstr "Kies het bestand eerst aub."
+
+#: plugins/instances/instances.js:10
+msgid "Link Instance"
+msgstr "Link Instantie"
+
+#: plugins/instances/instances.js:73
+msgid "Edit Instance"
+msgstr "Bewerk instantie"
+
+#: plugins/instances/instances.js:122
+msgid "Remove selected instances?"
+msgstr "Geselecteerde instanties verwijderen?"
+
+#: plugins/instances/instances.js:139 plugins/instances/instances.js:151
+msgid "No instances are selected."
+msgstr "Er zijn geen instanties geselecteerd."
+
+#: plugins/instances/instances.js:156
+msgid "Please select only one instance."
+msgstr "Selecteer aub slechts één instantie."
+
+#: plugins/share/share.js:10
+msgid "Share article by URL"
+msgstr "Deel artikel via URL"
+
+#: plugins/updater/updater.js:58
+msgid ""
+"Live updating is considered experimental. Backup your tt-rss directory "
+"before continuing. Please type 'yes' to continue."
+msgstr ""
+"Live updaten is nog experimenteel. Maak een back-up van uw tt-rss map "
+"alvorens door te gaan. Typ 'ja' om door te gaan. "
diff --git a/opml.php b/opml.php
index 623913631..b8c9fb6c5 100644
--- a/opml.php
+++ b/opml.php
@@ -16,7 +16,7 @@
$op = $_REQUEST['op'];
if ($op == "publish"){
- $key = db_escape_string($_REQUEST["key"]);
+ $key = db_escape_string($link, $_REQUEST["key"]);
$result = db_query($link, "SELECT owner_uid
FROM ttrss_access_keys WHERE
diff --git a/plugins/auth_internal/init.php b/plugins/auth_internal/init.php
index cf6c13780..e910e52aa 100644
--- a/plugins/auth_internal/init.php
+++ b/plugins/auth_internal/init.php
@@ -22,8 +22,8 @@ class Auth_Internal extends Plugin implements IAuthModule {
$pwd_hash1 = encrypt_password($password);
$pwd_hash2 = encrypt_password($password, $login);
- $login = db_escape_string($login);
- $otp = db_escape_string($_REQUEST["otp"]);
+ $login = db_escape_string($this->link, $login);
+ $otp = db_escape_string($this->link, $_REQUEST["otp"]);
if (get_schema_version($this->link) > 96) {
if (!defined('AUTH_DISABLE_OTP') || !AUTH_DISABLE_OTP) {
@@ -140,7 +140,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
}
function check_password($owner_uid, $password) {
- $owner_uid = db_escape_string($owner_uid);
+ $owner_uid = db_escape_string($this->link, $owner_uid);
$result = db_query($this->link, "SELECT salt,login FROM ttrss_users WHERE
id = '$owner_uid'");
@@ -169,7 +169,7 @@ class Auth_Internal extends Plugin implements IAuthModule {
}
function change_password($owner_uid, $old_password, $new_password) {
- $owner_uid = db_escape_string($owner_uid);
+ $owner_uid = db_escape_string($this->link, $owner_uid);
if ($this->check_password($owner_uid, $old_password)) {
diff --git a/plugins/auth_remote/init.php b/plugins/auth_remote/init.php
index 7c8d835f8..7e4638fb2 100644
--- a/plugins/auth_remote/init.php
+++ b/plugins/auth_remote/init.php
@@ -21,7 +21,7 @@ class Auth_Remote extends Plugin implements IAuthModule {
}
function get_login_by_ssl_certificate() {
- $cert_serial = db_escape_string(get_ssl_certificate_id());
+ $cert_serial = db_escape_string($this->link, get_ssl_certificate_id());
if ($cert_serial) {
$result = db_query($this->link, "SELECT login FROM ttrss_user_prefs, ttrss_users
@@ -29,7 +29,7 @@ class Auth_Remote extends Plugin implements IAuthModule {
owner_uid = ttrss_users.id");
if (db_num_rows($result) != 0) {
- return db_escape_string(db_fetch_result($result, 0, "login"));
+ return db_escape_string($this->link, db_fetch_result($result, 0, "login"));
}
}
@@ -38,10 +38,10 @@ class Auth_Remote extends Plugin implements IAuthModule {
function authenticate($login, $password) {
- $try_login = db_escape_string($_SERVER["REMOTE_USER"]);
+ $try_login = db_escape_string($this->link, $_SERVER["REMOTE_USER"]);
// php-cgi
- if (!$try_login) $try_login = db_escape_string($_SERVER["REDIRECT_REMOTE_USER"]);
+ if (!$try_login) $try_login = db_escape_string($this->link, $_SERVER["REDIRECT_REMOTE_USER"]);
if (!$try_login) $try_login = $this->get_login_by_ssl_certificate();
# if (!$try_login) $try_login = "test_qqq";
@@ -60,14 +60,14 @@ class Auth_Remote extends Plugin implements IAuthModule {
// update user name
$fullname = $_SERVER['HTTP_USER_NAME'] ? $_SERVER['HTTP_USER_NAME'] : $_SERVER['AUTHENTICATE_CN'];
if ($fullname){
- $fullname = db_escape_string($fullname);
+ $fullname = db_escape_string($this->link, $fullname);
db_query($this->link, "UPDATE ttrss_users SET full_name = '$fullname' WHERE id = " .
$user_id);
}
// update user mail
$email = $_SERVER['HTTP_USER_MAIL'] ? $_SERVER['HTTP_USER_MAIL'] : $_SERVER['AUTHENTICATE_MAIL'];
if ($email){
- $email = db_escape_string($email);
+ $email = db_escape_string($this->link, $email);
db_query($this->link, "UPDATE ttrss_users SET email = '$email' WHERE id = " .
$user_id);
}
diff --git a/plugins/digest/init.php b/plugins/digest/init.php
index 2feabe3b4..2fc98b0ec 100644
--- a/plugins/digest/init.php
+++ b/plugins/digest/init.php
@@ -47,7 +47,7 @@ class Digest extends Plugin implements IHandler {
}
function digestgetcontents() {
- $article_id = db_escape_string($_REQUEST['article_id']);
+ $article_id = db_escape_string($this->link, $_REQUEST['article_id']);
$result = db_query($this->link, "SELECT content,title,link,marked,published
FROM ttrss_entries, ttrss_user_entries
@@ -67,9 +67,9 @@ class Digest extends Plugin implements IHandler {
}
function digestupdate() {
- $feed_id = db_escape_string($_REQUEST['feed_id']);
- $offset = db_escape_string($_REQUEST['offset']);
- $seq = db_escape_string($_REQUEST['seq']);
+ $feed_id = db_escape_string($this->link, $_REQUEST['feed_id']);
+ $offset = db_escape_string($this->link, $_REQUEST['offset']);
+ $seq = db_escape_string($this->link, $_REQUEST['seq']);
if (!$feed_id) $feed_id = -4;
if (!$offset) $offset = 0;
diff --git a/plugins/embed_original/init.php b/plugins/embed_original/init.php
index b28b2f8ee..0e0eb9603 100644
--- a/plugins/embed_original/init.php
+++ b/plugins/embed_original/init.php
@@ -36,7 +36,7 @@ class Embed_Original extends Plugin {
}
function getUrl() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT link
FROM ttrss_entries, ttrss_user_entries
diff --git a/plugins/example/init.php b/plugins/example/init.php
index f3788ae8c..926a57da8 100644
--- a/plugins/example/init.php
+++ b/plugins/example/init.php
@@ -21,7 +21,7 @@ class Example extends Plugin {
}
function save() {
- $example_value = db_escape_string($_POST["example_value"]);
+ $example_value = db_escape_string($this->link, $_POST["example_value"]);
$this->host->set($this, "example", $example_value);
diff --git a/plugins/googleplus/init.php b/plugins/googleplus/init.php
index 7ae6d1456..6045d2df6 100644
--- a/plugins/googleplus/init.php
+++ b/plugins/googleplus/init.php
@@ -32,7 +32,7 @@ class GooglePlus extends Plugin {
}
function getInfo() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT title, link
FROM ttrss_entries, ttrss_user_entries
diff --git a/plugins/googlereaderkeys/init.php b/plugins/googlereaderkeys/init.php
index 92bf626e6..afdc58ec7 100644
--- a/plugins/googlereaderkeys/init.php
+++ b/plugins/googlereaderkeys/init.php
@@ -25,6 +25,7 @@ class GoogleReaderKeys extends Plugin {
$hotkeys["*p"] = "prev_feed";
$hotkeys["v"] = "open_in_new_window";
$hotkeys["r"] = "feed_refresh";
+ $hotkeys["m"] = "toggle_unread";
$hotkeys["(32)|space"] = "next_article";
$hotkeys["(38)|up"] = "article_scroll_up";
$hotkeys["(40)|down"] = "article_scroll_down";
diff --git a/plugins/identica/init.php b/plugins/identica/init.php
index c9aa4118e..8e0ad4b9a 100644
--- a/plugins/identica/init.php
+++ b/plugins/identica/init.php
@@ -32,7 +32,7 @@ class Identica extends Plugin {
}
function getInfo() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT title, link
FROM ttrss_entries, ttrss_user_entries
diff --git a/plugins/import_export/init.php b/plugins/import_export/init.php
index de21dbf32..61b9a439f 100644
--- a/plugins/import_export/init.php
+++ b/plugins/import_export/init.php
@@ -49,7 +49,7 @@ class Import_Export extends Plugin implements IHandler {
}
function save() {
- $example_value = db_escape_string($_POST["example_value"]);
+ $example_value = db_escape_string($this->link, $_POST["example_value"]);
echo "Value set to $example_value (not really)";
}
@@ -122,7 +122,7 @@ class Import_Export extends Plugin implements IHandler {
}
function exportrun() {
- $offset = (int) db_escape_string($_REQUEST['offset']);
+ $offset = (int) db_escape_string($this->link, $_REQUEST['offset']);
$exported = 0;
$limit = 250;
@@ -238,7 +238,7 @@ class Import_Export extends Plugin implements IHandler {
foreach ($article_node->childNodes as $child) {
if ($child->nodeName != 'label_cache')
- $article[$child->nodeName] = db_escape_string($child->nodeValue);
+ $article[$child->nodeName] = db_escape_string($this->link, $child->nodeValue);
else
$article[$child->nodeName] = $child->nodeValue;
}
@@ -346,7 +346,7 @@ class Import_Export extends Plugin implements IHandler {
$score = (int) $article['score'];
$tag_cache = $article['tag_cache'];
- $label_cache = db_escape_string($article['label_cache']);
+ $label_cache = db_escape_string($this->link, $article['label_cache']);
$note = $article['note'];
//print "Importing " . $article['title'] . "<br/>";
diff --git a/plugins/instances/init.php b/plugins/instances/init.php
index 6c0f89e1c..6e8d43e9b 100644
--- a/plugins/instances/init.php
+++ b/plugins/instances/init.php
@@ -92,10 +92,10 @@ class Instances extends Plugin implements IHandler {
WHERE instance_id = '$id'");
foreach ($feeds['feeds'] as $feed) {
- $feed_url = db_escape_string($feed['feed_url']);
- $title = db_escape_string($feed['title']);
- $subscribers = db_escape_string($feed['subscribers']);
- $site_url = db_escape_string($feed['site_url']);
+ $feed_url = db_escape_string($this->link, $feed['feed_url']);
+ $title = db_escape_string($this->link, $feed['title']);
+ $subscribers = db_escape_string($this->link, $feed['subscribers']);
+ $site_url = db_escape_string($this->link, $feed['site_url']);
db_query($link, "INSERT INTO ttrss_linked_feeds
(feed_url, site_url, title, subscribers, instance_id, created, updated)
@@ -167,16 +167,16 @@ class Instances extends Plugin implements IHandler {
}
function remove() {
- $ids = db_escape_string($_REQUEST['ids']);
+ $ids = db_escape_string($this->link, $_REQUEST['ids']);
db_query($this->link, "DELETE FROM ttrss_linked_instances WHERE
id IN ($ids)");
}
function add() {
- $id = db_escape_string($_REQUEST["id"]);
- $access_url = db_escape_string($_REQUEST["access_url"]);
- $access_key = db_escape_string($_REQUEST["access_key"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
+ $access_url = db_escape_string($this->link, $_REQUEST["access_url"]);
+ $access_key = db_escape_string($this->link, $_REQUEST["access_key"]);
db_query($this->link, "BEGIN");
@@ -195,7 +195,7 @@ class Instances extends Plugin implements IHandler {
}
function edit() {
- $id = db_escape_string($_REQUEST["id"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
$result = db_query($this->link, "SELECT * FROM ttrss_linked_instances WHERE
id = '$id'");
@@ -253,9 +253,9 @@ class Instances extends Plugin implements IHandler {
}
function editSave() {
- $id = db_escape_string($_REQUEST["id"]);
- $access_url = db_escape_string($_REQUEST["access_url"]);
- $access_key = db_escape_string($_REQUEST["access_key"]);
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
+ $access_url = db_escape_string($this->link, $_REQUEST["access_url"]);
+ $access_key = db_escape_string($this->link, $_REQUEST["access_key"]);
db_query($this->link, "UPDATE ttrss_linked_instances SET
access_key = '$access_key', access_url = '$access_url',
@@ -277,7 +277,7 @@ class Instances extends Plugin implements IHandler {
print "<div id=\"pref-instance-toolbar\" dojoType=\"dijit.Toolbar\">";
- $sort = db_escape_string($_REQUEST["sort"]);
+ $sort = db_escape_string($this->link, $_REQUEST["sort"]);
if (!$sort || $sort == "undefined") {
$sort = "access_url";
@@ -364,7 +364,7 @@ class Instances extends Plugin implements IHandler {
function fbexport() {
- $access_key = db_escape_string($_POST["key"]);
+ $access_key = db_escape_string($this->link, $_POST["key"]);
// TODO: rate limit checking using last_connected
$result = db_query($this->link, "SELECT id FROM ttrss_linked_instances
diff --git a/plugins/mail/init.php b/plugins/mail/init.php
index 9d92781d7..49de96afd 100644
--- a/plugins/mail/init.php
+++ b/plugins/mail/init.php
@@ -30,7 +30,7 @@ class Mail extends Plugin {
function emailArticle() {
- $param = db_escape_string($_REQUEST['param']);
+ $param = db_escape_string($this->link, $_REQUEST['param']);
$secretkey = sha1(uniqid(rand(), true));
@@ -164,7 +164,7 @@ class Mail extends Plugin {
if (!$rc) {
$reply['error'] = $mail->ErrorInfo;
} else {
- save_email_address($this->link, db_escape_string($destination));
+ save_email_address($this->link, db_escape_string($this->link, $destination));
$reply['message'] = "UPDATE_COUNTERS";
}
@@ -176,7 +176,7 @@ class Mail extends Plugin {
}
function completeEmails() {
- $search = db_escape_string($_REQUEST["search"]);
+ $search = db_escape_string($this->link, $_REQUEST["search"]);
print "<ul>";
diff --git a/plugins/mailto/init.php b/plugins/mailto/init.php
index 8d175ae1c..e140bbea7 100644
--- a/plugins/mailto/init.php
+++ b/plugins/mailto/init.php
@@ -30,7 +30,7 @@ class MailTo extends Plugin {
function emailArticle() {
- $param = db_escape_string($_REQUEST['param']);
+ $param = db_escape_string($this->link, $_REQUEST['param']);
require_once "lib/MiniTemplator.class.php";
diff --git a/plugins/note/init.php b/plugins/note/init.php
index 83db94248..7e8cfb57f 100644
--- a/plugins/note/init.php
+++ b/plugins/note/init.php
@@ -29,7 +29,7 @@ class Note extends Plugin {
}
function edit() {
- $param = db_escape_string($_REQUEST['param']);
+ $param = db_escape_string($this->link, $_REQUEST['param']);
$result = db_query($this->link, "SELECT note FROM ttrss_user_entries WHERE
ref_id = '$param' AND owner_uid = " . $_SESSION['uid']);
@@ -58,8 +58,8 @@ class Note extends Plugin {
}
function setNote() {
- $id = db_escape_string($_REQUEST["id"]);
- $note = trim(strip_tags(db_escape_string($_REQUEST["note"])));
+ $id = db_escape_string($this->link, $_REQUEST["id"]);
+ $note = trim(strip_tags(db_escape_string($this->link, $_REQUEST["note"])));
db_query($this->link, "UPDATE ttrss_user_entries SET note = '$note'
WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
diff --git a/plugins/nsfw/init.php b/plugins/nsfw/init.php
index 9aadde4dd..247d56a1e 100644
--- a/plugins/nsfw/init.php
+++ b/plugins/nsfw/init.php
@@ -91,7 +91,7 @@ class NSFW extends Plugin {
}
function save() {
- $tags = explode(",", db_escape_string($_POST["tags"]));
+ $tags = explode(",", db_escape_string($this->link, $_POST["tags"]));
$tags = array_map("trim", $tags);
$tags = array_map("mb_strtolower", $tags);
$tags = join(", ", $tags);
diff --git a/plugins/owncloud/init.php b/plugins/owncloud/init.php
index 48377e9d9..5d215b386 100644
--- a/plugins/owncloud/init.php
+++ b/plugins/owncloud/init.php
@@ -20,7 +20,7 @@ class OwnCloud extends Plugin {
}
function save() {
- $owncloud_url = db_escape_string($_POST["owncloud_url"]);
+ $owncloud_url = db_escape_string($this->link, $_POST["owncloud_url"]);
$this->host->set($this, "owncloud", $owncloud_url);
echo "Value set to $owncloud_url";
}
@@ -75,7 +75,7 @@ class OwnCloud extends Plugin {
}
function getOwnCloud() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT title, link
FROM ttrss_entries, ttrss_user_entries
diff --git a/plugins/pinterest/init.php b/plugins/pinterest/init.php
index 96c730e84..11fe64eb5 100644
--- a/plugins/pinterest/init.php
+++ b/plugins/pinterest/init.php
@@ -32,7 +32,7 @@ class Pinterest extends Plugin {
}
function getInfo() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT title, link
FROM ttrss_entries, ttrss_user_entries
diff --git a/plugins/pocket/init.php b/plugins/pocket/init.php
index 688a6258d..e96d08001 100644
--- a/plugins/pocket/init.php
+++ b/plugins/pocket/init.php
@@ -33,7 +33,7 @@ class Pocket extends Plugin {
}
function getInfo() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT title, link
FROM ttrss_entries, ttrss_user_entries
diff --git a/plugins/share/init.php b/plugins/share/init.php
index f52d2a4fa..a3dc35224 100644
--- a/plugins/share/init.php
+++ b/plugins/share/init.php
@@ -28,7 +28,7 @@ class Share extends Plugin {
}
function shareArticle() {
- $param = db_escape_string($_REQUEST['param']);
+ $param = db_escape_string($this->link, $_REQUEST['param']);
$result = db_query($this->link, "SELECT uuid, ref_id FROM ttrss_user_entries WHERE int_id = '$param'
AND owner_uid = " . $_SESSION['uid']);
@@ -41,7 +41,7 @@ class Share extends Plugin {
$ref_id = db_fetch_result($result, 0, "ref_id");
if (!$uuid) {
- $uuid = db_escape_string(sha1(uniqid(rand(), true)));
+ $uuid = db_escape_string($this->link, sha1(uniqid(rand(), true)));
db_query($this->link, "UPDATE ttrss_user_entries SET uuid = '$uuid' WHERE int_id = '$param'
AND owner_uid = " . $_SESSION['uid']);
}
diff --git a/plugins/tweet/init.php b/plugins/tweet/init.php
index 2d20c7187..bbcf7836c 100644
--- a/plugins/tweet/init.php
+++ b/plugins/tweet/init.php
@@ -32,7 +32,7 @@ class Tweet extends Plugin {
}
function getInfo() {
- $id = db_escape_string($_REQUEST['id']);
+ $id = db_escape_string($this->link, $_REQUEST['id']);
$result = db_query($this->link, "SELECT title, link
FROM ttrss_entries, ttrss_user_entries
diff --git a/prefs.php b/prefs.php
index 0715f26e4..0d27a6e81 100644
--- a/prefs.php
+++ b/prefs.php
@@ -23,7 +23,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
- <title>Tiny Tiny RSS : <?php echo __("Preferences") ?></title>
+ <title><?php echo get_site_title() ?> : <?php echo __("Preferences") ?></title>
<?php echo stylesheet_tag("lib/dijit/themes/claro/claro.css"); ?>
<?php echo stylesheet_tag("tt-rss.css"); ?>
diff --git a/register.php b/register.php
index 8c9869a52..ce1b1ed51 100644
--- a/register.php
+++ b/register.php
@@ -27,7 +27,7 @@
print '<?xml version="1.0" encoding="utf-8"?>';
print "<feed xmlns=\"http://www.w3.org/2005/Atom\">
<id>".htmlspecialchars(SELF_URL_PATH . "/register.php")."</id>
- <title>Tiny Tiny RSS registration slots</title>
+ <title><?php echo get_site_title() ?> registration slots</title>
<link rel=\"self\" href=\"".htmlspecialchars(SELF_URL_PATH . "/register.php?format=feed")."\"/>
<link rel=\"alternate\" href=\"".htmlspecialchars(SELF_URL_PATH)."\"/>";
@@ -74,7 +74,7 @@
if ($action == "check") {
header("Content-Type: application/xml");
- $login = trim(db_escape_string($_REQUEST['login']));
+ $login = trim(db_escape_string($link, $_REQUEST['login']));
$result = db_query($link, "SELECT id FROM ttrss_users WHERE
LOWER(login) = LOWER('$login')");
@@ -242,9 +242,9 @@
<?php } else if ($action == "do_register") { ?>
<?php
- $login = mb_strtolower(trim(db_escape_string($_REQUEST["login"])));
- $email = trim(db_escape_string($_REQUEST["email"]));
- $test = trim(db_escape_string($_REQUEST["turing_test"]));
+ $login = mb_strtolower(trim(db_escape_string($link, $_REQUEST["login"])));
+ $email = trim(db_escape_string($link, $_REQUEST["email"]));
+ $test = trim(db_escape_string($link, $_REQUEST["turing_test"]));
if (!$login || !$email || !$test) {
print_error(__("Your registration information is incomplete."));
diff --git a/templates/resetpass_template.txt b/templates/resetpass_template.txt
index dd96f2c92..c262f9a77 100644
--- a/templates/resetpass_template.txt
+++ b/templates/resetpass_template.txt
@@ -1,7 +1,7 @@
<!-- $BeginBlock message -->
Hello, ${LOGIN}.
-Your password for this Tiny Tiny RSS installation has been reset by an administrator.
+Your password for this Tiny Tiny RSS installation has been reset.
Your new password is ${NEWPASS}, please remember it for later reference.
diff --git a/tt-rss.css b/tt-rss.css
index 9fc52b209..ff7134f11 100644
--- a/tt-rss.css
+++ b/tt-rss.css
@@ -1198,3 +1198,8 @@ div.postContent p {
div.postContent iframe {
min-width : 50%;
}
+
+div.postHeader span.author {
+ color : gray;
+ font-size : 11px;
+}
diff --git a/utility.css b/utility.css
index de0042a77..b520a49bd 100644
--- a/utility.css
+++ b/utility.css
@@ -182,3 +182,25 @@ div.autocomplete ul li {
cursor : pointer;
}
+fieldset {
+ border-width : 0px;
+ padding : 0px 0px 5px 0px;
+ margin : 0px;
+}
+
+fieldset input {
+ font-family : sans-serif;
+ font-size : medium;
+ border-spacing : 2px;
+ border : 1px solid #b5bcc7;
+ padding : 2px;
+}
+
+fieldset label {
+ width : 120px;
+ margin-right : 20px;
+ display : inline-block;
+ text-align : right;
+ color : gray;
+}
+