<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Upload Images</title>
</head>

<body>

<?php

////////////-------------- debut configuration  -----------------//////////

//mettre le mot de passe ici
$motdepasse="1234";
//donner le chemin depuis la racine du serveur vers la galerie, n'oubliez pas le / à la fin ! 
//ex: c:/programme files/easyphp/www/galerie/ (windows)
//ex2:  /home/user/galerie/ (linux)
//Si vous ne savez pas, laissez vide
$chemin="/var/www/html/webbike/pictures/";
//nombre d'images par ligne
$nb_colone=6;
//largeur max de la miniature
$max_largeur=60;
//hauteur max de la miniature
$max_longeur=60;
//version de la librairie GD, si vous ne savez pas, mettez 1.
$gd=2;
//activer les fonctions admin (renommer, suppression) 1:active 0: inactive
//il est conseillé de désactiver si vous donner le mot de passe à une autre personne
$admin=0;


////////////--------------  fin configuration  ----------------//////////
if(!isset($act)) $act="";

switch($act){
	case "upload":
		if($mdp!=$motdepasse) die ("mauvais mot de passe");
		verif_fichier($NomFichier);
		upload();
		break;
	case "thumb":
		thumb($img);
		break;
	case "supprimer":
		if($admin==1)
		supprimer($img);
		else
		echo "la suppression a été désactivé";
		break;
	case "renommer":
		if($admin==1)
		renommer($img,$nom);
		else
		echo "cette fonction est désactivé";
		break;
	default :
		tete();
		afficher_formulaire_upload();
		upload_liste_fichier();
		pied();
		break;
}

function tete(){
	echo"
	<html>
	 <head>
	  <title> Upload Galerie </title> 
	 </head> 
	 <body>";
	}

function pied(){
	echo "
	 </body>
	</html>"; 
	}

///-------------------- liste des fonctions ----------------------////

function renommer($img,$nom){
 global $mdp,$motdepasse; 
	if($mdp==$motdepasse && $nom!="" && isset($nom)){
		if(@rename($img,$nom)){
			echo "l'image <b>$img</b> a été renommé avec succès en : <b>$nom</b>";
		}
		else{
			echo "changement de nom echoué";
		}
		echo "<br /><a href=\".\">retour à la galerie</a>";
	}
	else{
		echo"
		<div style=\"background:#C0C0C0;width:30%;\">
		<b>renommer une image</b><br /><br />
		<form>
		<b>image:</b> <input type=\"text\" name=\"img\" value=\"$img\"><br />
		<b> nouveau nom :</b> <input type=\"text\" name=\"nom\" value=\"$img\"><br />
		<b>mot de passe:</b> <input type=\"password\" name=\"mdp\"><br />
		<input type=\"hidden\" name=\"act\" value=\"renommer\">
		<input type=\"submit\" value=\"envoyer\"><br />
		</form>
		</div>";	
	}
}

function supprimer($img){
 global $mdp,$motdepasse; 
	if($mdp==$motdepasse){
		if(@unlink($img)){
			echo "l'image <b>$img</b> a été supprimé avec succès";
		}
		else{
			echo "suppresion echoué";
		}
		echo "<br /><a href=\".\">retour à la galerie</a>";
	}
	else{
		echo"
		<div style=\"background:#C0C0C0;width:30%;\">
		<b>supprimer une image</b><br /><br />
		<form>
		<b>image:</b> <input type=\"text\" name=\"img\" value=\"$img\"><br />
		<b>mot de passe:</b> <input type=\"password\" name=\"mdp\"><br />
		<input type=\"hidden\" name=\"act\" value=\"supprimer\">
		<input type=\"submit\" value=\"envoyer\"><br />
		</form>
		</div>	";	
	}
}


function alert($message){
	echo "<br /><table align=\"center\" style=\"border:1px solid #C0c0c0;\"><tr><td><h4>$message</h4></td></tr></table>";
}

function verif_fichier($NomFichier){
	if (!preg_match ("/^(.*)\.(txt|rar|zip|exe|jpg|png|gif|jpeg)$/i", $_FILES["NomFichier"]["name"] )) {
 	  exit (alert("fichier non autorisé, on a le droit seulement aux extension jpg,jpeg,png,gif"));
	} 
}

