Lexer->addSpecialPattern(']*>(?=.*)', $mode,'plugin_rss'); } /** * Do the regexp **/ function handle($match, $state, $pos, Doku_Handler $handler) { switch($state){ case DOKU_LEXER_SPECIAL : case DOKU_LEXER_ENTER : $data = array( 'state'=>$state, 'feed'=> "", ); // Looking for id preg_match("/feed *= *(['\"])(.*?)\\1/", $match, $feed); if( count($feed) != 0 ) { $data['feed'] = $feed[2]; } return $data; case DOKU_LEXER_UNMATCHED : return array('state'=>$state, 'text'=>$match); default: return array('state'=>$state, 'bytepos_end' => $pos + strlen($match)); } } function _check_rss($data) { $feed = $data['feed']; try { if(!@$fluxrss=simplexml_load_file($feed)) { throw new Exception('Flux invalide'); } if(empty($fluxrss->channel->title) || empty($fluxrss->channel->description) || empty($fluxrss->channel->item->title)) { throw new Exception('Invalid Feed !'); } //$renderer->doc .= '

Flux RSS trouvé !

'; } catch(Exception $e){ echo $e->getMessage(); } return $fluxrss; } function _render_rss($renderer, $data){ $fluxrss = $this->_check_rss($data); if($fluxrss) { $renderer->doc .= 'rss'; $renderer->doc .= '

'.(string)$fluxrss->channel->title.'

'; $renderer->doc .= '

'.(string)$fluxrss->channel->description.'

'; $i = 0; $nb_to_display = 5; $renderer->doc .= '