]> git.wh0rd.org - tt-rss.git/blobdiff - include/functions2.php
pass several image files used in notify messages to frontend as base64 to prevent...
[tt-rss.git] / include / functions2.php
index 6b6f5aa560b630d393b28f42c44e738fad2dcf78..56676b1655cb56f461a6cdbe39c1a779cecbf844 100644 (file)
 
                $params['simple_update'] = defined('SIMPLE_UPDATE_MODE') && SIMPLE_UPDATE_MODE;
 
+               $params["icon_alert"] = base64_img("images/alert.png");
+               $params["icon_information"] = base64_img("images/information.png");
+               $params["icon_cross"] = base64_img("images/cross.png");
+               $params["icon_indicator_white"] = base64_img("images/indicator_white.gif");
+
                return $params;
        }
 
                $doc->loadHTML($charset_hack . $res);
                $xpath = new DOMXPath($doc);
 
-               $entries = $xpath->query('(//a[@href]|//img[@src])');
+               $entries = $xpath->query('(//a[@href]|//img[@src]|//video/source[@src])');
 
                $ttrss_uses_https = parse_url(get_self_url_prefix(), PHP_URL_SCHEME) === 'https';
 
                                        $entry->setAttribute('href',
                                                rewrite_relative_url($site_url, $entry->getAttribute('href')));
 
-                                       $entry->setAttribute('rel', 'noreferrer');
+                                       $entry->setAttribute('rel', 'noopener noreferrer');
                                }
 
                                if ($entry->hasAttribute('src')) {
                                        $src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
 
-                                       $cached_filename = CACHE_DIR . '/images/' . sha1($src) . '.png';
+                                       $extension = $entry->tagName == 'source' ? '.mp4' : '.png';
+                                       $cached_filename = CACHE_DIR . '/images/' . sha1($src) . $extension;
 
                                        if (file_exists($cached_filename)) {
-                                               $src = SELF_URL_PATH . '/public.php?op=cached_image&hash=' . sha1($src);
+                                               $src = SELF_URL_PATH . '/public.php?op=cached_image&hash=' . sha1($src) . $extension;
 
                                                if ($entry->hasAttribute('srcset')) {
                                                        $entry->removeAttribute('srcset');
 
                                        $entry->setAttribute('src', $src);
                                }
-
+                               
                                if ($entry->nodeName == 'img') {
+
                                        if ($entry->hasAttribute('src')) {
                                                $is_https_url = parse_url($entry->getAttribute('src'), PHP_URL_SCHEME) === 'https';
 
                        }
                }
 
-               $allowed_elements = array('a', 'address', 'audio', 'article', 'aside',
+               $allowed_elements = array('a', 'address', 'acronym', 'audio', 'article', 'aside',
                        'b', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br',
                        'caption', 'cite', 'center', 'code', 'col', 'colgroup',
-                       'data', 'dd', 'del', 'details', 'description', 'div', 'dl', 'font',
+                       'data', 'dd', 'del', 'details', 'description', 'dfn', 'div', 'dl', 'font',
                        'dt', 'em', 'footer', 'figure', 'figcaption',
                        'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'html', 'i',
                        'img', 'ins', 'kbd', 'li', 'main', 'mark', 'nav', 'noscript',
                        num_comments,
                        tag_cache,
                        author,
+                       guid,
                        orig_feed_id,
                        note
                        FROM ttrss_entries,ttrss_user_entries
                                $line = $p->hook_render_article($line);
                        }
 
-                       $num_comments = $line["num_comments"];
+                       $num_comments = (int) $line["num_comments"];
                        $entry_comments = "";
 
                        if ($num_comments > 0) {
 
                                if (!$ctype) $ctype = __("unknown type");
 
-                               $filename = substr($url, strrpos($url, "/")+1);
+                               //$filename = substr($url, strrpos($url, "/")+1);
+                               $filename = basename($url);
 
                                $player = format_inline_player($url, $ctype);
 
 #                              $entry .= " <a target=\"_blank\" href=\"" . htmlspecialchars($url) . "\">" .
 #                                      $filename . " (" . $ctype . ")" . "</a>";
 
-                               $entry = "<div onclick=\"window.open('".htmlspecialchars($url)."')\"
+                               $entry = "<div onclick=\"openUrlPopup('".htmlspecialchars($url)."')\"
                                        dojoType=\"dijit.MenuItem\">$filename ($ctype)</div>";
 
                                array_push($entries_html, $entry);
 
                        foreach ($entries as $entry) {
                                if ($entry["title"])
-                                       $title = "&mdash; " . truncate_string($entry["title"], 30);
+                                       $title = " &mdash; " . truncate_string($entry["title"], 30);
                                else
                                        $title = "";
 
-                               $rv .= "<div onclick='window.open(\"".htmlspecialchars($entry["url"])."\")'
-                                       dojoType=\"dijit.MenuItem\">".htmlspecialchars($entry["filename"])."$title</div>";
+                               if ($entry["filename"])
+                                       $filename = truncate_middle(htmlspecialchars($entry["filename"]), 60);
+                               else
+                                       $filename = "";
+
+                               $rv .= "<div onclick='openUrlPopup(\"".htmlspecialchars($entry["url"])."\")'
+                                       dojoType=\"dijit.MenuItem\">".$filename . $title."</div>";
 
                        };
 
        }
 
        function theme_valid($theme) {
-               if ($theme == "default.css" || $theme == "night.css") return true; // needed for array_filter
+               $bundled_themes = [ "default.php", "night.css", "compact.css" ];
+               
+               if (in_array($theme, $bundled_themes)) return true;
+
                $file = "themes/" . basename($theme);
 
                if (!file_exists($file)) $file = "themes.local/" . basename($theme);
 
                return $errors[$code];
        }
+
+       function base64_img($filename) {
+               if (file_exists($filename)) {
+                        $ext = pathinfo($filename, PATHINFO_EXTENSION);
+
+                       return "data:image/$ext;base64," . base64_encode(file_get_contents($filename));
+               } else {
+                       return "";
+               }
+       }
 ?>