Version 1.1-alpha7()
------------------------------------------------------------------------
+ * Add "Comments and Trackbacks" feed feature (stm99..)
+
* Add LiveJournal XML importer (garvinhicking)
* Fix not fetching allow_comments/moderate_comments value when
static $default = '2.0';
/* Detect type */
- if ( $name == 'comments' ) {
+ if ($name == 'comments') {
$type = 'comments';
+ } elseif ($name == 'comments_and_trackbacks') {
+ $type = 'comments_and_trackbacks';
+ } elseif ($name == 'trackbacks') {
+ $type = 'trackbacks';
} else {
$type = 'content';
}
* @param int How many comments to fetch (empty: all)
* @param string How shall comments be ordered (ASC|DESC)
* @param boolean Shall non-approved comments be displayed?
+ * @param string Comment type to fetch
* @return array The SQL result of comments
*/
-function serendipity_fetchComments($id, $limit = null, $order = '', $showAll = false) {
+function serendipity_fetchComments($id, $limit = null, $order = '', $showAll = false, $type = 'NORMAL') {
global $serendipity;
$and = '';
} else {
$limit = '';
}
+
+ if ($type == 'comments') {
+ $type = 'NORMAL';
+ } elseif ($type == 'trackbacks') {
+ $type = 'TRACKBACK';
+ } elseif ($type == 'comments_and_trackbacks') {
+ $type = '%';
+ }
if (!empty($id)) {
$and .= " AND co.entry_id = '" . (int)$id ."'";
FROM
{$serendipity['dbPrefix']}comments co
LEFT JOIN {$serendipity['dbPrefix']}entries e ON (co.entry_id = e.id)
- WHERE co.type LIKE 'NORMAL' AND co.entry_id > 0 $and
+ WHERE co.type LIKE '" . $type . "' AND co.entry_id > 0 $and
$group
ORDER BY
co.id " . ($order != '' ? $order : '') . "
$entry['feed_entryLink'] = serendipity_archiveURL($entry['feed_id'], $entry['title'], 'baseURL', true, array('timestamp' => $entry['timestamp']));
if ($options['comments'] == true) {
// Display username as part of the title for easier feed-readability
+ if ($entry['type'] == 'TRACKBACK' && !empty($entry['ctitle'])) {
+ $entry['author'] .= ' - ' . $entry['ctitle'];
+ }
$entry['title'] = (!empty($entry['author']) ? $entry['author'] : ANONYMOUS) . ': ' . $entry['title'];
}
$serendipity['view'] = 'feed';
header('Content-Type: text/html; charset=utf-8');
- if (preg_match('@/(index|atom[0-9]*|rss|comments|opml)\.(rss[0-9]?|rdf|rss|xml|atom)@', $uri, $vmatches)) {
+ if (preg_match('@/(index|atom[0-9]*|rss|comments|trackbacks|comments_and_trackbacks|opml)\.(rss[0-9]?|rdf|rss|xml|atom)@', $uri, $vmatches)) {
list($_GET['version'], $_GET['type']) = serendipity_discover_rss($vmatches[1], $vmatches[2]);
}
$propbag->add('description', PLUGIN_COMMENTS_BLAHBLAH);
$propbag->add('stackable', true);
$propbag->add('author', 'Garvin Hicking/Tadashi Jokagi/Judebert');
- $propbag->add('version', '1.8');
+ $propbag->add('version', '1.9');
$propbag->add('requirements', array(
'serendipity' => '0.8',
'smarty' => '2.6.7',
'email' => $row['comment_email']);
// Let's help the BBCOde plugin a bit:
- #$entry['comment'] = preg_replace('@((\[.*)[\n\r]+(.*\]))+@imsU', '\2\3', $entry['comment']);
- #$entry['comment'] = preg_replace('@((\[.+\].*)[\r\n]+(.*\[/.+\]))+@imsU', '\2\3', $entry['comment']);
-
+ if (class_exists('serendipity_event_bbcode')) {
+ $entry['comment'] = preg_replace('@((\[.*)[\n\r]+(.*\]))+@imsU', '\2\3', $entry['comment']);
+ $entry['comment'] = preg_replace('@((\[.+\].*)[\r\n]+(.*\[/.+\]))+@imsU', '\2\3', $entry['comment']);
+ }
serendipity_plugin_api::hook_event('frontend_display', $entry);
printf(
}
switch ($_GET['type']) {
+ case 'comments_and_trackbacks':
+ case 'trackbacks':
case 'comments':
- $latest_entry = serendipity_fetchComments(isset($_GET['cid']) ? $_GET['cid'] : null, 1, 'desc');
+ $latest_entry = serendipity_fetchComments(isset($_GET['cid']) ? $_GET['cid'] : null, 1, 'desc', false, $_GET['type']);
break;
case 'content':
default:
}
switch ($_GET['type']) {
+case 'comments_and_trackbacks':
+case 'trackbacks':
case 'comments':
- $entries = serendipity_fetchComments(isset($_GET['cid']) ? $_GET['cid'] : null, $serendipity['RSSfetchLimit'], 'desc');
+ $entries = serendipity_fetchComments(isset($_GET['cid']) ? $_GET['cid'] : null, $serendipity['RSSfetchLimit'], 'desc', $_GET['type']);
$description = $title . ' - ' . $description;
if (isset($_GET['cid'])) {
$title = $title . ' - ' . COMMENTS_FROM . ' "' . $latest_entry[0]['title'] . '"';
{foreach from=$trackbacks item=trackback}
<div class="serendipity_comment">
+ <a id="c{$trackback.id}"></a>
<div class="serendipity_commentBody">
<a href="{$trackback.url|@strip_tags}" {'blank'|@xhtml_target}><?= $trackback['title'] ?></a><br />
{$trackback.body|@strip_tags|@escape:all}
{foreach from=$entries item="entry"}
<item>
<title>{$entry.feed_title}</title>
- <link>{$entry.feed_entryLink}</link>
+ <link>{$entry.feed_entryLink}{if $is_comments}#c{$entry.commentid}{/if}</link>
{if !empty($entry.body)}
<description>
{foreach from=$entries item="entry"}
<item rdf:about="{$entry.feed_guid}">
<title>{$entry.feed_title}</title>
- <link>{$entry.feed_entryLink}</link>
+ <link>{$entry.feed_entryLink}{if $is_comments}#c{$entry.commentid}{/if}</link>
{if !empty($entry.body)}
<description>
{$entry.feed_body|@escape} {$entry.feed_ext|@escape}
{foreach from=$entries item="entry"}
<item>
<title>{$entry.feed_title}</title>
- <link>{$entry.feed_entryLink}</link>
+ <link>{$entry.feed_entryLink}{if $is_comments}#c{$entry.commentid}{/if}</link>
{foreach from=$entry.categories item="cat"}
<category>{$cat.feed_category_name}</category>
{/foreach}
{foreach from=$entries item="entry"}
<entry>
- <link href="{$entry.feed_entryLink}" rel="alternate" title="{$entry.feed_title}" type="text/html" />
+ <link href="{$entry.feed_entryLink}{if $is_comments}#c{$entry.commentid}{/if}" rel="alternate" title="{$entry.feed_title}" type="text/html" />
<author>
<name>{$entry.feed_author}</name>
<email>{$entry.feed_email}</email>
{foreach from=$entries item="entry"}
<entry>
- <link href="{$entry.feed_entryLink}" rel="alternate" title="{$entry.feed_title}" />
+ <link href="{$entry.feed_entryLink}{if $is_comments}#c{$entry.commentid}{/if}" rel="alternate" title="{$entry.feed_title}" />
<author>
<name>{$entry.feed_author}</name>
<email>{$entry.feed_email}</email>
<?xml version="1.0" encoding="utf-8" ?>
-\r
+
<opml version="{$metadata.version}" {$namespace_display_dat}>
<head>
<title>{$metadata.title}</title>
<ownerName>Serendipity {$serendipityVersion} - http://www.s9y.org/</ownerName>
</head>
<body>
-\r
+
{foreach from=$entries item="entry"}
- <outline text="{$entry.feed_title}" type="url" htmlUrl="{$entry.feed_entryLink}" urlHTTP="{$entry.feed_entryLink}" />
-{/foreach}\r
+ <outline text="{$entry.feed_title}" type="url" htmlUrl="{$entry.feed_entryLink}{if $is_comments}#c{$entry.commentid}{/if}" urlHTTP="{$entry.feed_entryLink}{if $is_comments}#c{$entry.commentid}{/if}" />
+{/foreach}
-</body>\r
+</body>
</opml>
\ No newline at end of file
{foreach from=$trackbacks item=trackback}
<div class="serendipity_comment">
+ <a id="c{$trackback.id}"></a>
<div class="serendipity_commentBody">
<a href="{$trackback.url|@strip_tags}" {'blank'|@xhtml_target}>{$trackback.title}</a><br />
{$trackback.body|@strip_tags|@escape:all}
{foreach from=$trackbacks item=trackback name="trackbacks"}
<li class="{if $smarty.foreach.comments.iteration is odd}graybox{/if}">
+ <a id="c{$trackback.id}"></a>
<cite><a href="{$trackback.url|@strip_tags}" {'blank'|@xhtml_target}>{$trackback.title}</a></cite>
<p>{$trackback.body|@strip_tags|@escape:all}</p>
<div class="commentmetadata">