summaryrefslogtreecommitdiff
path: root/include/functions.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/functions.php')
-rwxr-xr-xinclude/functions.php110
1 files changed, 57 insertions, 53 deletions
diff --git a/include/functions.php b/include/functions.php
index a1aeb7135..5ebd4e0ff 100755
--- a/include/functions.php
+++ b/include/functions.php
@@ -1,6 +1,6 @@
<?php
define('EXPECTED_CONFIG_VERSION', 26);
- define('SCHEMA_VERSION', 135);
+ define('SCHEMA_VERSION', 137);
define('LABEL_BASE_INDEX', -1024);
define('PLUGIN_FEED_BASE_INDEX', -128);
@@ -141,7 +141,6 @@
}
_bindtextdomain("messages", "locale");
-
_textdomain("messages");
_bind_textdomain_codeset("messages", "UTF-8");
}
@@ -738,21 +737,28 @@
}
}
- function make_password($length = 8) {
-
+ function make_password($length = 12) {
$password = "";
- $possible = "0123456789abcdfghjkmnpqrstvwxyzABCDFGHJKMNPQRSTVWXYZ";
+ $possible = "0123456789abcdfghjkmnpqrstvwxyzABCDFGHJKMNPQRSTVWXYZ*%+^";
- $i = 0;
+ $i = 0;
while ($i < $length) {
- $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
+
+ try {
+ $idx = function_exists("random_int") ? random_int(0, strlen($possible) - 1) : mt_rand(0, strlen($possible) - 1);
+ } catch (Exception $e) {
+ $idx = mt_rand(0, strlen($possible) - 1);
+ }
+
+ $char = substr($possible, $idx, 1);
if (!strstr($password, $char)) {
$password .= $char;
$i++;
}
}
+
return $password;
}
@@ -1216,40 +1222,36 @@
function get_hotkeys_map() {
$hotkeys = array(
- // "navigation" => array(
"k" => "next_feed",
"j" => "prev_feed",
"n" => "next_article",
"p" => "prev_article",
- "(38)|up" => "prev_article",
- "(40)|down" => "next_article",
- // "^(38)|Ctrl-up" => "prev_article_noscroll",
- // "^(40)|Ctrl-down" => "next_article_noscroll",
- "(191)|/" => "search_dialog",
- // "article" => array(
+ "(38)|Up" => "prev_article",
+ "(40)|Down" => "next_article",
+ "*(38)|Shift+Up" => "article_scroll_up",
+ "*(40)|Shift+Down" => "article_scroll_down",
+ "^(38)|Ctrl+Up" => "prev_article_noscroll",
+ "^(40)|Ctrl+Down" => "next_article_noscroll",
+ "/" => "search_dialog",
"s" => "toggle_mark",
- "*s" => "toggle_publ",
+ "S" => "toggle_publ",
"u" => "toggle_unread",
- "*t" => "edit_tags",
+ "T" => "edit_tags",
"o" => "open_in_new_window",
"c p" => "catchup_below",
"c n" => "catchup_above",
- "*n" => "article_scroll_down",
- "*p" => "article_scroll_up",
- "*(38)|Shift+up" => "article_scroll_up",
- "*(40)|Shift+down" => "article_scroll_down",
- "a *w" => "toggle_widescreen",
+ "N" => "article_scroll_down",
+ "P" => "article_scroll_up",
+ "a W" => "toggle_widescreen",
"a e" => "toggle_embed_original",
"e" => "email_article",
"a q" => "close_article",
- // "article_selection" => array(
"a a" => "select_all",
"a u" => "select_unread",
- "a *u" => "select_marked",
+ "a U" => "select_marked",
"a p" => "select_published",
"a i" => "select_invert",
"a n" => "select_none",
- // "feed" => array(
"f r" => "feed_refresh",
"f a" => "feed_unhide_read",
"f s" => "feed_subscribe",
@@ -1257,31 +1259,26 @@
"f q" => "feed_catchup",
"f x" => "feed_reverse",
"f g" => "feed_toggle_vgroup",
- "f *d" => "feed_debug_update",
- "f *g" => "feed_debug_viewfeed",
- "f *c" => "toggle_combined_mode",
+ "f D" => "feed_debug_update",
+ "f G" => "feed_debug_viewfeed",
+ "f C" => "toggle_combined_mode",
"f c" => "toggle_cdm_expanded",
- "*q" => "catchup_all",
+ "Q" => "catchup_all",
"x" => "cat_toggle_collapse",
- // "goto" => array(
"g a" => "goto_all",
"g f" => "goto_fresh",
"g s" => "goto_marked",
"g p" => "goto_published",
"g t" => "goto_tagcloud",
- "g *p" => "goto_prefs",
- // "other" => array(
+ "g P" => "goto_prefs",
"r" => "select_article_cursor",
"c l" => "create_label",
"c f" => "create_filter",
"c s" => "collapse_sidebar",
- "a *n" => "toggle_night_mode",
- "^(191)|Ctrl+/" => "help_dialog",
+ "a N" => "toggle_night_mode",
+ "?" => "help_dialog",
);
- $hotkeys["^(38)|Ctrl-up"] = "prev_article_noscroll";
- $hotkeys["^(40)|Ctrl-down"] = "next_article_noscroll";
-
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HOTKEY_MAP) as $plugin) {
$hotkeys = $plugin->hook_hotkey_map($hotkeys);
}
@@ -1531,7 +1528,7 @@
$doc->loadHTML($charset_hack . $res);
$xpath = new DOMXPath($doc);
- $entries = $xpath->query('(//img[@src]|//video[@poster]|//video/source[@src]|//audio/source[@src])');
+ $entries = $xpath->query('(//img[@src]|//picture/source[@src]|//video[@poster]|//video/source[@src]|//audio/source[@src])');
$need_saving = false;
@@ -1548,6 +1545,8 @@
// this is strictly cosmetic
if ($entry->tagName == 'img') {
$suffix = ".png";
+ } else if ($entry->parentNode && $entry->parentNode->tagName == "picture") {
+ $suffix = ".png";
} else if ($entry->parentNode && $entry->parentNode->tagName == "video") {
$suffix = ".mp4";
} else if ($entry->parentNode && $entry->parentNode->tagName == "audio") {
@@ -1595,7 +1594,7 @@
$rewrite_base_url = $site_url ? $site_url : get_self_url_prefix();
- $entries = $xpath->query('(//a[@href]|//img[@src]|//video/source[@src]|//audio/source[@src])');
+ $entries = $xpath->query('(//a[@href]|//img[@src]|//video/source[@src]|//audio/source[@src]|//picture/source[@src])');
foreach ($entries as $entry) {
@@ -1689,7 +1688,7 @@
'dt', 'em', 'footer', 'figure', 'figcaption',
'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'html', 'i',
'img', 'ins', 'kbd', 'li', 'main', 'mark', 'nav', 'noscript',
- 'ol', 'p', 'pre', 'q', 'ruby', 'rp', 'rt', 's', 'samp', 'section',
+ 'ol', 'p', 'picture', 'pre', 'q', 'ruby', 'rp', 'rt', 's', 'samp', 'section',
'small', 'source', 'span', 'strike', 'strong', 'sub', 'summary',
'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'time',
'tr', 'track', 'tt', 'u', 'ul', 'var', 'wbr', 'video', 'xml:namespace' );
@@ -1981,7 +1980,7 @@
return true;
}
- function add_feed_category($feed_cat, $parent_cat_id = false) {
+ function add_feed_category($feed_cat, $parent_cat_id = false, $order_id = 0) {
if (!$feed_cat) return false;
@@ -2004,9 +2003,9 @@
if (!$sth->fetch()) {
- $sth = $pdo->prepare("INSERT INTO ttrss_feed_categories (owner_uid,title,parent_cat)
- VALUES (?, ?, ?)");
- $sth->execute([$_SESSION['uid'], $feed_cat, $parent_cat_id]);
+ $sth = $pdo->prepare("INSERT INTO ttrss_feed_categories (owner_uid,title,parent_cat,order_id)
+ VALUES (?, ?, ?, ?)");
+ $sth->execute([$_SESSION['uid'], $feed_cat, $parent_cat_id, (int)$order_id]);
if (!$tr_in_progress) $pdo->commit();
@@ -2403,18 +2402,23 @@
return __((parseInt(n) > 1) ? msg2 : msg1);
}';
- $l10n = _get_reader();
+ global $text_domains;
- for ($i = 0; $i < $l10n->total; $i++) {
- $orig = $l10n->get_original_string($i);
- if(strpos($orig, "\000") !== FALSE) { // Plural forms
- $key = explode(chr(0), $orig);
- print T_js_decl($key[0], _ngettext($key[0], $key[1], 1)); // Singular
- print T_js_decl($key[1], _ngettext($key[0], $key[1], 2)); // Plural
- } else {
- $translation = __($orig);
- print T_js_decl($orig, $translation);
+ foreach (array_keys($text_domains) as $domain) {
+ $l10n = _get_reader($domain);
+
+ for ($i = 0; $i < $l10n->total; $i++) {
+ $orig = $l10n->get_original_string($i);
+ if(strpos($orig, "\000") !== FALSE) { // Plural forms
+ $key = explode(chr(0), $orig);
+ print T_js_decl($key[0], _ngettext($key[0], $key[1], 1)); // Singular
+ print T_js_decl($key[1], _ngettext($key[0], $key[1], 2)); // Plural
+ } else {
+ $translation = _dgettext($domain,$orig);
+ print T_js_decl($orig, $translation);
+ }
}
+
}
}