Ik had voor mijn website een fotoalbum nodig... Afin, ik ga iets schrijven. Binnen enkele seconden staat er iets wat werkt. Leuk... Maar je wilt toch wat meer, ditjes, datjes etc etc

Wat doe je dan als programmeur zonder tijd? Juist, je pakt een functie van Eris (die upload functie is van hem), flikkerd wat if/elsjes erin samen met wat $_GET's en je bent klaar.

Een mooi goed werkend en automatisch fotoalbum geval. Zie hier. Het is een ranzig script onder de motorkap, echter werkt hij wel goed :+. Na een weekje krijg je wat vragen van mensen die hetzelfde willen, maar ik durf het script niet openbaar te maken want het is eigenlijk gewoon te ranzig dat ik mij ervoor schaam. Punt is dat ik er geen tijd voor heb om hem nu af te maken.

Dus mijn vraag is simpel... Is er iemand die niks te doen heeft om mijn script af te maken? Te verbeteren, optimaliseren, mooier te maken etc, Mijn voorwaarde is dat jij of ik hem daarna hier in de script database kunnen plaatsen met beide credits ;).

Wat bied ik? Een auto van de zaak en een dagje op mijn jacht. Als niemand er zin in heeft dan begrijp ik dat, en maak ik hem volgende week zelf gewoon af en dan hebben mensen nu pech :).

<?php

echo '<h1>Fotoalbum</h1>';

error_reporting(E_ALL);

$directories = array();
$bestanden = array();
$rootdir = 'C:/Server/www/i-cey/';
$map = 'fotoalbum/';

//functies

function arraySchoonmaken($array) {
foreach ($array as $index => $value) {
if (empty($value)) unset($array[$index]);
}
return $array;
}

function stripExtensie($bestand)
{
$ext = strrchr($bestand, '.');
if($ext !== false)
{
$bestand = substr($bestand, 0, -strlen($ext));
}
return $bestand;
}

function upload($tempfile,$dir,$file,$height,$width){
if(!$dim = getimagesize($tempfile)){
$error[0] = false;
$error[1] = -2;
$error[2] = 'No image file';
return $error;
}else{

//0 = width
//1 = height
//2 = type
//we want to calculte if the bigger then the maxsize if not keep it easy --> upload it
if($dim[0] < $width && $dim[1] < $height){
//move upload file
if(!file_exists($dir.$file)){
if(@move_uploaded_file($tempfile,$dir.$file)){
$error[0] = true;
$error[1] = 1;
$error[2] = 'File uploaded';
return $error;
}else{
$error[0] = false;
$error[1] = -3;
$error[2] = 'Error during move upload file';
return $error;
}
}else{
$error[0] = false;
$error[1] = -4;
$error[2] = 'File allready exsits';
return $error;
}
}else{
//we have to resize :(
if($dim[0] > $dim[1]){
$prop = $width / $dim[0];
$dims[0] = $width;
$dims[1] = round($dim[1] * $prop);
}else{
$prop = $height / $dim[1];
$dims[1] = $height;
$dims[0] = round($dim[0] * $prop);
}
//we know the new size
if($dim[2] == 2){
if(!$mimage = @imagecreatefromjpeg($tempfile)){
$error[0] = false;
$error[1] = -4;
$error[2] = 'Error';
return $error;
}
}
//we know the new size
if($dim[2] == 1){
if(!$mimage = @imagecreatefromgif($tempfile)){
$error[0] = false;
$error[1] = -4;
$error[2] = 'Error';
return $error;
}
}
//we know the new size
if($dim[2] == 3){
if(!$mimage = @imagecreatefrompng($tempfile)){
$error[0] = false;
$error[1] = -4;
$error[2] = 'Error';
return $error;
}
}
$im = @imagecreatetruecolor($dims[0],$dims[1]);
@imagecopyresampled($im, $mimage, 0, 0, 0, 0, $dims[0], $dims[1], $dim[0], $dim[1]);

if(!file_exists($dir.$file)){
if($dim[2] == 2){
if(!@imagejpeg($im,$dir.$file,70)){
$error[0] = false;
$error[1] = -5;
$error[2] = 'Imagecreate error';
return $error;
}else{
$error[0] = true;
$error[1] = 2;
$error[2] = 'Resized';
return $error;
}
}
if($dim[2] == 1){
if(!@imagegif($im,$dir.$file)){
$error[0] = false;
$error[1] = -5;
$error[2] = 'Imagecreate error';
return $error;
}else{
$error[0] = true;
$error[1] = 2;
$error[2] = 'Resized';
return $error;
}
}

if($dim[2] == 3){
if(!@imagepng($im,$dir.$file)){
$error[0] = false;
$error[1] = -5;
$error[2] = 'Imagecreate error';
return $error;
}else{
$error[0] = true;
$error[1] = 2;
$error[2] = 'Resized';
return $error;
}
}
}else{
$error[0] = false;
$error[1] = -4;
$error[2] = 'File allready exsits';
return $error;
}
imagedestroy($im);
imagedestroy($mimage);
//end resize
}

}
}


