<?php
define('EXPECTED_CONFIG_VERSION', 26);
- define('SCHEMA_VERSION', 122);
+ define('SCHEMA_VERSION', 123);
define('LABEL_BASE_INDEX', -1024);
define('PLUGIN_FEED_BASE_INDEX', -128);
"pt_BR" => "Portuguese/Brazil",
"zh_CN" => "Simplified Chinese",
"sv_SE" => "Svenska",
- "fi_FI" => "Suomi");
+ "fi_FI" => "Suomi",
+ "tr_TR" => "Türkçe");
return $tr;
}
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_REFERER, $url);
+ if (!ini_get("safe_mode") && !ini_get("open_basedir")) {
+ curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null");
+ }
+
+ if (defined('_CURL_HTTP_PROXY')) {
+ curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY);
+ }
+
if ($post_query) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_query);
$_SERVER["REDIRECT_SSL_CLIENT_V_END"] .
$_SERVER["REDIRECT_SSL_CLIENT_S_DN"]);
}
+ if ($_SERVER["SSL_CLIENT_M_SERIAL"]) {
+ return sha1($_SERVER["SSL_CLIENT_M_SERIAL"] .
+ $_SERVER["SSL_CLIENT_V_START"] .
+ $_SERVER["SSL_CLIENT_V_END"] .
+ $_SERVER["SSL_CLIENT_S_DN"]);
+ }
return "";
}
$_SESSION["name"] = db_fetch_result($result, 0, "login");
$_SESSION["access_level"] = db_fetch_result($result, 0, "access_level");
- $_SESSION["csrf_token"] = sha1(uniqid(rand(), true));
+ $_SESSION["csrf_token"] = uniqid(rand(), true);
db_query("UPDATE ttrss_users SET last_login = NOW() WHERE id = " .
$_SESSION["uid"]);
$_SESSION["auth_module"] = false;
if (!$_SESSION["csrf_token"]) {
- $_SESSION["csrf_token"] = sha1(uniqid(rand(), true));
+ $_SESSION["csrf_token"] = uniqid(rand(), true);
}
$_SESSION["ip_address"] = $_SERVER["REMOTE_ADDR"];
}
function load_user_plugins($owner_uid) {
- if ($owner_uid) {
+ if ($owner_uid && SCHEMA_VERSION >= 100) {
$plugins = get_pref("_ENABLED_PLUGINS", $owner_uid);
PluginHost::getInstance()->load($plugins, PluginHost::KIND_USER, $owner_uid);
if (SINGLE_USER_MODE) {
@session_start();
authenticate_user("admin", null);
+ startup_gettext();
load_user_plugins($_SESSION["uid"]);
} else {
if (!validate_session()) $_SESSION["uid"] = false;
db_query("UPDATE ttrss_user_entries
SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*)
- FROM ttrss_user_labels2 WHERE article_id = ref_id) > 0
- AND unread = true AND $date_qpart AND owner_uid = $owner_uid");
+ FROM ttrss_user_labels2, ttrss_entries WHERE article_id = ref_id AND id = ref_id AND $date_qpart) > 0
+ AND unread = true AND owner_uid = $owner_uid");
}
} else if ($feed > 0) {
$intl = get_pref("FRESH_ARTICLE_MAX_AGE", $owner_uid);
if (DB_TYPE == "pgsql") {
- $match_part .= " AND updated > NOW() - INTERVAL '$intl hour' ";
+ $match_part .= " AND date_entered > NOW() - INTERVAL '$intl hour' ";
} else {
- $match_part .= " AND updated > DATE_SUB(NOW(), INTERVAL $intl HOUR) ";
+ $match_part .= " AND date_entered > DATE_SUB(NOW(), INTERVAL $intl HOUR) ";
}
$need_entries = true;
$from_where = "ttrss_entries.id = ttrss_user_entries.ref_id AND";
} else {
$from_qpart = "ttrss_user_entries";
+ $from_where = "";
}
$query = "SELECT count(int_id) AS unread
$search_query_part = "";
- $keywords = explode(" ", $search);
+ $keywords = str_getcsv($search, " ");
$query_keywords = array();
$search_words = array();
}
- $content_query_part = "content, content AS content_preview, ";
+ $content_query_part = "content, ";
if (is_numeric($feed)) {
if ($site_url) {
- if ($entry->hasAttribute('href'))
+ if ($entry->hasAttribute('href')) {
$entry->setAttribute('href',
rewrite_relative_url($site_url, $entry->getAttribute('href')));
+ $entry->setAttribute('rel', 'noreferrer');
+ }
+
if ($entry->hasAttribute('src')) {
$src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
header("Content-Type: text/html");
$rv['content'] .= "<html><head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>
- <title>Tiny Tiny RSS - ".$line["title"]."</title>
- <link rel=\"stylesheet\" type=\"text/css\" href=\"css/tt-rss.css\">
+ <title>Tiny Tiny RSS - ".$line["title"]."</title>".
+ stylesheet_tag("css/tt-rss.css").
+ stylesheet_tag("css/zoom.css").
+ stylesheet_tag("css/dijit.css")."
+
+ <link rel=\"shortcut icon\" type=\"image/png\" href=\"images/favicon.png\">
+ <link rel=\"icon\" type=\"image/png\" sizes=\"72x72\" href=\"images/favicon-72px.png\">
+
<script type=\"text/javascript\">
function openSelectedAttachment(elem) {
try {
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(uniqid(base_convert(rand(), 10, 36)));
$result = db_query("INSERT INTO ttrss_access_keys
(access_key, feed_id, is_cat, owner_uid)
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+ if (defined('_CURL_HTTP_PROXY')) {
+ curl_setopt($curl, CURLOPT_PROXY, _CURL_HTTP_PROXY);
+ }
+
if ((OPENSSL_VERSION_NUMBER >= 0x0090808f) && (OPENSSL_VERSION_NUMBER < 0x10000000)) {
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
}
function stylesheet_tag($filename) {
$timestamp = filemtime($filename);
- echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"$filename?$timestamp\"/>\n";
+ return "<link rel=\"stylesheet\" type=\"text/css\" href=\"$filename?$timestamp\"/>\n";
}
function javascript_tag($filename) {
if ($query) $timestamp .= "&$query";
- echo "<script type=\"text/javascript\" charset=\"utf-8\" src=\"$filename?$timestamp\"></script>\n";
+ return "<script type=\"text/javascript\" charset=\"utf-8\" src=\"$filename?$timestamp\"></script>\n";
}
function calculate_dep_timestamp() {