"hu_HU" => "Magyar (Hungarian)",
"it_IT" => "Italiano",
"ja_JP" => "日本語 (Japanese)",
+ "ko_KR" => "한국어 (Korean)",
"lv_LV" => "Latviešu",
"nb_NO" => "Norwegian bokmål",
"nl_NL" => "Dutch",
$fp = fopen(LOCK_DIRECTORY . "/$filename", "w");
if ($fp && flock($fp, LOCK_EX | LOCK_NB)) {
+ $stat_h = fstat($fp);
+ $stat_f = stat(LOCK_DIRECTORY . "/$filename");
+
+ if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
+ if ($stat_h["ino"] != $stat_f["ino"] ||
+ $stat_h["dev"] != $stat_f["dev"]) {
+
+ return false;
+ }
+ }
+
if (function_exists('posix_getpid')) {
fwrite($fp, posix_getpid() . "\n");
}
$date_qpart = "date_entered < DATE_SUB(NOW(), INTERVAL 1 WEEK) ";
}
break;
- case "2weeks":
+ case "2week":
if (DB_TYPE == "pgsql") {
$date_qpart = "date_entered < NOW() - INTERVAL '2 week' ";
} else {
return "images/archive.png";
break;
case -1:
- return "images/mark_set.svg";
+ return "images/star.png";
break;
case -2:
- return "images/pub_set.svg";
+ return "images/feed.png";
break;
case -3:
return "images/fresh.png";
break;
case -4:
- return "images/tag.png";
+ return "images/folder.png";
break;
case -6:
- return "images/recently_read.png";
+ return "images/time.png";
break;
default:
if ($id < LABEL_BASE_INDEX) {
$params["max_feed_id"] = (int) $max_feed_id;
$params["num_feeds"] = (int) $num_feeds;
- $params["collapsed_feedlist"] = (int) get_pref("_COLLAPSED_FEEDLIST");
$params["hotkeys"] = get_hotkeys_map();
$params["csrf_token"] = $_SESSION["csrf_token"];
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'));
function format_warning($msg, $id = "") {
global $link;
return "<div class=\"warning\" id=\"$id\">
- <span><img src=\"images/sign_excl.svg\"></span><span>$msg</span></div>";
+ <span><img src=\"images/alert.png\"></span><span>$msg</span></div>";
}
function format_notice($msg, $id = "") {
global $link;
return "<div class=\"notice\" id=\"$id\">
- <span><img src=\"images/sign_info.svg\"></span><span>$msg</span></div>";
+ <span><img src=\"images/information.png\"></span><span>$msg</span></div>";
}
function format_error($msg, $id = "") {
global $link;
return "<div class=\"error\" id=\"$id\">
- <span><img src=\"images/sign_excl.svg\"></span><span>$msg</span></div>";
+ <span><img src=\"images/alert.png\"></span><span>$msg</span></div>";
}
function print_notice($msg) {
if ($_SESSION["hasAudio"] && (strpos($ctype, "ogg") !== false ||
$_SESSION["hasMp3"])) {
- $entry .= "<audio controls>
+ $entry .= "<audio preload=\"none\" controls>
<source type=\"$ctype\" src=\"$url\"></source>
</audio>";
* @return string Absolute URL
*/
function rewrite_relative_url($url, $rel_url) {
- if (strpos($rel_url, "magnet:") === 0) {
+ if (strpos($rel_url, ":") !== false) {
return $rel_url;
} else if (strpos($rel_url, "://") !== false) {
return $rel_url;
$reg_qpart = "REGEXP";
foreach ($filter["rules"] AS $rule) {
+ $rule['reg_exp'] = str_replace('/', '\/', $rule["reg_exp"]);
$regexp_valid = preg_match('/' . $rule['reg_exp'] . '/',
$rule['reg_exp']) !== FALSE;