loadXML($content); // initialize rss feed $rss = new DOMDocument('1.0', 'UTF-8'); $rss->formatOutput = true; $docEl = $rss->createElement('rss'); $docEl->setAttribute('version', '2.0'); $rss->appendChild($docEl); $channel = $rss->createElement('channel'); $docEl->appendChild($channel); $channel->appendChild($rss->createElement('title', 'OSM Changeset Newsfeed')); $channel->appendChild($rss->createElement('description', 'Keep up to date in your area!')); $channel->appendChild($rss->createElement('link', $historyUrl . '?' . htmlspecialchars($options))); // generate rss feed $changesets = $xml->getElementsByTagName('changeset'); foreach ($changesets as $changeset) { $add = true; if (in_array('bots', $filters)) { foreach ($bots as $bot) { if (strpos($changeset->getAttribute('user'), $bot) !== false) { $add = false; } } } if ($add) { $item = $rss->createElement('item'); unset($tag); foreach ($changeset->childNodes as $child) { if (get_class($child) == 'DOMElement') { $tag[$child->getAttribute('k')] = htmlspecialchars($child->getAttribute('v')); } } $ts = strtotime(($changeset->getAttribute('closed_at')) ? $changeset->getAttribute('closed_at') : $changeset->getAttribute('created_at')); $date = date('D, d M Y H:i:s', $ts); $item->appendChild($rss->createElement('title', (($changeset->getAttribute('open') == 'true') ? '[Editing] ' : '') . $changeset->getAttribute('user') . ((@$tag['comment']) ? ': ' . @$tag['comment'] : '') . (($tag['created_by']) ? ': ' . $tag['created_by'] : ''))); $item->appendChild($rss->createElement('link', $browseUrl . $changeset->getAttribute('id'))); $item->appendChild($rss->createElement('guid', $apiUrl . '/changeset/' . $changeset->getAttribute('id'))); $item->appendChild($rss->createElement('pubDate', $date)); $channel->appendChild($item); } } echo $rss->saveXML(); ?>