4 require_once
'classes/class.ilProxySettings.php';
6 define(
"MAGPIE_DIR",
"./Services/Feeds/magpierss/");
7 define(
"MAGPIE_CACHE_ON",
true);
8 define(
"MAGPIE_CACHE_DIR",
"./".
ILIAS_WEB_DIR.
"/".CLIENT_ID.
"/magpie_cache");
9 define(
'MAGPIE_OUTPUT_ENCODING',
"UTF-8");
10 define(
'MAGPIE_CACHE_AGE', 900);
13 include_once(
"./Services/Feeds/classes/class.ilExternalFeedItem.php");
42 define(
'IL_FEED_PROXY_HOST',
"");
43 define(
'IL_FEED_PROXY_PORT',
"");
74 $this->error = $a_error;
106 if (!defined(
'IL_FEED_PROXY_HOST'))
117 define(
'IL_FEED_PROXY_HOST',
"");
118 define(
'IL_FEED_PROXY_PORT',
"");
122 $feed = @fetch_rss($a_url);
125 $error = magpie_error();
133 return "Unknown Error.";
145 if ($this->
getUrl() !=
"")
147 $this->feed = @fetch_rss($this->
getUrl());
152 $error = magpie_error();
164 if (is_array($this->feed->items))
166 foreach($this->feed->items as $item)
169 $item_obj->setMagpieItem($item);
170 $this->items[] = $item_obj;
185 $request_headers = array();
189 $cache_key = $this->
getUrl().MAGPIE_OUTPUT_ENCODING;
191 if (!$cache->ERROR) {
193 $cache_status = $cache->check_cache( $cache_key);
197 if ($cache_status ==
'HIT')
210 return $this->feed->channel[
"title"];
218 return $this->feed->channel[
"description"];
236 if (!defined(
'IL_FEED_PROXY_HOST'))
245 define(
'IL_FEED_PROXY_HOST',
"");
246 define(
'IL_FEED_PROXY_PORT',
"");
250 $res = @fopen($a_url,
"r");
260 $contents.= fread(
$res, 8192);
276 #search through the HTML, save all <link> tags
277 # and store each link's attributes in an associative array
278 preg_match_all(
'/<link\s+(.*?)\s*\/?>/si', $html, $matches);
279 $links = $matches[1];
280 $final_links = array();
281 $link_count = count($links);
282 for(
$n=0;
$n<$link_count;
$n++){
283 $attributes = preg_split(
'/\s+/s', $links[
$n]);
284 foreach($attributes as $attribute){
285 $att = preg_split(
'/\s*=\s*/s', $attribute, 2);
287 $att[1] = preg_replace(
'/([\'"]?)(.*)\1/',
'$2', $att[1]);
288 $final_link[strtolower($att[0])] = $att[1];
291 $final_links[
$n] = $final_link;
293 #now figure out which one points to the RSS file
294 for(
$n=0;
$n<$link_count;
$n++){
295 if(strtolower($final_links[
$n][
'rel']) ==
'alternate'){
296 if(strtolower($final_links[$n][
'type']) ==
'application/rss+xml'){
297 $href = $final_links[
$n][
'href'];
299 if(!$href and strtolower($final_links[$n][
'type']) ==
'text/xml'){
300 #kludge to make the first version of this still work
301 $href = $final_links[
$n][
'href'];
304 if(strstr($href,
"http://") !==
false){ #
if it
's absolute
306 }else{ #otherwise, 'absolutize
' it
307 $url_parts = parse_url($location);
308 #only made it work for http:// links. Any problem with this?
309 $full_url = "http://$url_parts[host]";
310 if(isset($url_parts['port
'])){
311 $full_url .= ":$url_parts[port]";
313 if($href{0} != '/
'){ #it's a relative link on the domain
314 $full_url .= dirname($url_parts[
'path']);
315 if(substr($full_url, -1) !=
'/'){
316 #if the last character isn't a '/', add it