Attivare la visualizzazione dettagliata degli errori in php
13 giugno 2012
Interfacciarsi con YouTube utilizzando il php
15 giugno 2012

Stamattina mi sono buttato su un task che avevo in coda da un po’ di tempo: cambiare l’immagine di sfondo del sito di un cliente prendendone una casualmente tra quelle presenti in una cartella.

Mi sono quindi imbattuto in un esempio molto simile a ciò che volevo fare http://henry.jarske.net/writings.page/php-random/

L’esempio in questione fa qualcosa in più di ciò che volevo fare: a me bastava una funzione che restituisse l’URI di un immagine presa a caso in una cartella (da usare poi all’interno di un tempate Joomla), questo codice restituisce l’immagine stessa, con tutti i codici mime per gestirla.

Ho quindi modificato il codice di partenza per aggiungere la mia necessità a quello già codificato, ne è uscita la funzione getRamdomImage.

	function getRandomImage($sPathRel="",$aTypes="",$sType="name")
       // derivato da http://henry.jarske.net/writings.page/php-random/
	{

		// Configuration
		//$image_path = "";
		if($aTypes=='') {
			$aTypes = array(
				"GIF" => "image/gif",
				"JPG" => "image/jpg",
				"PNG" => "image/png");
		}
		// Directory scan
		$file_list = array();
		$sPath = realpath(trim($sPathRel) != "" ? $sPathRel : ".") . "/";
		if ($sPath !== false && is_dir($sPath) && $handle = @opendir($sPath))
		{
			while (($file = readdir($handle)) !== false)
			{
				if (is_file($sPath . $file))
				{
					$file_extension = strtoupper(substr(strrchr($file, "."), 1));
					if (isset($aTypes[$file_extension]))
					{
						$file_list[] = array(
							"filename" => $sPath . $file,
							"filenamerel" => $sPathRel . $file,
							"mimetype" => $aTypes[$file_extension]);
					}
				}
			}
		}

		// Output
		if (sizeof($file_list) > 0)
		{
			shuffle($file_list);
			if($sType=="name") {
				echo $file_list[0]["filenamerel"];
			} else {

				header("Content-Type: " . $file_list[0]["mimetype"]);
				header("Content-Length: " . @filesize($file_list[0]["filename"]));
				@readfile($file_list[0]["filename"]);
			}
		}
		else
		{
			echo "No images found.";
		}

	}

I parametri della funzione sono

$sPathRel

Cartella che contiene le immagini da visualizzare in maniera random, con “/” finale. Ad esempio “images/sfondo/”. Se non specificato verrà esaminata la cartella corrente.

$aTypes

Array contenente l’estensione ed il tipo mime delle immagini da considerare. Se non specificato è inizializzato a

array( “GIF” => “image/gif”, “JPG” => “image/jpg”, “PNG” => “image/png”);

$sType

specifica la modalità di funzionamento della funzione. Se uguale a “name” (valore di default) la funzione restituirà l’URL di una della immagini contenuta della cartella $sPathRel.
Altri valori fanno sì che la funzione restituisca l’intera immagine.

Di seguito un esempio d’uso della funzione all’interno di un file php.

<body style=”background-image: url(<?php getRandomImage(‘images/sfondo/’); ?>);”>

Il risultato si può ammirare in www.scubadi.it.

 

 

1 Comment

  1. […] Una soluzione per Joomla più elegante di quella che ho usato qualche articolo fa >>> […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *