<?include("header.php");echo "</div></div>";$image_regex = '/\.(jpg|jpeg)$/i'; // Regulært uttrykk for å matche jpg-bilder$index_regex = '/^index\.html$/i'; // Regulært uttrykk for å matche index-filen$oppdrag_dir = 'oppdrag/';// maks bredde og høyde på thumbnails$max_w = 60;$max_h = 63;// vis galleri i mappen $directoryfunction show_gallery ($directory) { show_index ($directory); echo "<div id=bildegalleri>"; //echo "<div id=mainimage>"; show_first ($directory, $_GET["file"]); //echo "</div>"; echo "<div id=\"thumbs\">"; show_thumbnails ($directory); echo "</div>"; echo "</div>";}function check_path ($path) { if ((strpos ($path, "../") === false) && (strpos ($path, "/") !== 0)) return true; return false; }function show_index ($directory) { global $index_regex; global $oppdrag_dir; $side = $_GET['s']; // Inkluder $side hvis den finnes, ellers let etter index.html i // gallerikatalogen if ($side && check_path($side) && !strpos($side, "/")) { include ($oppdrag_dir . $side); return; } // Sjekk om katalogen finnes og at den er en katalog if (is_dir($directory)) { // Åpne katalogen if ($dh = opendir($directory)) { // Les filer helt til vi finner en bildefil while (($file = readdir($dh)) !== false) { if (preg_match ($index_regex, $file)) { echo "<div id=\"tekst\">"; include ($directory ."/". $file); echo "</div>"; } } } }}// vis "hovedbildet" (det første i fillistingen) i mappen $directory// (eller søk etter og bruk $filename hvis den er satt)function show_first ($directory, $filename="") { global $image_regex; // Sjekk om katalogen finnes og at den er en katalog if (is_dir($directory)) { // Åpne katalogen if ($dh = opendir($directory)) { // Les filer helt til vi finner en bildefil while (($file = readdir($dh)) !== false) { if (preg_match ($image_regex, $file)) { if (!$filename || $filename == $file) { echo "<img class=\"bilde_ramme\" src=\"$directory/$file\" alt=\"$directory\"/>"; return; } } } } }}// vis thumbnails i en mappe (lag dem hvis de ikke finnes)function show_thumbnails ($directory) { global $image_regex, $thumb_script, $index_regex; $start = (int)$_GET['start']; $max = $start + 18; // forandre antall bilder per side her $nesteforrige = ""; // Les mappe if (is_dir($directory)) { if ($dh = opendir($directory)) { if (!is_dir ($directory ."/thumbs")) mkdir ($directory ."/thumbs"); $first_image = true; $counter = 0; while (($file = readdir($dh)) !== false) { if (preg_match ($image_regex, $file)) { $counter++; if ($counter <= $start) continue; if ($counter > $max) { $new_uri = $SCRIPT_NAME . "?"; $new_uri .= 'dir=' . $_GET['dir']; if ($_GET['file']) $new_uri .= '&file=' . $_GET['file']; if ($_GET['s']) $new_uri .= '&s=' . $_GET['s']; $new_uri .= '&start=' . ($start + 18); $nesteforrige .= '<a href="'.$new_uri.'" class="p">Neste</a>'; break; } // Sjekk om thumbnail eksisterer if (!file_exists ($directory."/thumbs/".$file)) gen_thumb ("$directory/$file", $directory."/thumbs/".$file); echo "<span>"; echo "<a href=\"galleri.php?dir=$directory&s=".$_GET['s']."&file=$file&start=$start\">\n\t"; echo "<img class=\"thumb_ramme\" onmouseover=\"this.className='thumb_ramme_orange'\"". "onmouseout=\"this.className='thumb_ramme'\"". "src=\"".$directory."/thumbs/".$file."\" alt=\"$file\"/>\n"; echo "</a></span>\n\n"; if(($counter % 3) == 0) { echo "<br />"; } } } if ($start > 0) { $new_uri = $SCRIPT_NAME . "?"; $new_uri .= 'dir=' . $_GET['dir']; if ($_GET['file']) $new_uri .= '&file=' . $_GET['file']; if ($_GET['s']) $new_uri .= '&s=' . $_GET['s']; $new_uri .= '&start=' . ($start - 18); $nesteforrige = '<a href="'.$new_uri.'">Forrige</a> ' . $nesteforrige; } echo "<p>$nesteforrige</p>"; closedir($dh); } }}// Genererer thumbnail av $from_file og lagrer den i $to_file. Antar// at alle bildene er jpg-bilderfunction gen_thumb ($from_file, $to_file) { global $max_w, $max_h; $image = imagecreatefromJPEG ($from_file); $w = imageSX ($image); $h = imageSY ($image); // Den minste av disse er aspektet man skal bruke $aspect_x = $max_w / $w; $aspect_y = $max_h / $h; $aspect = ($aspect_x < $aspect_y) ? $aspect_x : $aspect_y; // Lage kvadratiske thumbnails => driter i høyde/bredde-ting :) $new_w = 60; // $aspect * $w; $new_h = 60; // $aspect * $h; $offset_top = 0; $offset_left = 0; // Finn offset for å sentrere bildene :) if ($h > $w) { $offset_top = ($h-$w)/2; $h = $w; } else { $offset_left = ($w-$h)/2; $w = $h; } $to_image = ImageCreateTrueColor($new_w, $new_h); imagecopyresampled ( $to_image, $image, 0, 0, $offset_left, $offset_top, $new_w, $new_h, $w, $h ); imagejpeg ($to_image, $to_file); imagedestroy ($image); imagedestroy ($to_image);}//// Dette kan fjernes eller puttes i en annen fil//$directory = $_GET['dir'];$filename = $_GET['file'];// VIKTIG!// ~~~~~~~// Denne testen er viktig å ha med, ellers kan folk begynne å snoke// rundt i mapper de ikke skal snoke rundt i.if (!check_path ($directory) || !check_path($filename)) { echo "<p class=\"warning\">Error: ugyldig gallerinavn eller filnavn</p>"; } else { show_gallery ($directory); }include("footer.php");?>