<?php
define('LATEST_VERSION_URL', 'http://telechargements.pluxml.org/latest-version');

function file_get_contentsCheck() {
	$allow_url_fopen = ini_get('allow_url_fopen');
?>
		L'utilisation d'URL est <?php echo (!empty($allow_url_fopen)) ? 'autorisée' : 'interdite'; ?> avec la fonction file_get_contents().
<?php
	if(!empty(ini_get('allow_url_fopen'))) {
		# test de file_get_contents
		$latest_version = file_get_contents(LATEST_VERSION_URL);
		if($latest_version !== false) {
			echo <<< EOT
		<br/>
		La version ${latest_version} de PluXml est en ligne (<em>en utilisant file_get_content</em>).

EOT;
		} else {
?>
		Quelque chose n'a pas fonctionné avec la fonction <a href="http://php.net/manual/fr/function.file-get-contents.php">file_get_contents()</a> de PHP. Voici le compte-rendu de la requête :
		<pre>
<?php
			print_r(get_headers(LATEST_VERSION_URL, 1));
?>
		</pre>
<?php
			echo <<< EOT
		Valeur de ini_get('allow_url_fopen'): ${allow_url_fopen}<br />
EOT;
			}
	}
}

function fopenCheck() {
	$allow_url_fopen = ini_get('allow_url_fopen');
?>
		L'utilisation d'URL est <?php echo (!empty($allow_url_fopen)) ? 'autorisée' : 'interdite'; ?> avec la fonction fopen().
<?php
	if(!empty(ini_get('allow_url_fopen'))) {
		# test de fopen
		$fp = @fopen(LATEST_VERSION_URL, 'r');
		if($fp !== false) {
			$latest_version = fgets($fp, 20);
			fclose($fp);
			echo <<< EOT
		<br/>
		La version ${latest_version} de PluXml est en ligne (<em>en utilisant fopen()</em>).

EOT;
		} else {
?>
		Quelque chose n'a pas fonctionné avec la fonction <a href="http://php.net/manual/fr/function.fopen.php">fopen()</a> de PHP. Voici le compte-rendu de la requête :
		<pre>
<?php
			print_r(get_headers(LATEST_VERSION_URL, 1));
?>
		</pre>
<?php
			echo <<< EOT
		Valeur de ini_get('allow_url_fopen'): ${allow_url_fopen}<br />
EOT;
		}
	}
}

function curlCheck() {
	echo (function_exists('curl_init')) ? 'la fonction "curl_ini" existe aussi en PHP. <br />' : 'Pas de fonction "curl_ini" pour PHP';
	if(function_exists('curl_init')) {
		# la fonction curl_init est désactivée chez certains hébergeurs, par ex: free.fr
		$ch = curl_init(LATEST_VERSION_URL);
		curl_setopt_array($ch, array(
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_HEADER=>false,
			// CURLOPT_USERAGENT=>'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0',
			CURLOPT_VERBOSE=>false
		));
		$latest_version = curl_exec($ch);
		$result = curl_getinfo($ch);
		curl_close($ch);
		if(!empty($latest_version)) {
			echo <<< EOT
		La version ${latest_version} de PluXml est en ligne (<em>en utilisant Curl</em>).

EOT;
		} else {
?>
		Quelque chose n'a pas fonctionné avec les <a href="http://php.net/manual/fr/book.curl.php">fonctions Curl</a> de PHP. Voici le compte-rendu de la requête :
		<pre>
<?php
			print_r($result);
?>

		</pre>
<?php
		}
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Version de PluXml disponible en ligne</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
	<h1>
		Grande journée aujourd'hui !
	</h1>
	<p><!-- J'aime le Javascript -->
		La version <span id="version">inconnue</span> de PluXml est en ligne (<em>d'après un script Javascript</em>).
	</p>
	<p><!-- une url dans file_get_contents() ou fopen(), c'est permis ? -->
<?php
	// file_get_contentsCheck();
	fopenCheck();
?>
	</p>
	<p><!-- Curl, l'outil qui doit bien aller -->
<?php curlCheck(); ?>
	</p>
	<script type="text/javascript">
		function process(data) {
			var idVersion = document.getElementById('version');
			if((idVersion != null) && ('version' in data)) {
				idVersion.innerHTML = data.version;
			} else {
				console.log('#' + idVersion + ' element not found or not version field in data response');
			}
		}
	</script>
	<script id="version-pluxml" type="text/javascript" src="http://kazimentou.fr/divers/PluXml?callback=process"></script>
</body>
</html>