diff --git a/.htaccess b/.htaccess index f4ac509..44bc113 100644 --- a/.htaccess +++ b/.htaccess @@ -1,3 +1,5 @@ RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?) RewriteRule ^ /%1 [R=301,L] +RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)lister\.php($|\ |\?) +RewriteRule ^ /%1 [R=301,L] diff --git a/packages/index.php b/packages/index.php index 3a90d99..da6deee 100644 --- a/packages/index.php +++ b/packages/index.php @@ -148,11 +148,8 @@ function main() { print "\t\t\t\t
Then simply pacman -Syu
to sync the repositories. Then you can install any of my packages in the same way you install official packages.
You can search for packages using the input box in the navbar. Then you can select a package to view details about it. You can press 'Home' in the navbar to go back to this page, or 'All' to display all available packages.
\n"; - print "\t\tSee this page for more information.
\n"; } else if ($request == "view" && $query != '') { $packageCount = 0; $packageVersions = array(); diff --git a/packages/lister.php b/packages/lister.php new file mode 100644 index 0000000..f830e54 --- /dev/null +++ b/packages/lister.php @@ -0,0 +1,233 @@ + $file, 'isdir' => $isdir, 'size' => $isdir ? 0 : filesize($path . $file), 'time' => filemtime($path . $file)); + if ($isdir) $ls_d[] = $item; else $ls[] = $item; + $_total++; + $_total_size += $item['size']; + } + return array_merge($ls_d, $ls); + } + + // Get the list of files + $items = ls('.' . (empty($_browse) ? '' : '/' . $_browse), $showDirectories, $showHiddenFiles); + + // Sort it + function sortByName($a, $b) { global $showDirectoriesFirst; return ($a['isdir'] == $b['isdir'] || !$showDirectoriesFirst ? strtolower($a['name']) > strtolower($b['name']) : $a['isdir'] < $b['isdir']) ? 1 : -1; } + function sortBySize($a, $b) { return ($a['isdir'] == $b['isdir'] ? $a['size'] > $b['size'] : $a['isdir'] < $b['isdir']) ? 1 : -1; } + function sortByTime($a, $b) { return ($a['time'] > $b['time']) ? 1 : -1; } + switch (@$_GET['s']) { + case 'size': $_sort = 'size'; usort($items, 'sortBySize'); break; + case 'time': $_sort = 'time'; usort($items, 'sortByTime'); break; + default : $_sort = 'name'; usort($items, 'sortByName'); break; + } + + // Reverse? + $_sort_reverse = (@$_GET['r'] == '1'); + if ($_sort_reverse) $items = array_reverse($items); + + // Add parent + if ($showParent && $_path != '/' && empty($_browse)) array_unshift($items, array( + 'name' => '..', + 'isparent' => true, + 'isdir' => true, + 'size' => 0, + 'time' => 0 + )); + + // Add parent in case of browsing a sub-folder + if (!empty($_browse)) array_unshift($items, array( + 'name' => '..', + 'isparent' => false, + 'isdir' => true, + 'size' => 0, + 'time' => 0 + )); + + // 37.6 MB is better than 39487001 + function humanizeFilesize($val, $round = 0) { + $unit = array('','K','M','G','T','P','E','Z','Y'); + do { $val /= 1024; array_shift($unit); } while ($val >= 1000); + return sprintf('%.'.intval($round).'f', $val) . ' ' . array_shift($unit) . 'B'; + } + + // Titles parser + function getTitleHTML($title, $breadcrumbs = false) { + global $_path, $_browse, $_total, $_total_size, $sizeDecimals; + $title = htmlentities(str_replace(array('{{files}}', '{{size}}'), array($_total, humanizeFilesize($_total_size, $sizeDecimals)), $title)); + $path = htmlentities($_path); + if ($breadcrumbs) $path = sprintf('%s', htmlentities(buildLink(array('b' => ''))), $path); + if (!empty($_browse)) { + if ($_path != '/') $path .= '/'; + $browseArray = explode('/', trim($_browse, '/')); + foreach ($browseArray as $i => $part) { + if ($breadcrumbs) { + $path .= sprintf('%s', htmlentities(buildLink(array('b' => implode('/', array_slice($browseArray, 0, $i + 1))))), htmlentities($part)); + } else { + $path .= htmlentities($part); + } + if (count($browseArray) > ($i + 1)) $path .= '/'; + } + } + return str_replace('{{path}}', $path, $title); + } + + // Link builder + function buildLink($changes) { + global $_self; + $params = $_GET; + foreach ($changes as $k => $v) if (is_null($v)) unset($params[$k]); else $params[$k] = $v; + foreach ($params as $k => $v) $params[$k] = urlencode($k) . '=' . urlencode($v); + return empty($params) ? $_self : $_self . '?' . implode('&', $params); + } + +?> + + + + + + + +