<?php // Classes require_once('lib/helpers.class.php'); require_once('lib/thumbs.class.php'); require_once('lib/template.class.php'); // Settings require('conf/config.php'); // Prepare Some Basic Variables $imagedir = Helpers::end_dir($conf['fs_imagedir']); $thumbdir = Helpers::end_dir($conf['fs_thumbdir']); $imageurl = Helpers::end_dir($conf['web_imagedir']); $thumburl = Helpers::end_dir($conf['web_thumbdir']); $galleryname = $conf['gallery_name']; // Get Parameters or Set Defaults $page = $_GET['p'] ?? $conf['defpage']; $slice = $_GET['s'] ?? $conf['defslice']; $gslice = $_GET['gs'] ?? $conf['defslice']; $dir = $_GET['d'] ?? $conf['defdir']; // Create or Load Session session_start(); // Initialize Thumbnail Handler $t = new Thumb(Helpers::end_dir($imagedir.$dir), $thumbdir, 200, 200); // Filelist Cache Handling if (isset($_SESSION['files']) && $_SESSION['dir'] == $dir && (time() - $_SESSION['cachetime']) < $conf['flcache'] && !isset($_GET['refcache'])) { $files = $_SESSION['files']; } else { $tmpdirs = glob(Helpers::end_dir($imagedir.$dir).'*' , GLOB_ONLYDIR); foreach ($tmpdirs as $tmpdir) $dirs[] = basename($tmpdir); $rmdirs = $dirs; $rmdirs[] = '.'; $rmdirs[] = '..'; $files = array_diff(scandir($imagedir.$dir, SCANDIR_SORT_DESCENDING), $rmdirs); $_SESSION['files'] = $files; $_SESSION['dir'] = $dir; $_SESSION['cachetime'] = time(); } // Apply Filters to Filelist $filter=''; if (isset($_GET['f'])) { if ($_GET['f'] != '') { $tr = array('(' => '\(', ')' => '\)'); $f = strtr($_GET['f'], $tr); $files = array_values(preg_grep('/.*'.$f.'.*/i', $files)); $filter='&f='.$_GET['f']; } } // Sort and Reverse Filelist natcasesort($files); $files = array_reverse($files); // Get Files for current Page $curfiles = array_slice($files, ($page-1)*$slice ,$slice, true); if (count($curfiles) > 0 | count($dirs) > 0) { // Prepare Generic Data for Template $data['galleryname'] = $galleryname; $data['startpage'] = $_SERVER['PHP_SELF']; $data['dir'] = $dir; $data['slice'] = $slice; $data['filter'] = $filter; $data['page'] = $page; $data['prev_page'] = $page - 1; if ($data['prev_page'] < 1) $data['prev_page'] = 1; $data['next_page'] = $page + 1; if ($data['next_page'] > ceil(count($files)/$slice)) $data['next_page'] = $page; $data['last_page'] = ceil(count($files)/$slice); // Prepare Mode Specific Data and Render Template if ($slice > 1) { if (count($curfiles) > 0) { foreach ($curfiles as $index => $image) { $tmp['n'] = $image; $tmp['i'] = $index+1; $tmp['t'] = $thumburl.$t->get_thumb($image); $data['images'][] = $tmp; } } $data['dirs'] = $dirs; Template::view('tpl/gallery.html', $data); } else { $data['gallery_page'] = ceil($page/$gslice); $data['gallery_slice'] = $gslice; foreach ($curfiles as $index => $image) { $data['imageurl'] = $imageurl.$dir.'/'.$image; $data['imagename'] = $image; $data['tags'] = explode(" ", pathinfo(trim(strstr(strtolower($image), ' - '), " -"))['filename']); } Template::view('tpl/single.html', $data); } } else { $data['filter'] = substr($filter,3); $data['script'] = $_SERVER['PHP_SELF']; Template::view('tpl/notfound.html', $data); } ?>