diff --git a/includes/galleryfunctions.php b/includes/galleryfunctions.php index 977320d..1b98bcd 100644 --- a/includes/galleryfunctions.php +++ b/includes/galleryfunctions.php @@ -187,6 +187,33 @@ function getGalleryLabel($galleryname) { return $label; } +function cmpGalleryByWeight($a, $b) { + if (($a[0] == $b[0]) && (strcmp($a[1], $b[1]) == 0)) { + return 0; + } + if ($a[0] == $b[0]) { + return strcmp($a[1], $b[1]); + } + return ($a[0] < $b[0]) ? -1 : 1; +} + +function getOrderedGalleries() { + global $configuration; + $galleries = array(); + + foreach (glob(realpath($configuration['gallerydir']) . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR) as $directory) { + $basename = basename($directory); + if (galleryExists($basename)) { + $inidata = getGalleryConfig($basename); + $weight = (array_key_exists('weight', $inidata[GALLERYSEC])) ? + intval($inidata[GALLERYSEC]['weight']) : 0; + $galleries[] = array($weight, $basename); + } + } + usort($galleries, 'cmpGalleryByWeight'); + return $galleries; +} + /** * Liefert die aktuelle Galerie. Die Galerie kann entweder im * GET-Parameter @c galleryname stehen, als Wert @a default in der @@ -203,20 +230,8 @@ function getCurrentGallery() { galleryExists($_GET["galleryname"])) { return $_GET["galleryname"]; } - $filepath = realpath($configuration['gallerydir'] . DIRECTORY_SEPARATOR . 'galleryinfo.ini'); - if (!empty($filepath)) { - $inidata = getGalleryConfig(); - if (galleryExists($inidata[GALLERYSEC]["default"])) { - return $inidata[GALLERYSEC]["default"]; - } - } - foreach (glob(realpath($configuration['gallerydir']) . DIRECTORY_SEPARATOR . '*', GLOB_ONLYDIR) as $directory) { - $basename = basename($directory); - if (galleryExists($basename)) { - return $basename; - } - } - return null; + $galleries = getOrderedGalleries(); + return (count($galleries) > 0) ? $galleries[0][1] : null; } /** @@ -354,25 +369,22 @@ function getGalleryLinks() { global $configuration; $retval = array(); - foreach (glob(realpath($configuration['gallerydir']) . DIRECTORY_SEPARATOR . '*', - GLOB_ONLYDIR) as $directory) { - $basename = basename($directory); - if (galleryExists($basename)) { - $urlparams = array(); - $urlparams['galleryname'] = $basename; - if (array_key_exists('theme', $_GET)) { - $urlparams['theme'] = $_GET['theme']; - } - $parts = array(); - foreach ($urlparams as $key => $value) { - $parts[] = sprintf("%s=%s", $key, urlencode($value)); - } - $url = sprintf('index.php?%s', - implode(ini_get('arg_separator.output'), $parts)); - $retval[] = array('gallery' => $basename, - 'label' => getGalleryLabel($basename), - 'url' => htmlspecialchars($url)); + $galleries = getOrderedGalleries(); + foreach ($galleries as $gallery) { + $urlparams = array(); + $urlparams['galleryname'] = $gallery[1]; + if (array_key_exists('theme', $_GET)) { + $urlparams['theme'] = $_GET['theme']; } + $parts = array(); + foreach ($urlparams as $key => $value) { + $parts[] = sprintf("%s=%s", $key, urlencode($value)); + } + $url = sprintf('index.php?%s', + implode(ini_get('arg_separator.output'), $parts)); + $retval[] = array('gallery' => $gallery[1], + 'label' => getGalleryLabel($gallery[1]), + 'url' => htmlspecialchars($url)); } return $retval; }