Kniha návÅ¡tev ECAV VT - Fotogaléria stranky, kam includujete foto.php Pokud chcete zmenit obrazkove sipky signalizujici postup o jednu stranku s nahledy, nahradte prosim obrazky ./img/leva-sipka.png ./img/prava-sipka.png vasimi vlastnimi. Pokud budete mit jakekoliv pripominky, dotazy, upravy, piste prosim na mailbox@tomasparal.cz, ja se je pokusim zapracovat do projektu */ /** nacteni nazvu souboru z adresare do asociativniho pole * $obrazky[pozice][thumbnailname|filename] */ function loadFolder($folder) { $handle = opendir($folder); $j=0; while ($soubor=readdir($handle)) { @$overeni_nahledu=GetImageSize($folder.PREFIX.$soubor); @$overeni=GetImageSize($folder.$soubor); if ( $soubor != "." && $soubor != ".." && $overeni[2]==2 && substr($soubor, 0, strlen(PREFIX)) != PREFIX) { $obrazky[$j][t]=$folder.PREFIX.$soubor; $obrazky[$j][f]=$folder.$soubor; $j++; } } return $obrazky; } /** setridi pole podle nazvu souboru s nahledy */ function sortPictures(&$obrazky) { usort(&$obrazky, 'cmp'); } /** funkce tridici pole s obrazky */ function cmp ($a, $b) { if ($a['t'] == $b['t']) { return 0; } return ($a > $b) ? 1 : -1; } /** vytvori pole obsahujici predchazejici * a nasledujici obrazek soucasne zobrazeneho */ function findPictures(&$obrazky, $cur) { for ($i = 0; $i < count($obrazky); $i++) { if ($obrazky[$i]['f'] == $cur) { return array($obrazky[$i-1]['f'], $cur, $obrazky[$i+1]['f'], $i); } } } /** bezpecnostni opatreni proti utoku * podvrzeni nezadouciho adresare * * POZNAMKA: hodnota parametru @param folder musi by vzdy podadresar * adresare obsahujiciho soubor, kam includujeme foto.php, * tedy v dane ceste se nesmi objevit retezec ".." */ function testFolder($folder) { if (!(strpos($folder, '..') === false)) { die('

Podvrzená hodnota parametru FOLDER èi IMG v URL.

'); } } // ---------------------------------------- //zacatek generovani fotogalerie echo "
\n"; $setting = "config.xml"; //nastaveni souboru s nastavenim //nastaveni adresare s fotkama if (isset($_REQUEST["img"])) { $folder = dirname($_REQUEST["img"]); } else { $folder = $_REQUEST["folder"]; } //pokud je relativni cesta k adresari bez koncoveho lomitka, //tak ho tam pridej if (substr($folder, strlen($folder)-1)!="/") { $folder = $folder."/"; } //otestuje folder proti podvrzeni cesty testFolder($folder); //nacteni konstant z xml souboru include("./xml.php"); //nacteni xml parseru @$chyba = config($folder.$setting); //pokud nebyl config.xml nalezen, tak nastav hodnoty explicitne //implicitni nastaveni promenych z config.xml (!defined("THUMB_NUM"))?define("THUMB_NUM","9"):""; //9 nahledu na stranku (!defined("ROW_THUMB_NUM"))?define("ROW_THUMB_NUM","3"):""; // 3 nahledy na radku (!defined("PREFIX"))?define("PREFIX","tn_"):""; //prefix souboru s nahledy (!defined("DESC_FILE"))?define("DESC_FILE","popisky.txt"):""; //nazev souboru s popiskami (!defined("SHOW_DESC"))?define("SHOW_DESC","1"):""; // zobrazovat popisky u fotek (!defined("SHOW_THUMB_DESC"))?define("SHOW_THUMB_DESC","1"):""; // zobrazovat popisky u nahledu (!defined("IMPLICIT_DESC"))?define("IMPLICIT_DESC","obrázek"):""; // implicitni popiska (!defined("GALERY_NAME"))?define("GALLERY_NAME",""):""; // nazev galerie (!defined("DATE"))?define("DATE",""):""; // datum vytvoreni fotek (!defined("AUTHOR"))?define("AUTHOR",""):""; // autor fotek (!defined("NOTE"))?define("NOTE",""):""; //poznamka k fotogalerii (!defined("CSS"))?define("CSS","0"):""; //vlozit soubor s definici kaskadovych stylu 0,1 //soubor se CSS, to bych ale odstranil a dal primo do //hlavni stranky do \n"; } // pokud soubor s popiskama neexistuje tak nepopisuj if (file_exists($folder.DESC_FILE)) { $popisovat = 1; } else { $popisovat = 0; } // nacteni popisku ze souboru do asociativniho pole, //index = nazev souboru if ($popisovat == 1) { $popisky_pole = file ($folder.DESC_FILE); for ($i=0; $i\n"; echo (GALLERY_NAME != "" && defined("GALLERY_NAME"))?"

".GALLERY_NAME."

\n":"\n"; echo (NOTE != "" && defined("NOTE"))?"

".NOTE."

\n":"\n"; echo (AUTHOR != "" && defined("AUTHOR"))?"

Autor: ".AUTHOR."

\n":"\n"; echo (DATE != "" && defined("DATE"))?"

Datum: ".DATE."

\n":"\n"; echo "
\n"; // pokud neni zobrazen velky obrazek, generuj nahledy if (!isset($img)) { //nacte a setridi pole obrazku ze zadaneho adresare $obrazky = loadFolder($folder); sortPictures($obrazky); if (!isset($dalsi)) { $dalsi = THUMB_NUM; //pocatecni iniciace } echo "
\n"; $i = $dalsi - THUMB_NUM; // i pocita kolikaty obrazek se ma zobrazit $thumb_radek = 1; // inicializace poctu nahledu na radku // generuje radky s nahledy echo "
\n"; while ($i=0) { if ($thumb_radek <= ROW_THUMB_NUM) { $path = basename($obrazky[$i][f]); if ($description["$path"]=="") { $title=IMPLICIT_DESC; $popisovat=0; } else { $title=$description["$path"]; $popisovat=1; } echo "
\n"; echo "\n"; echo "\"$title\"\n"; if (SHOW_THUMB_DESC && $popisovat) { echo "

$title

\n"; } echo "
\n"; $i++; $thumb_radek++; } else { echo "
 
\n"; echo "
\n"; echo "
\n"; $thumb_radek = 1; } } if (THUMB_NUM/ROW_THUMB_NUM != 0) { echo "
 
\n"; echo "
\n"; } echo "
\n"; echo "
 
\n"; //navigace echo "
\n"; $zobrazit_zpet = $dalsi - THUMB_NUM; if ($zobrazit_zpet > 0) { echo "
\n"; echo "

\n"; echo "\n"; echo "

\n"; echo "
"; } $zobrazit_tam = $dalsi + THUMB_NUM; if ($zobrazit_tam < count($obrazky)+ THUMB_NUM) { echo "
\n"; echo "

\n"; echo "\n"; echo "

\n"; echo "
"; } echo "
 
\n"; echo "
\n"; echo "
"; if ($dalsi > THUMB_NUM) { echo "\"Levá"; } for ($i=THUMB_NUM, $str=1; $i$str"; } if ($i < count($obrazky)) { echo "|"; } } if ($dalsi < count($obrazky)) { echo "\"Levá"; } echo "
"; //################################################################################################ // zobrazeni plneho obrazku } else { //nacte a setridi pole obrazku ze zadaneho adresare $obrazky = loadFolder($folder); sortPictures($obrazky); //vytvori podobrazkovou navigaci $navigace = findPictures($obrazky, $img); //vytvori odkaz na seznam nahledu $dalsi = $navigace["3"]; $dalsi = ($dalsi==0)?1:$dalsi; while ($dalsi%THUMB_NUM != 0) { $dalsi++; } // nacteni popisku pro velky obrazek $path = basename($img); if ($description[$path]=="") { $title=IMPLICIT_DESC; $popisovat=0; } else { $title=$description[$path]; $popisovat=1; } echo "
\n"; echo "

\n\"$title\"\n

\n"; if ($popisovat && SHOW_DESC) { echo "
\n"; echo "

$title

\n"; echo "
\n"; } echo "
\n"; //zobrazi navigacni tlacitka echo "
\n"; if (isset($navigace[0])) { echo "
\n"; echo "\n"; echo "\n"; echo "
\n"; } echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; if (isset($navigace[2])) { echo "
\n"; echo "\n"; echo "\n"; echo "
\n"; } echo "
"; } //############################################################################################ echo "
 
\n"; echo "\n"; ?>