function geefExtensie($bestand)
{
return strtolower(end(explode('.',$bestand)));
}

if(isset($_GET['map']) && !empty($_GET['map']))
{
$map = str_replace(array(".", "\\", ":"), " ", $_GET['map']).'/';
}

$mappen = arraySchoonmaken(explode('/', $map));

$aantal = count($mappen)+1;

for($z = 1; $z < $aantal; $z++)
{
$temp = NULL;
for($y = 0; $y < $z; $y++)
{
if($mappen[$y] == 'fotoalbum')
{
$temp .= $mappen[$y];
}else{
$temp .= '/'.$mappen[$y];
}
}
echo ' >> <a href="?pagina=fotoalbum&map='.$temp.'">'.ucfirst($mappen[$z-1]).'</a>';
}

echo '<hr>';

if(@$dir = opendir($rootdir.$map))
{
while (false !== ($file = readdir($dir)))
{
if ($file != "." && $file != "..")
{
if(is_file($map.$file))
{
$extensie = geefExtensie($file);
$extensies = array('png','jpg','jpeg','gif');

if(in_array($extensie,$extensies))
{
$bestanden[] = $file;
}
}

if(is_dir($map.$file))
{
if($file != 'thumbs' && $file != 'thumbsgroot')
{
$directories[] = $file;
}
}
}
}
closedir($dir);
}else{
echo 'Sorry, deze directory kan ik niet openen!';
exit;
}

if(!empty($directories))
{
foreach($directories as $directory)
{
echo '<img src="afbeeldingen/folder.gif" class="centreren"><a href="?pagina=fotoalbum&map='.$map.$directory.'">'.ucfirst($directory).'</a><br>';
}
echo '<hr>';
}