function tab_image(){
//dossiers qui contient les fichiers
	$d=opendir("pictures");
	//scan du dossier
	while($f=readdir($d)){
		if (preg_match ("/^(.*)\.(txt|rar|zip|exe|jpg|png|gif|jpeg)$/i", $f)){
			$is_image=true;
		}
		else {
			$is_image=false;
		}
		if ($f != "." && $f != ".." && $f!="index.php" && $f!=".htaccess" && $is_image)
		$dir[]=$f;
	}
 	closedir();
 	@sort($dir);
	return $dir;
}

function tab_recherche($mot){
	$dir=tab_image();
	$num=count($dir);
 
	$i=0;
	while($i<$num){
		if (preg_match ("/^(.*)$mot(.*)$/i", $dir[$i]))	{
			$tab_recherche[]=$dir[$i];
			//echo $dir[$i];
		}
 		$i++;
	}
	return $tab_recherche;
}

function upload_liste_fichier(){	
	global $admin,$path,$HTTP_HOST,$REQUEST_URI,$nb_colone,$mot;
	
	if(isset($mot) && $mot!="")	{
		$dir=tab_recherche($mot);
		
		echo "<p align=\"center\"><a href=\".\" ><b>retour à la liste</b></a></p>";
		
		$num=count($dir);
		if($num==1 || $num==0 )	{
			echo"<p> $num photo a été trouvé pour le mot <b> $mot </b></p>";
		}
		else {
			echo"<p> $num photos ont été trouvé pour le mot <b>$mot</b></p>";
		}
	}
	else {
		$dir=tab_image();		
		//on compte le nombre de fichier trouvé dans le dossier
 		$num=count($dir);
		if($num==1 || $num==0 )	{
			echo"<p>il y un $num object " ;
		}	
		else {
			echo"<p>il y un $num object " ;
		}
	}
	
 	$i=0;
	
	echo "\n<table border=\"0\" width=\"90%\" align=\"center\"><tr bgcolor=\"#E4E4E4\">";
	$width=100/$nb_colone;
	$nb_ligne=0;
	while($i<$num || $i%$nb_colone!=0) {	
		if($nb_ligne%2==0) {
			$couleur="#F0F0F0";
		}
		else {
			$couleur="#E4E4E4";
		}
		if($i<$num)	{		
		    $dir[$i]=rawurlencode($dir[$i]);
			if (preg_match ("/^(.*)\.gif$/i", $dir[$i])) {
				echo "\n<td width=\"$width%\" ><a href=\"".$dir[$i]."\" target=\"_blank\" rel='opener'>(pas de miniature) <br />".$dir[$i]."</a>";
				if($admin==1) {
					echo"<br /> <a href=\"?act=supprimer&img=$dir[$i]\">supprimer</a>";
					echo"<br /> <a href=\"?act=renommer&img=$dir[$i]\">renommer</a>";
				}
				echo"</td>";
				
			}
			else {
				echo "\n<td width=\"$width%\" ><a href=\"".$dir[$i]."\" target=\"blank\"><img src=\"?act=thumb&img=".$dir[$i]."\" border=\"2\"></a><br />".rawurldecode($dir[$i]);
				if($admin==1) {
					echo"<br /> <a href=\"?act=supprimer&img=$dir[$i]\">supprimer</a>";
					echo"<br /> <a href=\"?act=renommer&img=".$dir[$i]."\">renommer</a>";
				}				
				echo"</td>";
			}
		}
		else {
			echo "\n<td width=\"$width%\">&nbsp;...</td>";
		}
		$i++;
		
		if($i%$nb_colone==0 &&$i!=0) {
			if($i<$num)
			echo "\n</tr>\n<tr bgcolor=\"$couleur\">";
			else
			echo "\n</tr>";
			$nb_ligne++;
		}		
	}
	echo"</table>";
}

