<?php

$fotomap = "fotoalbum"; //map waar de foto's van het fotoalbum komen 
$zipnaam = "fotozip"; //tijdelijke naam van het zipbestand op de server
$jaarnu = date('Y'); //vaststellen welk jaar het nu is
$scriptnaam = $_SERVER['PHP_SELF']; //hoe het scritp heet voor het verzenden van het formulier

//de map $fotomap maken als die er nog niet is.
if (!is_dir($fotomap)) {
	mkdir($fotomap, 0777, True);
	echo "De map $fotomap is gemaakt omdat die er nog niet was";
}

//ZIP-Unpack functie maken
function unpackZip($map,$zipnaam) {
	//Het zipbestand openen
	if ($zip = zip_open($map.$zipnaam.".zip"))
	{
		if ($zip) //als het openen is gelukt:
		{
			while ($zip_entry = zip_read($zip)) //zolang er nog wat in de zip zit, bekijk het
			{
				if (zip_entry_open($zip,$zip_entry,"r")) //open de map
				{
					$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
					$map_name = dirname(zip_entry_name($zip_entry)); //de mapnaam van elk bestandje
					//Het puntje ( . ) er uit filteren
					if ($map_name != ".")
					{ //nu zijn alle mappen nog over behalve het puntje
						foreach ( explode("/",$map_name) as $k)
						{
							$map_op = $map . $k;
							if (is_file($map_op)) unlink($map_op);
							if (!is_dir($map_op)) mkdir($map_op);
							$map_op = $map_op . "/" ;
						}
					}
					$zipentry = zip_entry_name($zip_entry); //de mappen+bestandsnamen
					$maptot = $map.$zipentry;
					if(!is_dir($maptot)) {
						$fp=fopen($maptot,"w");
					}
					fwrite($fp,$buf);
						/*-----------------------------------------------------
						|		Bestanden filteren		|
						------------------------------------------------------*/
		                $extensie = mime_content_type($maptot);
						$inmap = str_replace($map,"", $maptot);
						if (is_file($maptot))
						{
							if($extensie == 'image/jpeg' || $extensie == 'image/gif' || $extensie == 'image/png')
							{
							}else{
								echo "<br />Delete <b>".$inmap."</b>. Bestand is geen geldig of ondersteund bestand!";
								unlink($maptot);
							}
						}
						/*---------------------------------------------------*/
					zip_entry_close($zip_entry);
				}else{
					return false;
				}
			}
			zip_close($zip); //zip sluiten
		}else{
			return false;
		}
		return true;
	}
}


