======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: {{codeqr txt="Le texte que contiendra le code"}}
On peut ajouter les critères suivants:
-class="center" (left ou right) : n'a pas de class par défaut.
Exemple: ""{{codeqr txt="AdresseWebdepréférence" class="right" dim="200"}}""
donne: {{codeqr txt="AdresseWeb" class="right"}}
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:===
%%
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ète
$args = array( "cht"=>"qr",
"chs"=>$dim . "x" . $dim,
"chl"=>rawurldecode(urlencode($txt))
);
// On crée le context pour la requè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è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 "";
return "$fichier";
}
}
$fichier= qr_code($txt);
echo "