<?
# Wiki Reflection Version: 2.3 ( see http://www.vacilando.org/index.php?x=7065 )
# Open source license: GPL
# Make sure to force Unicode for Wikipedia content -- otherwise all foreign scripts will display utter nonsense. This should of course be in your header, though my experimenting shows it may as well stay right here.
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
# Make sure images do not display with a border.
echo '<style TYPE="text/css">
<!--
img{border: 0 none;}
-->
</STYLE>';
$default_title = 'Vacilando'; # If you do not specify a title, this will be your default page.
$sourceurl = 'http://en.wikipedia.org/wiki/'; # This URL needs adjusting sometimes.
$pathfromroot = substr( $_SERVER['REQUEST_URI'], 0, strpos( $_SERVER['REQUEST_URI'], "?" ) );
$title_wiki = $_GET['title'];
if ($title_wiki == "") { $title_wiki = $default_title; }
$nicetitle = str_replace( "_", " ", stripslashes( $title_wiki ) );
function callback( $buffer ) {
global $nicetitle;
global $title_wiki;
global $sourceurl;
# Separate the article content
$buffer = substr( $buffer, strpos( $buffer, '<!-- start content -->' ) );
$buffer = substr( $buffer, 0, strpos( $buffer, '<div class="printfooter">' ) );
# Replace relative links (use another wiki server)
$buffer = str_replace( '"/w/skin', '"http://en.wikipedia.org/w/skin', $buffer );
$buffer = str_replace( '"/skins', '"http://en.wikipedia.org/skins', $buffer );
# Replace relative links (use this server)
$buffer = str_replace( '"/wiki/', '"' . $pathfromroot . '?title=', $buffer );
# Remove edit links
$buffer = str_replace( ">edit<", "><", $buffer );
$buffer = str_replace( "[<", "<", $buffer );
$buffer = str_replace( ">]", ">", $buffer );
$buffer = str_replace( 'href="/w/index.php?', 'target="_blank" href="http://en.wikipedia.org/w/index.php?', $buffer ); # These are typically links to non-existent pages, so the Wikipedia edit page has to open.
if ( $buffer <> '' ) {
$buffer = '<table width=100% cellspacing=0 cellpadding=1 bgcolor="#EEEEEE" border=0><tr><td>
<p><font size="+2"><b>' . $nicetitle . '</b> <sup><a href="http://en.wikipedia.org/w/index.php?title=' . $title_wiki . '&action=edit" title="Edit this article at Wikipedia" target="_blank"><font color="red" size="-1">edit</font></a></sup></font>
<br><i><small>extracted from </small><a href="http://www.wikipedia.org" target="_blank"><small>Wikipedia, the Free Encyclopedia</small></a><small>
(using <a href="http://www.vacilando.org/index.php?x=7065"><small>Wikipedia Reflection Script</small></a>)</small></i></td>
<td><form method="get"><br><input type="text" name="title" size="30"> <input type="submit" value="search"></form></td>
<td><div align="right"><a href="http://www.gnu.org/copyleft/fdl.html" target="_blank"><img src="_misc/gnu-fdl.png" border="0"></a></div></td></tr></table><p>' . $buffer;
} else {
$buffer = '<p>Unfortunately, no content could be extracted!
<p><a href="javascript:history.go(-1)">Return to the previous page</a> or consult the <a target="_blank" href="' . $sourceurl . $title_wiki . '">Wikipedia article on "' . $nicetitle . '"</a>.';
}
return $buffer;
}
# Your page header comes here...'
ob_start("callback");
#include $sourceurl . $title_wiki;
$cuu = new CURL;
echo $cuu -> get( $sourceurl . $title_wiki );
ob_end_flush();
# Your page footer comes here...'
# Define the cURL class:
class CURL {
var $callback = false;
function setCallback($func_name) {
$this->callback = $func_name;
}
function doRequest($method, $url, $vars) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
#curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
#curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
if ($method == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
}
$data = curl_exec($ch);
curl_close($ch);
if ($data) {
if ($this->callback)
{
$callback = $this->callback;
$this->callback = false;
return call_user_func($callback, $data);
} else {
return $data;
}
} else {
return curl_error($ch);
}
}
function get($url) {
return $this->doRequest('GET', $url, 'NULL');
}
function post($url, $vars) {
return $this->doRequest('POST', $url, $vars);
}
}
?>
|