if (isset($_POST['submit'])) //als er op de submit knop is gedrukt, ga verder
{

    $filename = $_FILES['zipbestand']['name']; //de bestandsnaam van het geuploade bestand
    $extentie = explode(".", "$filename"); //haal de extentie uit de filenaam
    $extentie = strtolower($extentie[1]); //maak de extentie lowercase
    $uploadname = $zipnaam.".zip"; //zo gaat het zipbestand heten na de upload
    
    $jaar = $_POST['jaar'];
    $mapjaar = "Jaar ".$jaar;
    $mapmap = $_POST['map'];
    $map = "".$fotomap."/".$mapjaar."/".$mapmap."/"; //de map waar de foto's in komen
    if (!empty($mapmap)) {
		//kijken of $jaar wel een getal is en of jaar misschien in de toekomst gegeven is.
	    if (is_numeric($jaar) and ($jaar <= $jaarnu) and ($jaar > 1900))
	    {
	        //als de extentie zip is ga verder, anders zeg dat je alleen .zip kan uploaden
	        if ($extentie == "zip")
	        {
	            //Wat als $mapjaar nog niet bestaat?
	            if (file_exists($fotomap."/".$mapjaar) == FALSE)
	            {
	                //Dan maak je $mapjaar toch gewoon?!
	                echo "De map <b>$mapjaar</b> bestaat nog niet. Hij wordt nu gemaakt";
	                if (mkdir($fotomap."/".$mapjaar, 0777, True)) {
	                    $maakmapjaar = "gelukt";
	                }
	            }else{
	                //als de map al wel bestond, dan is het ook dus ook gelukt
	                echo "De map <b>$mapjaar</b> bestaat al";
	                $maakmapjaar = "gelukt";
	            }
	                if ($maakmapjaar == "gelukt") //als de map dan eindelijk bestaat, ga dan verder. Ander zeg dat het is mislukt
	                {
	                    //als het maken van de jaarmap is gelukt, kijk dan of de map $mapmap al bestaat. Als het is gelukt, zeg het en ga verder, anders zeg dat het is mislukt.
	                    if (file_exists($fotomap."/".$mapjaar."/".$mapmap) == FALSE)
	                    {
	                        echo "<br />De map <b>$mapmap</b> bestaat nog niet. Hij wordt nu gemaakt";
	                        if (mkdir($fotomap."/".$mapjaar."/".$mapmap)) {
	                            $maakmapmap = "gelukt";
	                        }
	                    }else{
	                        echo "<br />De map <b>$mapmap</b> bestaat al";
	                        $maakmapmap = "gelukt";
	                    }
	                    if ($maakmapmap == "gelukt")
	                    {
	                        //het maken van de  map $mapmap is gelukt (of hij bestond al), dus verplaats nu het bestand van de temporary folder naar de map $map
	                        if (is_uploaded_file($_FILES['zipbestand']['tmp_name']))
	                        {
	                            move_uploaded_file($_FILES['zipbestand']['tmp_name'], "$map" . $uploadname); 
	                            echo  "<br />Het bestand <b>$filename</b> is geupload onder de naam <b>$uploadname</b>"; 

	                            $unpack = unpackZip ($map,$zipnaam); //het zipbestand uitpakken
	                            if ($unpack == TRUE) { //als het uitpakken is gelukt.....
									echo $message;
									echo  "<br />De foto's zijn uitgepakt en staan nu in het fotoalbum!";
	                            }else{
	                                echo "<br />Het uitpakken is mislukt!";
	                            }
	                            if (unlink("".$map."".$zipnaam.".zip")) { echo  "<br />Het zip-bestand is gedelete!";  } //verwijder het zip bestand, want die heb je niet meer nodig :)
	                        }else{
	                            echo "<br />Er is iets mis gegaan met het verplaatsen";
	                        }
	                    }else{
	                        echo "<br />Het maken van de map $mapmap is mislukt!";
	                    }
	                }else{
	                        echo "<br />Het maken van de jaarmap $mapjaar is mislukt!";
	                }
	        }else{
	            echo "Je hebt geen .Zip bestand opgegeven! Je kan alleen .Zip bestanden uploaden!"; 
	        }
	    }else{
	        echo "\"$jaar\" is geen geldig jaartal! Je moet bij \"jaar\" wel een jaartal invullen!";
	    }
	}else{
		echo "Je moet bij \"Map\" wel een gebeurtenis invullen!";
	}
}

//formulier laten zien
echo "<form method=\"post\" action=\"".$scriptnaam."\" enctype=\"multipart/form-data\">
    <p style=\"text-align: left;\">Jaar:
    <input type=\"text\" name=\"jaar\" maxlenght=\"4\" value=\"".$jaarnu."\"/><br />
    Map: 
    <input type=\"text\" name=\"map\" /> <small>(De gebeurtenis)</small><br />
    Zip-bestand: <small>(Mappen in het .zip bestand worden submappen!)</small><br />
    <input type=\"file\" name=\"zipbestand\" size=\"40\" /> <br />
    <input type=\"submit\" value=\"Submit\" name=\"submit\"/>
    </p>
</form>";

echo "<p>Deze mappen staan nu in het fotoalbum:<br />";
$baseDir = $_SERVER['DOCUMENT_ROOT']."/".$fotomap."/";

$dir = scandir($baseDir);
$dir = array_flip($dir);
unset($dir['.'], $dir['..']);
$dir = array_flip($dir);

for ($m=2; $dir[$m]; $m++) {
	//if(is_dir($dir)) {
		echo "<br />> ".$dir[$m]."<br />";
	    $dir2 = scandir($baseDir."".$dir[$m]."/");
	    $dir2 = array_flip($dir2);
	    unset($dir2['.'], $dir2['..']);
	    $dir2 = array_flip($dir2);
	    for ($l=2; $dir2[$l]; $l++) {
			echo "----> ".$dir2[$l]."<br />";
	    }
	//}
}
echo "</p>";
?>