* @author Gerry Weissbach */ // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'action.php'); class action_plugin_rssbycreated extends DokuWiki_Action_Plugin { function register(Doku_Event_Handler $controller) { // Support given via POST $controller->register_hook('FEED_ITEM_ADD', 'BEFORE', $this, 'rss_action'); $controller->register_hook('FEED_DATA_PROCESS', 'BEFORE', $this, 'rss_action_pre'); } function rss_action(Doku_Event $event, $args) { global $conf; if ( $event->data['opt']['item_content'] == 'abstract' ) { $content = p_render('xhtml', p_get_instructions($event->data['item']->description), $info); // no TOC in feeds $content = preg_replace('/().*()/s','',$content); // make URLs work when canonical is not set, regexp instead of rerendering! if(!$conf['canonical']){ $base = preg_quote(DOKU_REL,'/'); $content = preg_replace('/(data['item']->description = $content; } $event->data['item']->date = date('r', p_get_metadata($event->data['ditem']['id'],'date created')); return true; } function rss_action_pre(Doku_Event $event, $args) { global $conf; $event->data['rss']->title = $conf['title']; usort($event->data['data'], array($this, "__sortByDate")); return true; } function __sortByDate($a, $b) { $aID = $a['id']; $bID = $b['id']; return p_get_metadata($a['id'],'date created') <= p_get_metadata($b['id'],'date created'); } }