]> git.mjollnir.org Git - s9y.git/commitdiff
Upgrade remoteRSS plugin
authorgarvinhicking <garvinhicking>
Thu, 14 Sep 2006 08:45:13 +0000 (08:45 +0000)
committergarvinhicking <garvinhicking>
Thu, 14 Sep 2006 08:45:13 +0000 (08:45 +0000)
include/functions_images.inc.php
plugins/serendipity_plugin_remoterss/UTF-8/lang_de.inc.php
plugins/serendipity_plugin_remoterss/lang_de.inc.php
plugins/serendipity_plugin_remoterss/lang_en.inc.php
plugins/serendipity_plugin_remoterss/serendipity_plugin_remoterss.php
serendipity_admin_image_selector.php

index 221afd5b5ed8973356d440900d063a4db9d897a0..35a30a7c2b241489f2654bf811edef6fcde2d8f8 100644 (file)
@@ -256,8 +256,10 @@ function serendipity_fetchImageFromDatabase($id, $mode = 'read') {
         $cond['distinct'] = '';
     }
 
-    serendipity_ACL_SQL($cond, false, 'directory', $mode);
-
+    if ($mode != 'discard') {        
+        serendipity_ACL_SQL($cond, false, 'directory', $mode);    
+    }
+    
     $rs = serendipity_db_query("SELECT {$cond['distinct']} i.id, i.name, i.extension, i.mime, i.size, i.dimensions_width, i.dimensions_height, i.date, i.thumbnail_name, i.authorid, i.path, i.hotlink, i.realname
                                   FROM {$serendipity['dbPrefix']}images AS i
                                        {$cond['joins']}
index d94bce4c906790e2b6ee6be5ded0a57e52ce7321..6431e3a1ed5598c9738c37f3ba0870bd7ec95434 100644 (file)
@@ -1,21 +1,28 @@
 <?php # $Id$
 
-        @define('PLUGIN_REMOTERSS_TITLE', 'Fremder RSS/OPML-Blogroll Feed');
-        @define('PLUGIN_REMOTERSS_BLAHBLAH', 'Zeigt Einträge eines externen RSS/OPML-Feeds an (z.B. Blogroll)');
-        @define('PLUGIN_REMOTERSS_NUMBER', 'Anzahl der Einträge');
-        @define('PLUGIN_REMOTERSS_NUMBER_BLAHBLAH', 'Wieviele Einträge sollen angezeigt werden? (Standard: alle im Feed)');
-        @define('PLUGIN_REMOTERSS_SIDEBARTITLE', 'Feed-Titel');
-        @define('PLUGIN_REMOTERSS_SIDEBARTITLE_BLAHBLAH', 'Titel der Feed-Anzeige in der Sidebar des Blogs');
-        @define('PLUGIN_REMOTERSS_RSSURI', 'RSS/OPML-URI');
-        @define('PLUGIN_REMOTERSS_RSSURI_BLAHBLAH', 'URI des RSS/OPML-Feeds, der angezeigt werden soll');
-        @define('PLUGIN_REMOTERSS_RSSTARGET', 'Link-Target');
-        @define('PLUGIN_REMOTERSS_RSSTARGET_BLAHBLAH', 'Target des Links zu einem der angezeigten RSS-Einträge (Standard: _blank)');
-        @define('PLUGIN_REMOTERSS_NOURI', 'Kein RSS/OPML-Feed gewählt');
-        @define('PLUGIN_REMOTERSS_CACHETIME', 'Wann wird der Feed aktualisiert?');
-        @define('PLUGIN_REMOTERSS_CACHETIME_BLAHBLAH', 'Die Inhalte des fremden Feeds werden gecached. Sobald der Cache älter ist als X Sekunden wird er aktualisiert (Standard: 3 Stunden)');
-        @define('PLUGIN_REMOTERSS_FEEDTYPE', 'Typ des Feeds');
-        @define('PLUGIN_REMOTERSS_FEEDTYPE_BLAHBLAH', 'Wählen Sie das Format des einzubindenden Feeds');
-        @define('PLUGIN_REMOTERSS_BULLETIMG', 'Bullet Image');
-        @define('PLUGIN_REMOTERSS_BULLETIMG_BLAHBLAH', 'Image to display before each headline.');
-        @define('PLUGIN_REMOTERSS_DISPLAYDATE', 'Display Date');
-        @define('PLUGIN_REMOTERSS_DISPLAYDATE_BLAHBLAH', 'Display the date below the headline?');
+@define('PLUGIN_REMOTERSS_TITLE', 'Fremder RSS/OPML-Blogroll Feed');
+@define('PLUGIN_REMOTERSS_BLAHBLAH', 'Zeigt Einträge eines externen RSS/OPML-Feeds an (z.B. Blogroll)');
+@define('PLUGIN_REMOTERSS_NUMBER', 'Anzahl der Einträge');
+@define('PLUGIN_REMOTERSS_NUMBER_BLAHBLAH', 'Wieviele Einträge sollen angezeigt werden? (Standard: alle im Feed)');
+@define('PLUGIN_REMOTERSS_SIDEBARTITLE', 'Feed-Titel');
+@define('PLUGIN_REMOTERSS_SIDEBARTITLE_BLAHBLAH', 'Titel der Feed-Anzeige in der Sidebar des Blogs');
+@define('PLUGIN_REMOTERSS_RSSURI', 'RSS/OPML-URI');
+@define('PLUGIN_REMOTERSS_RSSURI_BLAHBLAH', 'URI des RSS/OPML-Feeds, der angezeigt werden soll');
+@define('PLUGIN_REMOTERSS_RSSTARGET', 'Link-Target');
+@define('PLUGIN_REMOTERSS_RSSTARGET_BLAHBLAH', 'Target des Links zu einem der angezeigten RSS-Einträge (Standard: _blank)');
+@define('PLUGIN_REMOTERSS_NOURI', 'Kein RSS/OPML-Feed gewählt');
+@define('PLUGIN_REMOTERSS_CACHETIME', 'Wann wird der Feed aktualisiert?');
+@define('PLUGIN_REMOTERSS_CACHETIME_BLAHBLAH', 'Die Inhalte des fremden Feeds werden gecached. Sobald der Cache älter ist als X Sekunden wird er aktualisiert (Standard: 3 Stunden)');
+@define('PLUGIN_REMOTERSS_FEEDTYPE', 'Typ des Feeds');
+@define('PLUGIN_REMOTERSS_FEEDTYPE_BLAHBLAH', 'Wählen Sie das Format des einzubindenden Feeds');
+@define('PLUGIN_REMOTERSS_BULLETIMG', 'Bullet Image');
+@define('PLUGIN_REMOTERSS_BULLETIMG_BLAHBLAH', 'Image to display before each headline.');
+@define('PLUGIN_REMOTERSS_DISPLAYDATE', 'Display Date');
+@define('PLUGIN_REMOTERSS_DISPLAYDATE_BLAHBLAH', 'Display the date below the headline?');
+
+@define('PLUGIN_REMOTERSS_RSSLINK', 'RSS-Link verwenden?');
+@define('PLUGIN_REMOTERSS_RSSLINK_DESC', 'Soll ein Hyperlink auf den im RSS-Feed angegebenen Link gesetzt werden?');
+@define('PLUGIN_REMOTERSS_RSSFIELD', 'RSS Zielelement');
+@define('PLUGIN_REMOTERSS_RSSFIELD_DESC', 'Welches Element des RSS-Feeds soll dargestellt werden? (z.B.: "title", "content:encoded", "description", ...)');
+@define('PLUGIN_REMOTERSS_RSSESCAPE', 'HTML-Ausgabe escapen?');
+@define('PLUGIN_REMOTERSS_RSSESCAPE_DESC', 'Wenn aktiviert, wird HTML in RSS-Feeds maskiert und "sicher" ausgegeben. Wenn diese Option deaktiviert ist, wird HTML in einem Feed interpretiert - dies stellt eine potentielle Gefahr dar, wenn der eingebundene Feed nicht ihrer ist!');
index 4c6fd41bc04284423319b633aa9c3655b9987aa8..2be801fada6eab6083d76e1ea680ca0f2166e6c7 100644 (file)
@@ -1,21 +1,28 @@
 <?php # $Id$
 
-        @define('PLUGIN_REMOTERSS_TITLE', 'Fremder RSS/OPML-Blogroll Feed');
-        @define('PLUGIN_REMOTERSS_BLAHBLAH', 'Zeigt Einträge eines externen RSS/OPML-Feeds an (z.B. Blogroll)');
-        @define('PLUGIN_REMOTERSS_NUMBER', 'Anzahl der Einträge');
-        @define('PLUGIN_REMOTERSS_NUMBER_BLAHBLAH', 'Wieviele Einträge sollen angezeigt werden? (Standard: alle im Feed)');
-        @define('PLUGIN_REMOTERSS_SIDEBARTITLE', 'Feed-Titel');
-        @define('PLUGIN_REMOTERSS_SIDEBARTITLE_BLAHBLAH', 'Titel der Feed-Anzeige in der Sidebar des Blogs');
-        @define('PLUGIN_REMOTERSS_RSSURI', 'RSS/OPML-URI');
-        @define('PLUGIN_REMOTERSS_RSSURI_BLAHBLAH', 'URI des RSS/OPML-Feeds, der angezeigt werden soll');
-        @define('PLUGIN_REMOTERSS_RSSTARGET', 'Link-Target');
-        @define('PLUGIN_REMOTERSS_RSSTARGET_BLAHBLAH', 'Target des Links zu einem der angezeigten RSS-Einträge (Standard: _blank)');
-        @define('PLUGIN_REMOTERSS_NOURI', 'Kein RSS/OPML-Feed gewählt');
-        @define('PLUGIN_REMOTERSS_CACHETIME', 'Wann wird der Feed aktualisiert?');
-        @define('PLUGIN_REMOTERSS_CACHETIME_BLAHBLAH', 'Die Inhalte des fremden Feeds werden gecached. Sobald der Cache älter ist als X Sekunden wird er aktualisiert (Standard: 3 Stunden)');
-        @define('PLUGIN_REMOTERSS_FEEDTYPE', 'Typ des Feeds');
-        @define('PLUGIN_REMOTERSS_FEEDTYPE_BLAHBLAH', 'Wählen Sie das Format des einzubindenden Feeds');
-        @define('PLUGIN_REMOTERSS_BULLETIMG', 'Bullet Image');
-        @define('PLUGIN_REMOTERSS_BULLETIMG_BLAHBLAH', 'Image to display before each headline.');
-        @define('PLUGIN_REMOTERSS_DISPLAYDATE', 'Display Date');
-        @define('PLUGIN_REMOTERSS_DISPLAYDATE_BLAHBLAH', 'Display the date below the headline?');
+@define('PLUGIN_REMOTERSS_TITLE', 'Fremder RSS/OPML-Blogroll Feed');
+@define('PLUGIN_REMOTERSS_BLAHBLAH', 'Zeigt Einträge eines externen RSS/OPML-Feeds an (z.B. Blogroll)');
+@define('PLUGIN_REMOTERSS_NUMBER', 'Anzahl der Einträge');
+@define('PLUGIN_REMOTERSS_NUMBER_BLAHBLAH', 'Wieviele Einträge sollen angezeigt werden? (Standard: alle im Feed)');
+@define('PLUGIN_REMOTERSS_SIDEBARTITLE', 'Feed-Titel');
+@define('PLUGIN_REMOTERSS_SIDEBARTITLE_BLAHBLAH', 'Titel der Feed-Anzeige in der Sidebar des Blogs');
+@define('PLUGIN_REMOTERSS_RSSURI', 'RSS/OPML-URI');
+@define('PLUGIN_REMOTERSS_RSSURI_BLAHBLAH', 'URI des RSS/OPML-Feeds, der angezeigt werden soll');
+@define('PLUGIN_REMOTERSS_RSSTARGET', 'Link-Target');
+@define('PLUGIN_REMOTERSS_RSSTARGET_BLAHBLAH', 'Target des Links zu einem der angezeigten RSS-Einträge (Standard: _blank)');
+@define('PLUGIN_REMOTERSS_NOURI', 'Kein RSS/OPML-Feed gewählt');
+@define('PLUGIN_REMOTERSS_CACHETIME', 'Wann wird der Feed aktualisiert?');
+@define('PLUGIN_REMOTERSS_CACHETIME_BLAHBLAH', 'Die Inhalte des fremden Feeds werden gecached. Sobald der Cache älter ist als X Sekunden wird er aktualisiert (Standard: 3 Stunden)');
+@define('PLUGIN_REMOTERSS_FEEDTYPE', 'Typ des Feeds');
+@define('PLUGIN_REMOTERSS_FEEDTYPE_BLAHBLAH', 'Wählen Sie das Format des einzubindenden Feeds');
+@define('PLUGIN_REMOTERSS_BULLETIMG', 'Bullet Image');
+@define('PLUGIN_REMOTERSS_BULLETIMG_BLAHBLAH', 'Image to display before each headline.');
+@define('PLUGIN_REMOTERSS_DISPLAYDATE', 'Display Date');
+@define('PLUGIN_REMOTERSS_DISPLAYDATE_BLAHBLAH', 'Display the date below the headline?');
+
+@define('PLUGIN_REMOTERSS_RSSLINK', 'RSS-Link verwenden?');
+@define('PLUGIN_REMOTERSS_RSSLINK_DESC', 'Soll ein Hyperlink auf den im RSS-Feed angegebenen Link gesetzt werden?');
+@define('PLUGIN_REMOTERSS_RSSFIELD', 'RSS Zielelement');
+@define('PLUGIN_REMOTERSS_RSSFIELD_DESC', 'Welches Element des RSS-Feeds soll dargestellt werden? (z.B.: "title", "content:encoded", "description", ...)');
+@define('PLUGIN_REMOTERSS_RSSESCAPE', 'HTML-Ausgabe escapen?');
+@define('PLUGIN_REMOTERSS_RSSESCAPE_DESC', 'Wenn aktiviert, wird HTML in RSS-Feeds maskiert und "sicher" ausgegeben. Wenn diese Option deaktiviert ist, wird HTML in einem Feed interpretiert - dies stellt eine potentielle Gefahr dar, wenn der eingebundene Feed nicht ihrer ist!');
index 4c62b0f9d7f50c47b0c30c47d2a3f11f44dd8360..17e6885a607a8ca93c7be9bc59f991367659eec4 100644 (file)
 @define('PLUGIN_REMOTERSS_DISPLAYDATE', 'Display Date');
 @define('PLUGIN_REMOTERSS_DISPLAYDATE_BLAHBLAH', 'Display the date below the headline?');
 
+@define('PLUGIN_REMOTERSS_RSSLINK', 'Use RSS-Link?');
+@define('PLUGIN_REMOTERSS_RSSLINK_DESC', 'Shall a link be set to the link specified in the RSS feed?');
+@define('PLUGIN_REMOTERSS_RSSFIELD', 'RSS display element');
+@define('PLUGIN_REMOTERSS_RSSFIELD_DESC', 'Whic element of the RSS feed should be displayed? (i.e.: "title", "content:encoded", "description", ...)');
+@define('PLUGIN_REMOTERSS_RSSESCAPE', 'Escape HTML output');
+@define('PLUGIN_REMOTERSS_RSSESCAPE_DESC', 'If enabled, HTML in RSS-feeds will be escaped and no XSS is possible. If this option is disabled, HTML in the feeds can be interpretated. This is a possible security issue, if the embedded feed is not yours!');
+
 ?>
index efd028fc58a84cedb5b60954044d2bc7bea9f945..b4027b7e87ae9349588886a56ea85d501066774f 100644 (file)
@@ -47,6 +47,7 @@ class s9y_remoterss_XMLTree {
 
     function GetXMLTree($file) {
         require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+        serendipity_request_start();
         $req = &new HTTP_Request($file);
 
         if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') {
@@ -55,6 +56,7 @@ class s9y_remoterss_XMLTree {
             // Fetch file
             $data = $req->getResponseBody();
         }
+        serendipity_request_end();
 
         // Global replacements
         // by: waldo@wh-e.com - trim space around tags not within
@@ -255,18 +257,40 @@ class serendipity_plugin_remoterss extends serendipity_plugin {
         $propbag->add('description',   PLUGIN_REMOTERSS_BLAHBLAH);
         $propbag->add('stackable',     true);
         $propbag->add('author',        'Udo Gerhards, Richard Thomas Harrison');
-        $propbag->add('version',       '1.5');
+        $propbag->add('version',       '1.7');
         $propbag->add('requirements',  array(
             'serendipity' => '0.8',
             'smarty'      => '2.6.7',
             'php'         => '4.1.0'
         ));
-        $propbag->add('configuration', array('number', 'displaydate', 'dateformat', 'sidebartitle', 'rssuri', 'charset', 'target', 'cachetime', 'feedtype', 'bulletimg', 'markup'));
+        $propbag->add('configuration', array('number', 'use_rss_link', 'show_rss_element', 'escape_rss', 'displaydate', 'dateformat', 'sidebartitle', 'rssuri', 'charset', 'target', 'cachetime', 'feedtype', 'bulletimg', 'markup'));
         $propbag->add('groups', array('FRONTEND_EXTERNAL_SERVICES'));
     }
 
     function introspect_config_item($name, &$propbag) {
         switch($name) {
+
+            case 'use_rss_link':
+                $propbag->add('type', 'boolean');
+                $propbag->add('name', PLUGIN_REMOTERSS_RSSLINK);
+                $propbag->add('description', PLUGIN_REMOTERSS_RSSLINK_DESC);
+                $propbag->add('default', 'false');
+                break;
+
+            case 'escape_rss':
+                $propbag->add('type', 'boolean');
+                $propbag->add('name', PLUGIN_REMOTERSS_RSSESCAPE);
+                $propbag->add('description', PLUGIN_REMOTERSS_RSSESCAPE_DESC);
+                $propbag->add('default', 'true');
+                break;
+
+            case 'show_rss_element':
+                $propbag->add('type', 'string');
+                $propbag->add('name', PLUGIN_REMOTERSS_RSSFIELD);
+                $propbag->add('description', PLUGIN_REMOTERSS_RSSFIELD_DESC);
+                $propbag->add('default', 'title');
+                break;
+
             case 'markup':
                 $propbag->add('type', 'boolean');
                 $propbag->add('name', DO_MARKUP);
@@ -376,22 +400,25 @@ class serendipity_plugin_remoterss extends serendipity_plugin {
         // Disabled by now. May get enabled in the future, but for now the extra HTTP call isn't worth trying.
         return true;
         require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+        serendipity_request_start();
         $req = &new HTTP_Request($uri);
-        
+
         if (PEAR::isError($req->sendRequest()) || !preg_match('@^[23]..@', $req->getResponseCode())) {
+            serendipity_request_end();
             return false;
         } else {
+            serendipity_request_end();
             return true;
         }
     }
 
     function debug($msg) {
         static $debug = false;
-        
+
         if ($debug === false) {
             return false;
         }
-        
+
         $fp = fopen('rss.log', 'a');
         fwrite($fp, '[' . date('Y-m-d H:i') . '] ' . $msg . "\n");
         fclose($fp);
@@ -443,17 +470,35 @@ class serendipity_plugin_remoterss extends serendipity_plugin {
                     $c->parse($rssuri);
                     $this->encoding = $c->rss['encoding'];
 
+                    $use_rss_link = serendipity_db_bool($this->get_config('use_rss_link'));
+                    $rss_element  = $this->get_config('show_rss_element');
+                    $escape_rss   = serendipity_db_bool($this->get_config('escape_rss'));
                     $i = 0;
                     $content = '';
                     while (($showAll || ($i < $number)) && ($item = $c->getNextItem())) {
                         if (empty($item['title'])) {
                             continue;
                         }
-                        $content .= '<a href="' . $this->decode($item['link']) . '" ' . (!empty($target) ? 'target="'.$target.'"' : '') . '>';
+
+                        if ($use_rss_link) {
+                            $content .= '<a href="' . $this->decode($item['link']) . '" ' . (!empty($target) ? 'target="'.$target.'"' : '') . '>';
+                        }
+
                         if (!empty($bulletimg)) {
                             $content .= '<img src="' . $bulletimg . '" border="0" alt="*" /> ';
                         }
-                        $content .= $this->decode($item['title']) . "</a><br />\n";
+
+                        if ($escape_rss) {
+                            $content .= $this->decode($item[$rss_element]);
+                        } else {
+                            $content .= htmlspecialchars($this->decode($item[$rss_element]));
+                        }
+
+                        if ($use_rss_link) {
+                            $content .= '</a>';
+                        }
+
+                        $content .= "<br />\n";
                         $item['timestamp'] = @strtotime(isset($item['pubdate']) ? $item['pubdate'] : $item['dc:date']);
                         if (!($item['timestamp'] == -1) AND ($displaydate == 'true')) {
                             $content .= '<div class="serendipitySideBarDate">'
@@ -589,9 +634,9 @@ class serendipity_plugin_remoterss extends serendipity_plugin {
                 } else {
                     return $string;
                 }
-                
+
                 return $out;
-            
+
             case 'UTF-8':
             default:
                 $out = utf8_decode($string);
index ff11530ee9ce380edf71159842f0bd4b596cc0c8..9320c56a4e38d0c5bb3e0256b245bcb84a082dfd 100644 (file)
@@ -98,6 +98,7 @@ switch ($serendipity['GET']['step']) {
                     $media['external'] = ob_get_contents();
                     ob_end_clean();
                     if (isset($created_thumbnail) && isset($image_id)) {
+                        $media['is_uploaded'] = true;
                         $serendipity['GET']['image'] = $media['imgID'] = (int)$image_id; // $image_id is passed from images.inc.php
                         break;
                     } else {