Kniha návÅ¡tevECAV VT - Fotogaléria
/** foto.php
Autor: Tomas Paral, mailbox@tomasparal.cz, http://tomasparal.cz
Verze: 2.5
Datum: 18/2/2005
Licence: GPL
Instalace: naincludujte soubor foto.php do vasi stranky, tam, kde chcete,
aby se zobrazovaly fotky. Tuto stranku pak volejte s parametrem
$folder, ktery se rovna relativni ceste adresare s obrazky. Adresar s
obrazky musi byt subadresarem adresare, kam includujeme tento soubor,
tedy soubor foto.php
Soucasti instalace je take soubor config.xml, ktery umistete do adresare
s obrazky a nahledy a ktery musi mit pozadovanou strukturu viz. config.xml v archivu
s odradkovanym poslednim radkem.
V adresari s obrazky muze byt take soubor s popiskami, jeho nazev se specifikuje
v config.xml, implicitne je popisky.txt se strukturou nazev souboru bez
pripony;popiska viz. popisky.txt v archivu
V adresari s obrazky se take vyskytuje soubor s CSS s nazvem fotogalerie.css,
ale pokud formatovani nastavovane v tomto souboru bude vzdy
stejne jako ze by asi melo, tak bych to dal primo do
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('
\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"))?"