if(!isset($_GET['foto']))
{
if(!empty($bestanden))
{
if(isset($_GET['paginanr']))
{
if(is_numeric($_GET['paginanr']))
{
$paginanr = $_GET['paginanr'];
}
}else{
$paginanr = 0;
}

$aantalfotos = count($bestanden);

if($aantalfotos > 10)
{
echo '<div style="text-align: center; margin: 15px;">';

if ($paginanr > 0)
{
echo '<a href="?pagina=fotoalbum&amp;paginanr='.($paginanr - 1).'&amp;map='.substr_replace($map,"",-1).'" title="Ga naar pagina '.($paginanr).'">&lt;&lt; Vorige</a>';
}else{
echo '&lt;&lt; Vorige';
}

echo '&nbsp;&nbsp;&nbsp; Pagina '.ceil($paginanr+1).' van '.ceil($aantalfotos/10).' &nbsp;&nbsp;&nbsp;';

if ($paginanr < floor(($aantalfotos -1)/10))
{
echo '<a href="?pagina=fotoalbum&amp;paginanr='.($paginanr + 1).'&amp;map='.substr_replace($map,"",-1).'" title="Ga naar pagina '.($paginanr + 2).'">Volgende &gt;&gt;</a><br>';
}else{
echo 'Volgende &gt;&gt;<br>';
}

echo '</div>';
}

for($fotonr = $paginanr * 10; $fotonr <= (($paginanr * 10) + 9) && $fotonr < count($bestanden); $fotonr ++ )
{
if(!is_dir($map.'thumbs/'))
{
mkdir($map.'thumbs/',0755);
}

if(!file_exists($map.'thumbs/'.$bestanden[$fotonr]))
{
$test = upload($map.$bestanden[$fotonr],$map.'thumbs/',$bestanden[$fotonr],100,100);
}

if(file_exists($map.'thumbs/'.$bestanden[$fotonr]))
{
echo '<a href="?pagina=fotoalbum&amp;map='.substr_replace($map,"",-1).'&amp;foto='.($fotonr+1).'" style="border: 0px;"><img src="'.$map.'thumbs/'.$bestanden[$fotonr].'" class="thumbs"></a>';
}
}
}else{
if(empty($directories))
{
echo '<p>Sorry, deze map is leeg!</p>';
}
}
}else{
if(is_numeric($_GET['foto']))
{
$fotonr = $_GET['foto'];

if(file_exists($map.$bestanden[($fotonr-1)]))
{
echo '<div style="text-align: center; margin: 15px;">';

if ($fotonr > 1)
{
echo '<a href="?pagina=fotoalbum&amp;map='.substr_replace($map,"",-1).'&amp;foto='.($fotonr-1).'" title="Ga naar foto '.($fotonr - 1).'">&lt;&lt; Vorige</a>';
}else{
echo '&lt;&lt; Vorige';
}

echo '&nbsp;&nbsp;&nbsp;Foto '.$fotonr.' van '.count($bestanden).'&nbsp;&nbsp;&nbsp;';

if ($fotonr < count($bestanden))
{
echo '<a href="?pagina=fotoalbum&amp;map='.substr_replace($map,"",-1).'&amp;foto='.($fotonr+1).'" title="Ga naar foto '.($fotonr + 1).'">Volgende &gt;&gt;</a><br>';
}else{
echo 'Volgende &gt;&gt;<br>';
}

echo '</div>';

if(!is_dir($map.'thumbsgroot/'))
{
mkdir($map.'thumbsgroot/',0755);
}

if(!file_exists($map.'thumbsgroot/'.$bestanden[($fotonr-1)]))
{
$test = upload($map.$bestanden[($fotonr-1)],$map.'thumbsgroot/',$bestanden[($fotonr-1)],400,385);
}

if(file_exists($map.'thumbsgroot/'.$bestanden[($fotonr-1)]))
{
echo '<div style="text-align: center;"><a href="'.$map.$bestanden[($fotonr-1)].'" target="_blank" style="border: 0px;"><img src="'.$map.'thumbsgroot/'.$bestanden[($fotonr-1)].'" class="groot" title="'.$bestanden[($fotonr-1)].'"></a>';
$afmeeting = getimagesize($map.$bestanden[($fotonr-1)]);
echo '<br><br><a href="'.$map.$bestanden[($fotonr-1)].'" target="_blank">Origineel ('.$afmeeting[0].' x '.$afmeeting[1].')</a></div>';
}
}
}
}

?>
Ik zal er wel even naar kijken ;)...

Zal er wel even een nieuwe class van mij in moeten verwerken die wat beter werkt...
Leef je uit ;). Het werkt opzich prima, volgens mij ook veilig. Maar het is gewoon te ranzig om door andere gebruikt te worden ;).
Fotoboek ziet er wel goed uit opzich.. (Afgezien van de inhoud dan héa op jouw site ;-) )
Echt handig vind ik hem niet, ik kan niet terug naar de hoofdpagina, en geen grote fotos aanklikken. Verder zie ik geen verdeling met het aantal paginas...

Reageren