[dokuwiki] Re: rss with details ?

  • From: Jan Galinski <jangal74@xxxxxxxxxxxxxx>
  • To: dokuwiki@xxxxxxxxxxxxx
  • Date: Tue, 8 Nov 2005 10:43:58 +0100

extended to deal with URLs containing "?"

function rss ($call){

        $rss_params = array("desc" => 0, "date"=>"", "max"=> -1);
        $desc = false;
        $max = -1;
        $parts = array();
        $url = "";
        $params = "";



        $parts = explode("?",$call);

        $url = array_shift($parts);

        if (count($parts) == 2 )  {
            $url .= "?".array_shift($parts);
        }

        if (count($parts) > 0) {
            $params = array_shift($parts);
            foreach (explode("&",$params) as $param) {
                list($name,$value) = explode("=",$param);
                $rss_params[$name]=$value;
            }
        }

        if ($rss_params[max] == 0) return;

        global $lang;
        define('MAGPIE_CACHE_ON', false); //we do our own caching
        define('MAGPIE_DIR', DOKU_INC.'inc/magpie/');
        define('MAGPIE_OUTPUT_ENCODING','UTF-8'); //return all feeds as UTF-8
        require_once(MAGPIE_DIR.'/rss_fetch.inc');

        //disable warning while fetching
        $elvl = error_reporting(E_ERROR);
        $rss  = fetch_rss($url);
        error_reporting($elvl);


        $this->doc .= '<dl class="rss">';


        if($rss){
            $max = ($rss_params[max]>0 && $rss_params[max] <=
count($rss->items)) ? $rss_params[max] : count($rss->items);

            for ($i=0; $i<$max; $i++) {
                //foreach ($rss->items as $item ) {
                //print_r($item);

                $item = $rss->items[$i];

                $this->doc .= '<dt>';
                $this->externallink($item['link'],$item['title']);
                $this->doc .= '</dt>';

                if ($rss_params[date] != "") {
                    $this->doc .= '<dd class="date">' .
date($rss_params[date],$item['date_timestamp']) . '</dd>'."\n";
                }
                if ($rss_params[desc]) {
                    $this->doc .= '<dd>' . $item['description'] . '</dd>'."\n";
                }

            }
        }else{
            $this->doc .= '<dt>';
            $this->doc .= '<em>'.$lang['rssfailed'].'</em>';
            $this->externallink($url);
            $this->doc .= '</dt>';
        }
        $this->doc .= '</dl>';
    }
--
DokuWiki mailing list - more info at
http://wiki.splitbrain.org/wiki:mailinglist

Other related posts: