Ticket #89: rss_picture_comments.patch

File rss_picture_comments.patch, 5.7 KB (added by sidtheduck, 4 months ago)

Code to add picture comment support

  • plog-includes/plog-functions.php

     
    11251125 
    11261126                // no such caption, perhaps we have better luck with path? 
    11271127                if (!$picture) { 
     1128                        // check if it's an RSS feed for the picture comments 
     1129                        while (!empty($names['arg1']) && $names['arg1'] == "feed") { 
     1130                                $feed = array_pop($names); 
     1131                        } 
    11281132                        $filepath = join("/",$names); 
    11291133                        $like_match = array("_", "%"); 
    11301134                        $like_replace = array("\_", "\%"); 
     
    15711575        FROM `".TABLE_PREFIX."comments` 
    15721576        WHERE `parent_id`=".intval($id)." 
    15731577        AND `approved`=1"; 
     1578        if (isset($arr['comments'])) { 
     1579                $query .= " ORDER BY `id` "; 
     1580                if ($arr['comments'] == "ASC") { 
     1581                        $query .= "ASC"; 
     1582                } else { 
     1583                        $query .= "DESC"; 
     1584                } 
     1585        } 
    15741586        $result = run_query($query) or die(mysql_error()); 
    15751587 
    15761588        $GLOBALS["available_comments"] = mysql_num_rows($result); 
  • plog-rss.php

     
    3030                $album = get_album_by_id($id); 
    3131                $config["feed_title"] .= ": " . $album['album_name'] . " " . plog_tr("Album"); 
    3232 
     33        } else if ($level == "picture") { 
     34                plogger_init_picture(array( 
     35                'id' => $id, 
     36                'comments' => 'DESC' 
     37                )); 
     38                $picture = get_picture_by_id($id); 
     39                $config["feed_title"] .= ": " . basename($picture['path']); 
     40 
    3341        } else if ($level == "search") { 
    3442                plogger_init_search(array( 
    3543                'searchterms' => $search, 
     
    4553                $config["feed_title"] .= ": " . plog_tr("Entire Gallery"); 
    4654        } 
    4755 
    48         $header = 1; 
    49  
    5056        // generate RSS header 
    51 $rssFeed = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; 
     57        $rssFeed = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; 
    5258        $rssFeed.= "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:media=\"http://search.yahoo.com/mrss/\">\n"; 
    5359 
    5460        $rssFeed.= "<channel>\n"; 
     
    6066        $rssFeed.= "<link>".$config['gallery_url']."</link>\n"; 
    6167        $rssFeed.= "<atom:link href=\"http://".$_SERVER['HTTP_HOST'].str_replace('&', '&amp;', $_SERVER['REQUEST_URI'])."\" rel=\"self\" type=\"application/rss+xml\" />\n"; 
    6268 
     69        $header = 1; 
     70 
    6371        while(plogger_has_pictures()) { 
    6472                plogger_load_picture(); 
    65                 $submitdate = plogger_get_picture_date("D, d M Y H:i:s O",1); 
    66                 $takendate = plogger_get_picture_date(); 
    67  
     73                 
    6874                if ($header) { 
     75                        $submitdate = plogger_get_picture_date("D, d M Y H:i:s O",1); 
     76                        $takendate = plogger_get_picture_date(); 
     77                 
    6978                        $rssFeed.= "<pubDate>". $submitdate . "</pubDate>\n"; 
    7079                        $rssFeed.= "<lastBuildDate>". $submitdate . "</lastBuildDate>\n"; 
    7180                        $header = 0; 
     
    7382 
    7483                $rssFeed .= "<item>\n"; 
    7584 
    76                 $urlPath = plogger_get_source_picture_url(); 
     85                $urlPath = str_replace(array("%2F", "%3A"), array("/", ":"), rawurlencode(plogger_get_source_picture_url())); 
    7786 
    7887                $caption = plogger_get_picture_caption(); 
    79                 $thumbpath = plogger_get_picture_thumb(THUMB_SMALL); 
     88                $thumbpath = plogger_get_picture_thumb(THUMB_RSS); 
    8089 
    8190                //$pagelink = $config["address"] . plogger_get_picture_url(); 
    8291                // XXX: Below won't look nice with mod_rewrite, but plogger_get_picture_url 
     
    8695                if ($caption == "" || $caption == "&nbsp;") $caption = plog_tr("New Image (no caption)"); 
    8796                $caption .= " - " . $takendate; 
    8897 
    89                 $discript = '&lt;p&gt;&lt;a href="'.$pagelink.'" 
     98                $descript = '&lt;p&gt;&lt;a href="'.$pagelink.'" 
    9099                title="'.$caption.'"&gt; 
    91100                &lt;img src="'.$thumbpath.'" alt="'.$caption.'" style="border: 1px solid #000000;" /&gt; 
    92101                &lt;/a&gt;&lt;/p&gt;&lt;p&gt;'.$caption.'&lt;/p&gt;'; 
    93102 
    94                 $discript .= '&lt;p&gt;'.htmlspecialchars(plogger_get_picture_description()).'&lt;/p&gt;'; 
     103                $descript .= '&lt;p&gt;'.htmlspecialchars(plogger_get_picture_description()).'&lt;/p&gt;'; 
    95104 
    96105                $rssFeed .= "\t<pubDate>" . $submitdate . "</pubDate>\n"; 
    97106                $rssFeed .= "\t<title>" . $caption .  "</title>\n"; 
    98107                $rssFeed .= "\t<link>" . $pagelink . "</link>\n"; 
    99                 $rssFeed .= "\t<description>" . $discript .  "</description>\n"; 
     108                $rssFeed .= "\t<description>" . $descript .  "</description>\n"; 
    100109                $rssFeed .= "\t<guid isPermaLink=\"false\">".$thumbpath."</guid>\n"; 
    101                 $rssFeed .= "\t<media:content url=\"" . $urlPath . "\" type=\"image/jpeg\"/>\n"; 
     110                $rssFeed .= "\t<media:content url=\"" . $urlPath . "\" type=\"image/jpeg\" />\n"; 
    102111                $rssFeed .= "\t<media:title>" . $caption . "</media:title>\n"; 
    103112                $rssFeed .= "</item>\n"; 
     113                if ($level == "picture") { 
     114                        while(plogger_picture_has_comments()) { 
     115                                plogger_load_comment(); 
     116                                $rssFeed .= "<item>\n"; 
     117                                $rssFeed .= "\t<pubDate>" . plogger_get_comment_date("D, d M Y H:i:s O") . "</pubDate>\n"; 
     118                                $rssFeed .= "\t<title>Comment by " . plogger_get_comment_author() . "</title>\n"; 
     119                                $rssFeed .= "\t<link>" . $pagelink . "</link>\n"; 
     120                                $rssFeed .= "\t<description>" . plogger_get_comment_text() .  "</description>\n"; 
     121                                $rssFeed .= "\t<guid isPermaLink=\"true\">".$pagelink."#Comment-".plogger_get_comment_id()."</guid>\n"; 
     122                                $rssFeed .= "</item>\n"; 
     123                        } 
     124                } 
    104125        } 
    105126 
    106127        $rssFeed .= "</channel>\n</rss>"; 
     
    121142        // Plogger is installed in one 
    122143        $path = join("/",array_diff(explode("/",$_SERVER["REQUEST_URI"]),explode("/",$_SERVER["PHP_SELF"]))); 
    123144        $resolved_path = resolve_path($path); 
    124         // there is no meaningful RSS feed for images 
    125         if (is_array($resolved_path) && isset($resolved_path['level']) && $resolved_path['level'] != "picture") { 
    126                 $level = (isset($resolved_path['level'])) ? $resolved_path['level'] : "collections"; 
    127                 $id = (isset($resolved_path['id'])) ? $resolved_path['id'] : 0; 
    128         } 
     145        $level = (isset($resolved_path['level'])) ? $resolved_path['level'] : "collections"; 
     146        $id = (isset($resolved_path['id'])) ? $resolved_path['id'] : 0; 
    129147} 
    130148 
    131149$parts = parse_url($_SERVER['REQUEST_URI']);