Template:Mainpage-rssfeeds
From NAS-Central Buffalo - The Linkstation Wiki
(→Usage:) |
|||
| Line 32: | Line 32: | ||
{| | {| | ||
|- | |- | ||
| - | ||charset=... | + | || <tt>charset = ...</tt> ||The charset used by the feed. iconv is used to convert this. |
|- | |- | ||
| - | || short | + | || <tt>short</tt> ||Do not show the description text for each news item. |
|- | |- | ||
| - | || max=x | + | || <tt>max = x</tt> ||Shows x most recent headlines. |
|- | |- | ||
| - | || highlight= term1 term2 || The terms separated by a space are highlighted. | + | || <tt>highlight = term1 term2</tt> ||The terms separated by a space are highlighted. |
|- | |- | ||
| - | || filter= term1 term2 ||Show only rss items containing at least one of the terms. | + | || <tt>filter = term1 term2</tt> ||Show only rss items containing at least one of the terms. |
|- | |- | ||
| - | || reverse ||display the rss items in reverse order. | + | || <tt>reverse</tt> ||display the rss items in reverse order. |
|- | |- | ||
| - | || title=x ||display an alternative title instead of chanel name. | + | || <tt>title = x</tt> ||display an alternative title instead of chanel name. |
|- | |- | ||
| - | || title = none ||dont display any title. | + | || <tt>title = none</tt> ||dont display any title. |
|} | |} | ||
===Example:=== | ===Example:=== | ||
| - | <nowiki><rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss></nowiki> | + | <tt><nowiki><rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss></nowiki></tt> |
<rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss> | <rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss> | ||
| - | |||
===rss.php=== | ===rss.php=== | ||
| - | + | <pre><nowiki> | |
<?php | <?php | ||
# RSS-Feed Mediawiki extension | # RSS-Feed Mediawiki extension | ||
Revision as of 16:31, 29 July 2006
GISWiki/RSS
Uses an extension from: http://meta.wikimedia.org/wiki/GISWiki/RSS
RSS-Feed Mediawiki extension
- original by mutante 25.03.2005
- extended by Duesentrieb 30.04.2005
- extended by Rdb78 07.07.2005
- extended by Mafs 10.07.2005, 24.07.2005
- extended by User:Arcy 07.09.2005
- Updated for MediaWiki 1.6 by User:piku 13.06.2006
- Update for Wikicode output, by User:cogdog 14.jul.2006
Requires:
- magpie rss parser http://magpierss.sourceforge.net/
- iconv http://www.gnu.org/software/libiconv/, see also http://www.php.net/iconv
Installation:
- put this file (rss.php) into the extension directory of your mediawiki installation
- add the following to the end of LocalSettings.php: include("extensions/rss.php");
- make sure magpie can be found by PHP.
Usage:
Use one section between <rss>-tags for each feed. The rss section may contain parameters separated by a pipe ("|"), just like links and templates. These parameters are supported:
| charset = ... | The charset used by the feed. iconv is used to convert this. |
| short | Do not show the description text for each news item. |
| max = x | Shows x most recent headlines. |
| highlight = term1 term2 | The terms separated by a space are highlighted. |
| filter = term1 term2 | Show only rss items containing at least one of the terms. |
| reverse | display the rss items in reverse order. |
| title = x | display an alternative title instead of chanel name. |
| title = none | dont display any title. |
Example:
<rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss>
Google Enables VP9 Video Codec In Chromium
Tue, 18 Jun 2013 04:02:00
An anonymous reader writes "Last month, Google revealed that it was planning to finish defining its VP9 video codec on June 17 (today), after which it will start using the next-generation compression technology in Chrome and on YouTube. The company is wasting no time: it has already enabled the free video compression standard by default in the latest Chromium build."
Read more of this story at Slashdot.
Scores of Vulnerable SAP Deployments Uncovered
Tue, 18 Jun 2013 02:02:00
mask.of.sanity writes "Hundreds of organizations have been detected running dangerously vulnerable versions of SAP that were more than seven years old and thousands more have placed their critical data at risk by exposing SAP applications to the public Internet. The new research found the SAP services were inadvertently made accessible thanks to a common misconception that SAP systems were not publicly-facing and remotely-accessible. The SAP services contained dangerous vulnerabilities which were since patched by the vendor but had not been applied."
Read more of this story at Slashdot.
Cerulean Studios Releases Trillian IM Protocol Specifications
Tue, 18 Jun 2013 00:20:00
Runefox writes "Cerulean Studios, the company behind the long-lived Trillian instant messaging client, has released preliminary specifications to their proprietary "Astra" protocol, now named IMPP (Instant Messaging and Presence Protocol), which provides continuous client functionality as well as mandatory TLS encryption for clients. According to their blog, Cerulean Studios' motivation for the release is to promote interoperability among the throngs of IM services and clients available by allowing others to also use the protocol. Future concepts include federation with XMPP. While the documentation is in an early state and the protocol is claimed to still be in development, it is hoped that it will help decentralize the very heavily fragmented messaging ecosystem. It's implied that, in turn, greater options for privacy may become available in the wake of the PRISM scandal via privately-run federated servers, unaffiliated with major networks, yet still able to communicate with them."
Read more of this story at Slashdot.
Trying To Learn a Foreign Language? Avoid Reminders of Home
Mon, 17 Jun 2013 23:43:00
sciencehabit writes "Show a native-born Chinese person a picture of the Great Wall, and suddenly they'll have trouble speaking English, even if they usually speak it fluently. That's the conclusion of a new study, which finds that reminders of our home country can complicate our ability to speak a new language. The findings could help explain why cultural immersion is the most effective way to learn a foreign tongue and why immigrants who settle within an ethnic enclave acculturate more slowly than those who surround themselves with friends from their new country."
Read more of this story at Slashdot.
Supreme Court Decides Your Silence May Be Used Against You
Mon, 17 Jun 2013 23:02:00
crackspackle writes "The Supreme Court ruled in favor of the State of Texas earlier today in a murder trial where the defendant , prior to be taken into custody, had been questioned by the police and chose to remain silent on key questions. This fact was bought up at trial and used to convict him. Most of us have seen at least enough cop shows to know police must read a suspect their Miranda rights when placing them in custody. The issue was a bit murkier here in that the defendant had not yet been detained and while we all probably thought the freedom from self-incrimination was an implicit right as stated in the Constitution, apparently SCOTUS now thinks you have to claim that right or at least be properly mirandized first." It appears that if you are "free to leave at any time" you lose a few rights. Fancy trick, up there with getting kids to write apology letters.
Read more of this story at Slashdot.
rss.php
<?php
# RSS-Feed Mediawiki extension
#
# original by mutante 25.03.2005
# extended by Duesentrieb 30.04.2005
# extended by Rdb78 07.07.2005
# extended by Mafs 10.07.2005, 24.07.2005
# extended by User:Arcy 07.09.2005
# Updated for MediaWiki 1.6 by User:piku 13.06.2006
# Update for Wikicode output, by User:cogdog 14.jul.2006
#
# Requires:
# * magpie rss parser <http://magpierss.sourceforge.net/>
# * iconv <http://www.gnu.org/software/libiconv/>, see also <http://www.php.net/iconv>
#
# Installation:
# * put this file (rss.php) into the extension directory of your mediawiki installation
# * add the following to the end of LocalSettings.php: include("extensions/rss.php");
# * make sure magpie can be found by PHP.
#
# Usage:
# Use one section between <rss>-tags for each feed. The rss section may contain parameters
# separated by a pipe ("|"), just like links and templates. These parameters are supported:
#
# * charset=... The charset used by the feed. iconv is used to convert this.
# * short Do not show the description text for each news item.
# * max=x Shows x most recent headlines.
# * highlight= term1 term2 The terms separated by a space are highlighted.
# * filter= term1 term2 Show only rss items containing at least one of the terms.
# * reverse display the rss items in reverse order.
# * title=x display an alternative title instead of chanel name.
# * title = none dont display any title.
#
# Example:
# <rss>http://slashdot.org/slashdot.rss|charset=UTF-8|short|max=5</rss>
#
#change this according to your magpie installation!
require_once('rss_fetch.inc');
#install extension hook
$wgExtensionFunctions[] = "wfRssExtension";
#extension hook callback function
function wfRssExtension() {
global $wgParser;
#install parser hook for <rss> tags
$wgParser->setHook( "rss", "renderRss" );
}
#parser hook callback function
function renderRss($input, $argv, $parser = null) {
if (!$parser) $parser =& $GLOBALS['wgParser'];
global $wgOutputEncoding;
$DefaultEncoding = "ISO-8859-1";
$DisableCache = true;
# $input = mysql_escape_string($input);
if (!$input) return ""; #if <rss>-section is empty, return nothing
#parse fields in rss-section
$fields= explode("|",$input);
$url= @$fields[0];
$args= array();
for ($i=1; $i<sizeof($fields); $i++) {
$f= $fields[$i];
if (strpos($f,"=")===False) $args[strtolower(trim($f))]= False;
else {
list($k,$v)= explode("=",$f,2);
if (trim($v)==False) $args[strtolower(trim($k))] = False;
else $args[strtolower(trim($k))]= trim($v);
}
}
#get charset from argument-array
$charset= @$args["charset"];
if (!$charset) $charset= $DefaultEncoding;
#get max number of headlines from argument-array
$maxheads = @$args["max"];
$headcnt = 0;
#get short-flag from argument-array
#if short is set, no description text is printed
if (isset($args["short"])) $short = True; else $short = False;
#get reverse-flag from argument-array
if (isset($args["reverse"])) $reverse = True; else $reverse = False;
#get highlight terms from argument-array
$rssHighlight= @$args["highlight"];
$rssHighlight= str_replace(" "," ", $rssHighlight);
$rssHighlight= explode(" ", trim($rssHighlight));
#get filter terms from argument-array
$rssFilter= @$args["filter"];
$rssFilter= str_replace(" "," ", $rssFilter);
$rssFilter= explode(" ", trim($rssFilter));
#fetch rss. may be cached locally.
#Refer to the documentation of magpie for details.
$rss = @fetch_rss($url);
#check for errors.
if ($rss->ERROR) {
# return "Feed error"; #localize...
#return "<div>Failed to load RSS feed from $url: ".$rss->ERROR."</div>"; #localize...
}
if (!is_array($rss->items)) {
# return "Feed error"; #localize...
#return "<div>Failed to load RSS feed from $url!</div>"; #localize...
}
#Bild title line
#get title from argument-array
$rssTitle= @$args["title"];
$rssTitle= trim($rssTitle);
if ($rssTitle !=='none') {
if ($rssTitle=='') {
$title= iconv($charset,$wgOutputEncoding,$rss->channel['title']);
if ($rss->channel['link']) $title= "[".$rss->channel['link']." $title]";
$output = "=== $title ===\n";
}
else
{
$title= "[".$rss->channel['link']." $rssTitle]";
$output="=== $title ===\n";
}
} else {
$output="\n\n\n";
}
if ($reverse) $rss->items = array_reverse($rss->items);
$description = False;
foreach ($rss->items as $item) {
if ($item['description']) {$description = True; break;}
}
#Bild items
if (!$short and $description) { #full item list
$output.="";
foreach ($rss->items as $item) {
$d_text = true;
$d_title = true;
$href = trim(iconv($charset,$wgOutputEncoding,$item['link']));
$title = trim(iconv($charset,$wgOutputEncoding,$item['title']));
$d_title = wfRssFilter ($title, $rssFilter);
$title= wfRssHighlight($title, $rssHighlight);
#bild description text if desired
if ($item["description"]) {
$text= trim(iconv($charset,$wgOutputEncoding,$item['description']));
#avoid pre-tags
$text= str_replace("\r"," ",$text);
$text= str_replace("\n"," ",$text);
$text= str_replace("\t"," ",$text);
$d_text = wfRssFilter ($text, $rssFilter);
$text= wfRssHighlight($text, $rssHighlight);
$display = $d_text or $d_title;
}
else {
$text = "";
$display = $d_title;
}
if ($display) {
$output.="* [$href $title]";
if ($text) $output.="<br>$text";
$output .= "\n";
}
#Cut off output when maxheads is reached:
if (++$headcnt == $maxheads) break;
}
# $output.="</dl>";
}
else { #short item list
# $output.="<ul>";
foreach ($rss->items as $item) {
$href = trim(iconv($charset,$wgOutputEncoding,$item['link']));
$title = trim(iconv($charset,$wgOutputEncoding,$item['title']));
$d_title = wfRssFilter ($title, $rssFilter);
$title= wfRssHighlight($title, $rssHighlight);
if ($d_title ) $output.="* [$href $title]\n";
#Cut off output when maxheads is reached:
if (++$headcnt == $maxheads) break;
}
# $output.="</ul>";
}
if ($DisableCache) {
global $wgVersion;
# Do not cache this wiki page.
# for details see http://public.kitware.com/Wiki/User:Barre/MediaWiki/Extensions
global $wgTitle, $wgDBprefix;
$ts = mktime();
$now = gmdate("YmdHis", $ts + 120);
$ns = $wgTitle->getNamespace();
$ti = wfStrencode($wgTitle->getDBkey());
$version = preg_replace("/^([1-9]).([1-9]).*/", "\\1\\2", $wgVersion);
if ($version>14) $sql = "UPDATE $wgDBprefix"."page SET page_touched='$now' WHERE page_namespace=$ns AND page_title='$ti'";
else $sql = "UPDATE $wgDBprefix"."cur SET cur_touched='$now' WHERE cur_namespace=$ns AND cur_title='$ti'";
wfQuery($sql, DB_WRITE, "");
}
$out = $parser->parse ($output, $parser->mTitle,$parser->mOptions, true, false);
return $out->getText();
}
function wfRssFilter ($text, $rssFilter) {
$display = true;
if (is_array($rssFilter)) {
foreach($rssFilter as $term) {
if ($term) {
$display = false;
if (preg_match("|$term|i", $text, $a)) { $display = true; return $display; }
}
if ($display) break;
}
}
return $display;
}
function wfRssHighlight($text, $rssHighlight) {
$i=0;
$starttag = "v8x5u3t3u8h";
$endtag = "q8n4f6n4n4x";
$color[]="coral";
$color[]="greenyellow";
$color[]="lightskyblue";
$color[]="gold";
$color[]="violet";
$count_color = count($color);
if (is_array($rssHighlight)) {
foreach($rssHighlight as $term) {
if ($term) {
$text = preg_replace("|\b(\w*?".$term."\w*?)\b|i", "$starttag"."_".$i."\\1$endtag", $text);
$i++;
if ($i == $count_color) $i=0;
}
}
}
# to avoid trouble should someone wants to highlight the terms "span", "style", ...
for ($i=0; $i<5; $i++) {
$text = preg_replace("|$starttag"."_".$i."|", "<span style=\"background-color:".$color[$i]."; font-weight: bold;\">", $text);
$text = preg_replace("|$endtag|", "</span>", $text);
}
return $text;
}
?>

