Nimi mainittava - Ei kaupalliseen käyttöön'; // Cache-hakemisto // Relatiivinen tai absoluuttinen polku, esim. // '/home/jase/public_html/.cache' tai '../../.cache' $cachepath = '/home/users/plazma/sites/plazma.kapsi.fi/www/.cache/'; // URI cache-hakemistoon // Relatiivinen tai absoluuttinen URI, esim. //'http://jase.kapsi.fi/galleria/.cache' tai '/galleria/.cache' tai '.cache' $cacheurl = 'http://plazma.kapsi.fi/.cache'; // Kuvaa ladatessa näkyvä tausta // Voi jättää sikseen, vaihtaa tai poistaa käytöstä kommentoimalla rivin //$imgbg = 'http://jase.kapsi.fi/galleria/loading.gif'; // Tilastoissa näkyvä tiedostolistausta kuvaava ikoni // Voi jättää sikseen tai vaihtaa $indexpicture = 'http://jase.kapsi.fi/galleria/listaus.jpg'; // Erillinen CSS-tyylitiedosto // Relatiivinen tai absoluuttinen URI esim. // 'http://jase.kapsi.fi/galleria/dark.css' tai '/style.css' tai 'style.css' // $external_css = 'http://jase.kapsi.fi/galleria/dark.css'; // Vierekkäisiä kuvia rivillä $columns = 5; // Esikatselukuvan pisimmän sivun pituus pikseleinä $maxsize = 150; // Annetaanko hakukoneiden indeksoida sivu // true tai false $indexpages = true; // Näytetääkö esikatselukuvia kuvan alapuolella $thumbnails_under_image = true; // Näytetäänkö latausten määrä esikatselukuvan alapuolella //$hits_under_thumbnail = true; // Polku imagemagick:n convert-työkaluun // Sen saa selville komennolla ´which convert´. Kommentoi tämä jos haluat // käyttää PHP:n gd:tä. Varoituksen sanana, että sillä on ongelmia suurien // kuvien kanssa. Kapsilla toimii alla oleva: $convert = '/usr/bin/convert'; /* TODO: - Rekursiivinen kuvien näyttö (versio 1.1.0) - Uusimman version tarkastus stats sivulle - Kuvien listaukselle sivutus - Mahdollisuus muuttaa tapaa jolla kuvat järjestetään (päiväys <-> nimi) Changelog 1.0.7 27.12.2005 - Esikatselukuvien luonti ImageMagick:lla - Esikatselukuvien päivitys jos koko on eri kuin asetus - Latausten lukumäärät kuvien alle 1.0.6 01.12.2005 - Poistettu naurettavat nuolikuvat. - Vaihtoehtoinen esimerkki css-tyylitiedostosta 1.0.5 23.11.2005 - Korjaus PHP:n Safe mode muutokseen. - Korjattu XHTML 1.0 Strict validiksi - Vaihdettu merkistö ISO-8859-15:sta 1.0.4 24.04.2005 - Tiedostot järjestetään nimen mukaan 1.0.3 26.03.2005 - Käyttöliittymää viilattu - Statistiikkasivua ladattessa poistetaan vanhat rivit tietokannasta - Seuraavien ja edellisten kuvien esikatselukuvat kuvan alla - Muuttujia voi poistaa nyt melko vapaasti - Lisätty GPL:n alle - Ulkopuolisen css-tiedoston käyttö - Seuraava js edellinen -linkit kuviksi kuvan molemmin puolin 1.0.2 23.03.2005 - Lisätty siirretty data tilastoihin - Statsien järjestys latauksien mukaan - Uudistettu tietokantarakenne - Lisätty kaistan kokonaiskulutus ja lataukset yhteensä 1.0.1 22.03.2005 - Ääkköset sallitaan tiedostojen nimissä - Esikatselukuva näkyy nyt ensimmäisellä sivunlatauksellakin - Selitykset muuttujista - Indeksoinni esto -mahdollisuus - Generator meta-tagi, joka kertoo mistä saa uusimman version :-) - Tilastot - Cache-hakemisto tarkistus ja luontiyritys - Esikatselukuvia pienempien kuvien esikatselukuvat toimivat 1.0 15.03.2005 - Julkaisu Tietokanta sijaitsee cache-hakemistossa nimellä hits.txt. Se on plain/text tyyppinen ja sisältää seuraavat kentät */ /* securitas valvoo */ $match = '/^[a-zäöå0-9_-]*\.(gif|jpg|png)$/i'; if($_GET['create_thumbnail'] && !preg_match($match, $_GET['create_thumbnail'])) header('Location: http://reminder.ton.tut.fi'); if($_GET['i'] && !preg_match($match, $_GET['i'])) header('Location: http://reminder.ton.tut.fi'); /* securitas pitää myös huolen, että cache hakemisto on olemassa */ if(!is_dir($cachepath)) mkdir($cachepath) or die('
'. print_r($cachepath) .''); if(!is_writable($cachepath)) chmod($cachepath, 0777) or die('
'. $cachepath .' - '. substr(sprintf('%o', fileperms($cachepath)), -4) .''); // Tarkistetaan oikeudet convertin ajamiselle if($convert) { if(!is_executable($convert)) { die('
'. $convert .' - '. substr(sprintf('%o', fileperms($convert)), -4) .''); } } function ParseFilesize($bytes, $precision = 2, $names = '') { if (!is_numeric($bytes) || $bytes < 0) return false; for ($level = 0; $bytes >= 1024; $level++) { $bytes /= 1024; } switch ($level) { case 0: $suffix = (isset($names[0])) ? $names[0] : 'B'; break; case 1: $suffix = (isset($names[1])) ? $names[1] : 'KB'; break; case 2: $suffix = (isset($names[2])) ? $names[2] : 'MB'; break; case 3: $suffix = (isset($names[3])) ? $names[3] : 'GB'; break; case 4: $suffix = (isset($names[4])) ? $names[4] : 'TB'; break; default: $suffix = (isset($names[$level])) ? $names[$level] : ''; break; } if (empty($suffix)) { trigger_error('Unable to find suffix for case ' . $level); return false; } return round($bytes, $precision) . ' ' . $suffix; } if($_GET["create_thumbnail"]) { ini_set(max_execution_time, 120); $img = getcwd() .'/'. $_GET['create_thumbnail']; $md5 = md5_file($img); $size = getimagesize($img); $cachefilename = $cachepath .'/'. $md5 .'.jpg'; $aspect_ratio = $size[0] / $size[1]; if($size[0] > $maxsize || $size[1] > $maxsize) { if($aspect_ratio >= 1) { // landscape $thumb_width = $maxsize; $thumb_height = round($maxsize / $aspect_ratio); } elseif($aspect_ratio < 1) { // portrait $thumb_width = round($maxsize * $aspect_ratio); $thumb_height = $maxsize; } } else { $thumb_width = $size[0]; $thumb_height = $size[1]; } if($convert) { exec($convert .' -quality 75 -thumbnail '. $thumb_width .'x'. $thumb_height .' '. $img .' '. $cachefilename); header("Content-type: image/jpeg"); $handle = fopen($cachefilename, "r"); echo fread($handle, filesize($cachefilename)); fclose($handle); } else { header("Content-type: image/jpeg"); if($size[2] == 1) $orginal = imagecreatefromgif($img); elseif($size[2] == 2) $orginal = imagecreatefromjpeg($img); elseif($size[2] == 3) $orginal = imagecreatefrompng($img); $thumbnail = imagecreatetruecolor($thumb_width, $thumb_height); imagecopyresampled($thumbnail, $orginal, 0, 0, 0, 0, $thumb_width, $thumb_height, $size[0], $size[1]); ImageDestroy($orginal); Imagejpeg($thumbnail, $cachefilename, 75); imageinterlace($thumbnail, true); ImageDestroy($thumbnail); // thumbnail luotu, näytetään kuva $thumbnail = imagecreatefromjpeg($cachefilename); Imagejpeg($thumbnail); ImageDestroy($thumbnail); } die(); } // tietokannan luonti if(!is_file($cachepath .'/hits.txt')) { $fp = fopen($cachepath .'/hits.txt', 'w'); if($_GET['i']) fputs($fp, dirname(__FILE__) ."/". $_GET['i'] .";http://". $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] .";". md5_file($_GET['i']) .";1\n"); elseif($_SERVER['argv'][0] != 'stats') fputs($fp, $_SERVER['SCRIPT_FILENAME'] .";http://". $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] .";null;1\n"); fclose($fp); } // olemattomien merkintöjen poisto kannasta elseif($_SERVER['argv'][0] == 'stats') { $fa = file($cachepath .'/hits.txt'); $fp = fopen($cachepath .'/hits.txt', 'w+'); foreach($fa as $line) { $tmp = explode(';', $line); if(is_file($tmp[0])) fputs($fp, $line); } } // tietokannan päivitys else { $fa = file($cachepath .'/hits.txt'); $fp = fopen($cachepath .'/hits.txt', 'w+'); if($_GET['i']) $md5 = md5_file($_GET['i']); foreach($fa as $line) { $tmp = explode(';', $line); if(($tmp[0] == $_SERVER['SCRIPT_FILENAME']) && !$_GET['i']) { fputs($fp, $tmp[0] .";". $tmp[1] .";null;". ($tmp[3] + 1) ."\n"); $update = true; } elseif($tmp[2] == $md5) { fputs($fp, $tmp[0] .";". $tmp[1] .";". $tmp[2] .";". ($tmp[3] + 1) ."\n"); $update = true; } else fputs($fp, $line); // array hits[pathtoimage] = hits $hits[$tmp[2]] = $tmp[3] + 1; } // lisäys tietokantaan jos ei aikaisempaa latausta if(!$update) { if($_GET['i']) fputs($fp, dirname(__FILE__) ."/". $_GET['i'] .";http://". $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] .";". $md5 .";1\n"); else fputs($fp, $_SERVER['SCRIPT_FILENAME'] .";http://". $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] .";null;1\n"); } fclose($fp); } echo ''; ?>
'. $description .'
'; // skannataan hakemistosta kaikki kuvat if ($handle = opendir('./')) { while (false !== ($file = readdir($handle))) { if (preg_match($match, $file)) { $files[]=$file; } } closedir($handle); } natcasesort($files); foreach($files as $file) $files2[] = $file; $files = $files2; unset($files2); // näytetään yksittäinen kuva if($_GET['i']) { $size = getimagesize($_GET['i']); $key = array_search($_GET['i'], $files); echo 'loaded once
'; elseif($hits[$md5] > 1) echo 'loaded '. $hits[$md5] .' times
'; else echo 'no loadings
'; } /* ohjaimet */ echo ''; else echo ' | ';
echo '';
echo ' '; echo $files[($key + $a)]; echo ' | ';
}
}
echo '
';
echo ' '; if($hit > 1) echo $hit .' loadings '; elseif($hit == 1) echo 'loaded once '; $data = filesize($path) * $hit; echo 'Dataa siirretty: '. ParseFilesize($data) .' | ';
$totaldata += $data;
$totalhits += $hit;
$totalimgs++;
}
else {
echo '';
echo ' '; echo $urls[$path] .' '; if($hit > 1) echo $hit .' loadings | ';
elseif($hit == 1)
echo 'loaded once';
}
}
echo '
'. $totalimgs .' kuvaa ladattu '. $totalhits .' kertaa ja dataa siirretty '. ParseFilesize($totaldata) .'
(mukana ei html:än kulutusta)
';
echo '';
echo ' '; echo $files[$a]; if($hits_under_thumbnail) { if($hits[$md5] == 1) echo ' loaded once'; elseif($hits[$md5] > 1) echo ' '. $hits[$md5] .' loadings'; else echo ' no loadings'; } echo ' | ';
}
echo '
'; print_r($hits); print_r($files); echo ''; */ } if($copyrights) echo ''. $copyrights .'
'; ?>