車輪の再発明かもしれないが、最近更新されたファイルをRSSで出力してみた。本当はファイル名をURIにしたりしないといけないけど、以下では省略。後で考えると、RSSの出力部分はPEARにありそう。
<?php
/**
* findからRSSを作成する。
*/
$rss_url = '';
$description = 'newly-arrived files';
/** find の基底ディレクトリ */
$base_dir = '';
$mtime = 7;
$cmd = "find $base_dir -mtime -$mtime";
exec($cmd, $output);
$docarray = array();
foreach($output as $newfile)
{
if (is_dir($newfile))
{
continue;
}
$modtime = filemtime($newfile);
$docarray[$newfile] = $modtime;
}
ksort($docarray);
// これ以降で出力
header('Content-Type: application/xml;charset=EUC-JP');
// <? が PHP の開始とされてしまうshort_open_tag=onの環境だったので echo で
echo '<?xml version="1.0" encoding="EUC-JP"?>' . "\n";
echo '<?xml-stylesheet href="rss.xsl" type="text/xsl" media="screen"?>' . "\n";
?>
<!-- generator="newly-arrived files RSS generator" -->
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
>
<channel rdf:about="<?php echo htmlspecialchars($rss_url); ?>">
<title><?php echo $description; ?></title>
<link><?php echo htmlspecialchars($rss_url); ?></link>
<description><?php echo $description; ?></description>
<dc:language>ja</dc:language>
<dc:date><?php echo date("Y-m-d\TH:i:s+09:00"); ?></dc:date>
<items>
<rdf:Seq>
<?php
foreach ($docarray as $fname => $mtime)
{
$uri = htmlspecialchars($fname);
echo "<rdf:li rdf:resource=\"$uri\" />\n";
}
?>
</rdf:Seq>
</items>
</channel>
<?php
foreach ($docarray as $fname => $mtime)
{
$uri = htmlspecialchars($fname);
$title = htmlspecialchars($fname);
$link = htmlspecialchars($fname);
$date = date("Y-m-d\TH:i:s+09:00", $mtime);
$creator = '';
echo "<item rdf:about=\"$uri\"><title>$title</title><link>$link</link><dc:date>$date</dc:date><dc:creator>$creator</dc:creator></item>\n";
}
?>
</rdf:RDF>