function afficher_formulaire_upload(){
		
	echo'<div style="background:#C0C0C0;width:30%;">
	<h4>Formulaire pour uploader une photo</h3>
	<form ENCTYPE="multipart/form-data" method="post" name="upload">	
	<input type="hidden" name="MAX_FILE_SIZE" value="999999" />
	<input name="mdp" type="password"> password<br />
	<input name="NomFichier" type="file"><br />
	<input type="hidden" name="act" value="upload">
	<input type="SUBMIT" VALUE="Upload">
	<input type="reset" name="Cancel " value="Cancel ">
	</form> </div>';
	
	echo'<table align="center"><tr><td><form >	
	<input name="mot" type="text"><input type="SUBMIT" VALUE="recherche">
	</form></td></tr></table> ';

}

function upload() {
	global $HTTP_HOST,$REQUEST_URI,$_FILES,$chemin;
	if (file_exists($_FILES['NomFichier']['name']))	{
		echo"<h3>un fichier comporte deja ce nom</h3>";
	}
	else {	
		if(move_uploaded_file($_FILES["NomFichier"]["tmp_name"],$chemin.$_FILES["NomFichier"]["name"] )) {
			echo '<h3>"'.$_FILES['NomFichier']['name'].'" a été envoyé sur le serveur avec succées</h3>';
			echo '<input type="text" size="72" value="[img]http://'.$HTTP_HOST.$REQUEST_URI.$_FILES['NomFichier']['name'].'[/img]"><br /><br />';
			echo '<img src="http://'.$HTTP_HOST.$REQUEST_URI.$_FILES['NomFichier']['name'].'">';
			echo '<br /> <a href=".">retourner à la galerie</a>';
		}
		else {
		echo "<h3>upload echoué</h3><br />";
		}		
	}
}

function thumb($img) {

	global $gd,$max_largeur,$max_longeur;
	//on demande les dimension de l'image $img:
	$size = getimagesize($img);

	//largeur
	$largeur=$size[0];
	//longeur
	$longeur=$size[1];
	//on regarde si c'est png jpg gif
	$type=$size[2];
	//on regarde si l'image depasse en longueur
	$depasse_long=$longeur-$max_longeur;
	//on regarde si l'image depasse en largeur
	$depasse_large=$largeur-$max_largeur;

	//on charge l'image $img dans $img_big:
	switch($type) {
		case 2: $img_big = imagecreatefromjpeg($img); break;
		case 3: $img_big = imagecreatefrompng($img); break;
		case 1: $img_big = imagecreatefromgif($img);break;
	}

	if($depasse_long>0 || $depasse_large>0)	{
		if($depasse_long>$depasse_large) {		
			$largeur=($max_longeur/$longeur)*$largeur;
			//echo "$largeur=$max_longeur/$longeur)*$largeur";
			$longeur=$max_longeur;
			//150/243*300
		}
		else {
			$longeur=($max_largeur/$largeur)*$longeur;
			$largeur=$max_largeur;	
		}

		//on fait une nouvelle image ayant pour dimension: largeur et hauteur
		
		if($gd=="1") {
			$img_mini = imagecreate($largeur, $longeur);
		}
		else {
			$img_mini = imagecreatetruecolor($largeur, $longeur); 
		}
		
		//on copie l'image d'origine contenu dans img_big dans img_mini en la reduisant a $img_x pour la largeur et $img_y pour la hauteur:
		imagecopyresized($img_mini,$img_big,0,0,0,0,$largeur,$longeur,$size[0],$size[1]);

		switch($type) {
			case 2: 
				//on enverra au navigateur un fichier de type image au format jpeg:
				header("Content-type: image/jpeg");
				//on envoie l'image reduire au navigateur:
				imagejpeg($img_mini); 
				break;
			case 3://on enverra au navigateur un fichier de type image au format jpeg:
				header("Content-type: image/png");
				//on envoie l'image reduire au navigateur:
				imagepng($img_mini); 
				break;
			case 1: //on enverra au navigateur un fichier de type image au format jpeg:
				header("Content-type: image/gif");
				//on envoie l'image reduire au navigateur:
				imagegif($img_mini);
				break;
			default: false ;
		}
	}

	else {
		switch($type) {
			case 2:header("Content-type: image/jpg"); $img_big = imagejpeg($img_big); break;
			case 3:header("Content-type: image/png"); $img_big = imagepng($img_big); break;
			case 1:header("Content-type: image/gif"); $img_big = imagegif($img_big);break;
			default: false ;
		}
	}
}
?>

</body>
</html>
