Yes. This only scans subfora and only one level down. It you have nested fora, probably a good idea with many fora, then you probably need to use http://php.net/manual/en/class.recursivedirectoryiterator.php.
For me the above is very simple and works wonderful in my setup.
I've cleaned the code a bit this morning and put it in a function.
% <? function latestFeed($n) { $latest[]=NULL; foreach (glob("forum/*/index.xml") as $filename) { $feeds[] = $filename; } // Get all feed entries $entries = array(); foreach ($feeds as $feed) { $xml = simplexml_load_file($feed); $entries = array_merge($entries, $xml->xpath('/rss//item')); } // Sort feed entries by pubDate (descending) usort($entries, function ($x, $y) { return strtotime($y->pubDate) - strtotime($x->pubDate); }); foreach (array_slice($entries,0,$n) as $entry){ $entry->description=strip_tags(mb_substr($entry->description, 0, 100, 'UTF-8')) . '...'; $latest[]=$entry; } return $latest; } ?> %
I call the above with the following:
% require_once 'forum/joinfeeds.php'; $latestfeeds=latestFeed(5); %
to get the latest 5 posts.