========== ORIGEN =========== GENERATOR STATICKYCH FOTOGALERII - ZDROJOVY KOD PHP AUTOR: Daniel Stastny 2006 (pokud neni v komentari uvedeno jinak - resp. vypujcil jsem si jednu verejne dostupnou PHP funkci od Davida Grundla) Pozn. v r. 2009 opraveny nalezene chybky, generator nyni funguje bez problemu Generator tvori tyto soubory: - pridat.php - pridani fotogalerie - smaz.php - mazani fotogalerie - inc.html.php - design fotogalerie - edit.php - nastaveni hesla "_","\xc3\xa1"=>"a","\xc3\xa4"=>"a","\xc4\x8d"=>"c","\xc4\x8f"=>"d","\xc3\xa9"=>"e","\xc4\x9b"=>"e","\xc3\xad"=>"i","\xc4\xbe"=>"l","\xc4\xba"=>"l","\xc5\x88"=>"n","\xc3\xb3"=>"o","\xc3\xb6"=>"o","\xc5\x91"=>"o","\xc3\xb4"=>"o","\xc5\x99"=>"r","\xc5\x95"=>"r","\xc5\xa1"=>"s","\xc5\xa5"=>"t","\xc3\xba"=>"u","\xc5\xaf"=>"u","\xc3\xbc"=>"u","\xc5\xb1"=>"u","\xc3\xbd"=>"y","\xc5\xbe"=>"z","\xc3\x81"=>"A","\xc3\x84"=>"A","\xc4\x8c"=>"C","\xc4\x8e"=>"D","\xc3\x89"=>"E","\xc4\x9a"=>"E","\xc3\x8d"=>"I","\xc4\xbd"=>"L","\xc4\xb9"=>"L","\xc5\x87"=>"N","\xc3\x93"=>"O","\xc3\x96"=>"O","\xc5\x90"=>"O","\xc3\x94"=>"O","\xc5\x98"=>"R","\xc5\x94"=>"R","\xc5\xa0"=>"S","\xc5\xa4"=>"T","\xc3\x9a"=>"U","\xc5\xae"=>"U","\xc3\x9c"=>"U","\xc5\xb0"=>"U","\xc3\x9d"=>"Y","\xc5\xbd"=>"Z"); return strtolower(strtr($text, $preklad)); } function vstupni_formular() { // uvodni vstupni formular - policko pro heslo a cyklus pro vygenerovani formulare pro zadani poctu fotografii echo "
Heslo:
Název fotogalerie:
Zadej počet vkládaných fotografií:
"; } function vstupni_formular_fotogalerie($pocet_policek, $nastaveni_databaze) { // formular nebude odesilat pouze textova data echo "
"; echo "
Název fotogalerie:
Název složky s fotografiemi:
(Bez háčků, čárek a mezer!)
Styl
Úvodní popovídání
Patička:
"; for ($i = 1; $i <= $pocet_policek; $i ++) { // zajisteni stridani barev tabulky echo ($i % 2) ? "\n
Foto
Popis$i
" : "\n
Foto
Popis$i
"; } echo "
"; } function zapis_hlavicka($soubor) { fwrite($soubor, " "); } function zapis_css($soubor) { fwrite($soubor, ""); } function zapis_zahlavi($soubor) { if (empty($_POST["nazev_fotogalerie"])) { $nazev_galerie = "Fotogalerie"; } else { $nazev_galerie = $_POST["nazev_fotogalerie"]; } if (empty($_POST["popovidani"])) { $uvod = ""; } else { $uvod = "

".htmlspecialchars(nl2br($_POST["popovidani"]))."

"; } fwrite($soubor, "".$nazev_galerie."\n\n

".$nazev_galerie."

".$uvod."\n\n"); } function zapis_hlavni($soubor, $soubor2, $slozka_fotografii) { $policka = $_POST["pocet_policek"]; for ($i = 0; $i < $policka; $i ++) { $jmeno_fotky = basename($_FILES['fotka']['name'][$i]); // popisek fotky if ($_POST["popisek"][$i]) { $alt_fotky = $_POST["popisek"][$i]; $popisek_fotky = $_POST["popisek"][$i]; } else { $alt_fotky = $jmeno_fotky; $popisek_fotky = ""; } $cislo = $i+1; // presun fotek do slozky $cilova_cesta = $slozka_fotografii; $cilova_cesta = $cilova_cesta.basename($_FILES['fotka']['name'][$i]); move_uploaded_file($_FILES['fotka']['tmp_name'][$i], $cilova_cesta); // presun fotek do slozky $cesta = $cilova_cesta; // zjisti udaje o fotce $img_udaje = getimagesize($cesta); $maximalni[$i] = $img_udaje[0]; // zjistime nejvetsi sirku z nahravanych fotek $sirka_divu = $img_udaje[0] + 20; // kontrola, zda jde o foto $img_kontrola = false; if (is_int($img_udaje[2])) { // pokud 2. index pole vyhodi integer, jde o obrazek $img_kontrola = true; } if ($jmeno_fotky && $img_kontrola) { // pokud neni odeslana fotografie (ci soubor jiny nez foto), konstrukce se nezobrazi fwrite($soubor, "

\"".$alt_fotky."\"

".$cislo."".$popisek_fotky."

\n\n"); } } $sirka = max($maximalni) + 50; if ($_POST["sablona"] == "css") { fwrite($soubor2, " body { padding: 0; margin: 0; background: #2D302A; font-family: 'Trebuchet MS', 'Tahoma CE', 'Arial CE', 'Helvetica CE', Tahoma, Arial, lucida, sans-serif; font-size: 12px; margin: 2em; padding: 0; color: #dfe0dc; text-align: center; } #obsah { position: relative; margin: auto; width: ".$sirka."px; background-color: #585A53; border: 1px solid #636461; text-align: center; } #uvod { border: 5px solid #636461; background: #545552; text-align: left; margin: 0 15px 0 15px; } #uvod p { margin: 1em; } h1 { padding: 20px; margin: 0; font-family: Georgia, sans-serif; text-align: center; font-weight: normal; font-size: 25px; } .foto { margin: 20px auto 20px auto; background: #545552; border-right: 1px solid #3f403e; border-bottom: 1px solid #3f403e; } .cislo { color: gray; margin-right: 20px; } .obrazek { padding: 10px 10px 0 10px; margin: 0; } .popisek { text-align: left; padding: 0; margin: 2px 0 10px 10px; } .pata { color: #C4C1B3; margin: 1em; background: #3f403e; padding: 1em; } .copy { text-align: center; color: gray; } .odkaz_komentar { text-align: right; margin: 10px 15px 10px 0; } a { color: silver; } a:hover { text-decoration: none; border-bottom: 1px dotted gray; background-color: rgb(96,96,96); } a:link { color: white; } a.a_cislo { color: gray; margin-right: 20px; border: 1px solid gray; text-decoration: none; padding: 0 3px 0 3px; }"); } else { fwrite($soubor2, " "); } } function zapis_paticka ($soubor) { if (!empty($_POST["paticka"])) { fwrite($soubor, "

".$_POST["paticka"]."

"); } fwrite($soubor, "

Galerii vytvořil OR;GEN - Generátor statických fotogalerií
© Daniel Šťastný, www.realmind.org

"); } function finalni_hlaska($finalni_slozka) { echo "

» Prohlédněte si hotovou fotogalerii ".$_POST["nazev_fotogalerie"]."
"; echo "» Vytvořit novou

"; } dtd(); html_head_start(); kodovani(); styl_stranky(); titulek("ORIGEN - Generátor statických fotogalerií"); head_end(); body_start(); hlavni_nadpis("ORIGEN - Generátor statických fotogalerií"); div_start(); if (!isset ($_POST["odesli_pocet_policek"])) { // hlavni vetev - pokud neni dan pocet policek, zobrazi se formular pro heslo a pocet policek prvni_nadpis(); vstupni_formular(); } else { // pokud je vyplneno heslo a pocet policek pro fotografie, program pokracuje touto vetvi $hlaska = "

Složku se nepodařilo vytvořit, patrně již existuje. Obnovte tuto stránku prohlížečem - program se pokusí vygenerovat složku s novou číselnou příponou.
Tento postup můžete opakovat nejvýše dvacetkrát - poté se generování složek zastaví.

» Návrat na úvodní stránku

"; if (empty($_POST["nazev_slozky"])) { $nazev_sl = $_POST["nazev_slozky_nahradni"]; } else { $nazev_sl = $_POST["nazev_slozky"]; } if (isset ($_POST["odesli_fotky"])) { // pokud jsme finalne odeslali fotky na server - tato vetev je zpracuje if (is_dir($nazev_sl)) { // pokud jiz existuje slozka s timto nazvem, vytvorime novou s ciselnym dodatkem $slozka = $nazev_sl."_".rand(1, 20); $finalni_slozka = $slozka; if (mkdir($slozka, 0777)) { // zalozi novou slozku pro celou galerii $nova_slozka = $slozka."/foto/"; if (mkdir($slozka."/foto", 0777)) { // zalozi novou interni slozku pro fotky $cesta = $slozka."/index.html"; $soubor = fopen($cesta, "w"); // pro css sablonu $cesta2 = $slozka."/design.css"; $soubor2 = fopen($cesta2, "w"); $slozka_fotografii = $nova_slozka; } else { echo $hlaska; exit; } } else { echo $hlaska; exit; } } else { if (mkdir($nazev_sl, 0777)) { // vytvorime slozku $slozka = $nazev_sl."/foto/"; $finalni_slozka = $nazev_sl; if (mkdir($slozka, 0777)) { $cesta = $nazev_sl."/index.html"; $soubor = fopen($cesta, "w"); // pro css sablonu $cesta2 = $nazev_sl."/design.css"; $soubor2 = fopen($cesta2, "w"); $slozka_fotografii = $slozka; } else { echo $hlaska; exit; } } else { echo $hlaska; exit; } } // zapiseme link do databaze, pokud je nastavena prekladac($text); zapis_hlavicka($soubor); zapis_css($soubor); zapis_zahlavi($soubor); zapis_hlavni($soubor, $soubor2, $slozka_fotografii); zapis_paticka($soubor); finalni_hlaska($finalni_slozka); } else { if ($_POST["heslo"] == HESLO) { // kontrola zadaneho hesla druhy_nadpis(); $pocet_policek = $_POST["pocet_policek1"].$_POST["pocet_policek2"]; // slouceni cifer vstupni_formular_fotogalerie($pocet_policek,$nastaveni_databaze); } else { echo "

Špatné heslo!

"; // pokud spatne vyplnime heslo, nepusti nas to dal } } // ukonceni - ukladani galerie } // ukonceni - druha vetev generatoru policek div_end(); body_html_end(); ?> ===========================================================
Heslo:
Název složky:
"; } else { if ($_POST["heslo"] == HESLO) { function delete_directory($dirname) { // tuto funkci napsal "placid psychosis" z Polska if (is_dir($dirname)) $dir_handle = opendir($dirname); if (!$dir_handle) return false; while($file = readdir($dir_handle)) { if ($file != "." && $file != "..") { if (!is_dir($dirname."/".$file)) unlink($dirname."/".$file); else delete_directory($dirname.'/'.$file); } } closedir($dir_handle); rmdir($dirname); return true; } if(delete_directory($_POST["slozka"])) { echo "Složka ".$_POST["slozka"]." byla vymazána."; } else { echo "Chyba"; } } else { echo "Špatné heslo!"; } } div_end(); body_html_end(); ?> =========================================================== \n"; } function html_head_start() { echo "\n"; } function kodovani() { // standardne pouzivam UTF-8 echo "\n"; } function styl_stranky() { // kaskadni styl pro zobrazeni na klasickem monitoru echo "\n\n"; } function titulek($titulek) { echo "".$titulek."\n"; } function head_end() { echo "\n\n"; } function body_start() { echo "\n"; } function div_start() { // rozdelil jsem na dva divy - prvni zajisti vycentrovani a pevnou sirku tela a druhy zajisti vnitrni odstupy od okraju echo "
\n"; } function div_end() { // paticka echo "\n\n

© 2006 Daniel Šťastný - daniel@realmind.org

"; } function body_html_end() { echo "\n"; } function hlavni_nadpis($nadpis) { echo "

".$nadpis."

"; } function prvni_nadpis() { echo "

1/2 Počet fotografií

"; } function druhy_nadpis() { echo "

2/2 Nahrání fotografií na server

"; } function db_hlavni_nadpis() { echo "

Generátor statických fotogalerií - MySQL

"; } function db_prvni_nadpis() { echo "

1/2 Nastavení databáze

"; } function db_druhy_nadpis() { echo "

2/2 Kontrola dat

"; } ?> ===========================================================