Action Code QR


Les codes QR peuvent être utiles pour partager l'URL d'une page wiki par exemple. C'est pourquoi nous avons créé cette action.

Pour afficher un code QR : {{codeqr txt="Le texte que contiendra le code"}}

donne:
qrcode


On peut ajouter les critères suivants:



Exemple: {{codeqr txt="AdresseWebdepréférence" class="right" dim="200"}}
donne:
qrcode


Un API de Google est utilisé ici: http://code.google.com/intl/fr/apis/chart/image/docs/gallery/qr_codes.html


Voici le code de l'action:

<?php
if (empty($vars['txt'])) {echo "Pas de crit&egrave;re txt!";}

else {
	$txt=$vars['txt'];
	if ($vars['class']=="") { $laclass="nul";} else  {$laclass="attach_".$vars['class'];}
	$urlmst = $this->config[url_site];

	if (!function_exists("qr_code"))

	{
	/**
	* Filtre pour générer un QRCode à partir d'un texte
	*/
		function qr_code ( $txt, $dim=120 )
		{
			// S'il existe pas on crée le répertoire qui va accueillir nos QRCodes
			if ( !is_dir("cache-qrcode/" ) )
			{                                     
				if ( !mkdir ( "cache-qrcode/", 0775 ) )
				{ 
					return "impossible de creer le repertoire" ;
				}
		}
			
			// l'url du service web de Google qui va bien
			$url = 'http://chart.apis.google.com/chart';
			// On colle dans un tableau les arguments pour la requÃ&#131;¨te
			$args = array(	"cht"=>"qr",
							"chs"=>$dim . "x" . $dim,
							"chl"=>rawurldecode(urlencode($txt)) 
							);
			// On crée le context pour la requÃ&#131;¨te
			$context = stream_context_create( array( 
				'http' => array( 
					'method' => 'POST',
					'content' => http_build_query($args)
					)
				)
			);
			
			// Ici on va générer un nom et un chemin pour notre fichier final
		$hash    = md5(serialize($txt));
		$fichier = "cache-qrcode/qrcode-$hash.png";

			// Si notre fichier n'existe pas on requÃ&#131;¨te le service et on crée le fichier
			if ( !is_file( $fichier ) ){
				file_put_contents( $fichier, file_get_contents( $url, false, $context ) );
			}
			
			// On retourne un tag image avec la source qui va bien
			//return "<img src=\"$fichier\" alt='qrcode' width='$dim' height='$dim' class='middle' />";
			return "$fichier";
		}

	}

	$fichier= qr_code($txt);
	echo "<div class='$laclass'>";
	echo "<img src=\"".$urlmst."$fichier\" alt='qrcode' width='120' height='120' class='middle' />";
	echo "</div>";
}
?>