Archived
1
0
Fork 0

Dokumentations- und Codestylearbeiten sowie Funktionserweiterung

* Die Funktion getGalleryLinks() in includes/galleryfunctions.php
   liefert die Menüeinträge und in index.php werden diese gerendert
   (fixes #16)
 * Der PHP-Code wurde so formatiert, dass phpcs --standard=Zend keine
   Fehler mehr findet (fixes #3)
 * Der PHP-Code wurde vollständig mit Doxygen dokumentiert und eine
   Doxygen-Konfiguration in doc/doxygen.conf hinterlegt (fixes #27)
This commit is contained in:
Jan Dittberner 2008-08-28 14:53:31 +00:00
parent e06f95874b
commit a86aa84b6b
5 changed files with 1663 additions and 89 deletions

View file

@ -1,7 +1,10 @@
<?php
/**
* Diese Datei stellt die verschiedenen Funktionen für den Aufbau der
* Bildergallerie zur Verfügung.
* @file
* Funktionen für den Aufbau der Bildergalerie.
*
* @author Jan Dittberner <jan@dittberner.info>
* @version \$Id$
*
* Copyright (c) 2007, 2008 Jan Dittberner <jan@dittberner.info>
* Jan Dittberner IT-Consulting & -Solutions,
@ -23,8 +26,6 @@
* You should have received a copy of the GNU General Public License
* along with ScrollingJQueryGallery. If not, see
* <http://www.gnu.org/licenses/>.
*
* Version: $Id$
*/
define(GALLERYPREFIX, "bilder");
@ -33,14 +34,42 @@ define(IMAGESEC, "images");
define(GALLERYSEC, "gallery");
define(GALLERY_RE, '/^[\w\d _-]+$/');
/**
* Breite der Vorschaubilder.
*/
$previewwidth = 311;
/**
* Höhe der Thumbnailbilder.
*/
$thumbheight = 67;
/**
* Prüft, ob eine Galerie mit dem übergebenen Namen existiert.
*
* @param $galleryname Galeriename
*
* @return @c true, wenn die Galerie existiert und einen erlaubten
* Verzeichnisnamen hat, sonst @c false
*/
function galleryExists($galleryname) {
return preg_match(GALLERY_RE, $galleryname) &&
realpath(GALLERYPREFIX . DIRECTORY_SEPARATOR . $galleryname);
}
/**
* Liefert geparste Konfigurationsinformationen zu einer Galerie oder
* die globale Konfiguration. Die Konfigurationsdaten einer Galerie
* stehen in der Datei @c galleryinfo.ini in dem Verzeichnis der
* Galerie. Die globale Konfiguration liegt in der gleichnamigen Datei
* im Elternverzeichnis der Galerien.
*
* @param $galleryname Galeriename oder @c null, wenn die globale
* Konfiguration geparst werden soll
*
* @return Ergebnis von @c parse_ini_file() oder ein leeres Array,
* wenn keine Konfigurationsdatei vorhanden ist
*/
function getGalleryConfig($galleryname = null) {
if ($galleryname) {
$filepath = realpath(GALLERYPREFIX . DIRECTORY_SEPARATOR .
@ -55,11 +84,19 @@ function getGalleryConfig($galleryname = null) {
}
/**
* Holt die Bildinformationen zu einem Bild aus der Datei
* bilder/imginfo.txt und gibt diese zurueck.
* Holt die Bildinformationen zu einem Bild.
*
* @param $imagename Bildname
*
* @param $galleryname Galleriename
*
* @return assoziatives Array mit folgenden Feldern
* @li @a name Bildname
* @li @a data Label des Bildes
* @li @a preview relative URL des Vorschaubildes
* @li @a full relative URL des Vollbildes
*
* @bug @a data sollte @a label heißen
*/
function getImgInfo($galleryname, $imagename) {
return array("name" => $imagename,
@ -72,6 +109,18 @@ function getImgInfo($galleryname, $imagename) {
);
}
/**
* Liefert das Label zu einem Bild. Wenn es in der @a images-Sektion
* der Datei @c galleryinfo.ini der angegebenen Galerie einen Eintrag
* mit dem übergebenen Bildnamen gibt, wird dieser zurückgegeben,
* ansonsten der Bildname selbst.
*
* @param $galleryname Galeriename
*
* @param $imagename Bildname
*
* @return Label zu dem Bild
*/
function getImageLabel($galleryname, $imagename) {
$gallerypath = realpath(GALLERYPREFIX . DIRECTORY_SEPARATOR . $galleryname);
if (empty($gallerypath) || !is_dir($gallerypath)) {
@ -91,9 +140,11 @@ function getImageLabel($galleryname, $imagename) {
/**
* Liefert die aktuelle Gallerie. Die Gallerie kann entweder im
* GET-Parameter "galleryname" stehen, in der "gallery"-Sektion der
* zentralen galleryinfo.ini angegeben werden oder es wird das erste
* Unterverzeichnis von GALLERYPREFIX verwendet.
* GET-Parameter @c galleryname stehen, als Wert @a default in der @a
* gallery-Sektion der zentralen galleryinfo.ini angegeben werden oder
* es wird das erste Unterverzeichnis von GALLERYPREFIX verwendet.
*
* @return Galeriename
*/
function getCurrentGallery() {
if (galleryExists($_GET["galleryname"])) {
@ -116,6 +167,23 @@ function getCurrentGallery() {
return null;
}
/**
* Liefert eine skalierte Version zu dem übergebenen Bild der
* übergebenen Galerie und generiert dieses bei Bedarf.
*
* @param $galleryname Galeriename
*
* @param $basename Bildname
*
* @param $maxdim maximale Breite oder Höhe des skalierten Bildes in
* Pixeln
*
* @param $scaleheight Angabe ob die Höhe oder die Breite für den
* Maximalwert beachtet werden soll, wenn dieser Parameter @c true
* ist, wird die Höhe auf @a $maxdim skaliert, ansonsten die Breite
*
* @return Pfad des skalierten Bildes relativ zu @a GALLERYPREFIX
*/
function getScaledImage($galleryname, $basename, $maxdim, $scaleheight=true) {
if ($maxdim == 0) {
debug_print_backtrace();
@ -164,10 +232,13 @@ function getScaledImage($galleryname, $basename, $maxdim, $scaleheight=true) {
/**
* Gibt die Informationen über Vorschaubilder zurück.
*
* @return array das erste Element ist die aufsummierte Breite der
* Einzelbilder und das zweite Element ist ein assoziatives Array mit
* den Bildnamen als Keys und dem Ergebnis von getimagesize() als
* Werten
* @param $galleryname Galeriename
*
* @return Array mit drei Elementen, dessen erstes Element die
* aufsummierte Breite der Einzelbilder, dessen zweites Element der
* Galeriename und dessen drittes Element ein assoziatives Array mit
* den Bildnamen als Keys und Arrays mit dem Pfadnamen das Thumbnails
* und dem Ergebnis von getimagesize() als Werten ist.
*/
function getThumbNailInfo($galleryname) {
$thumbsizes = array();
@ -188,9 +259,50 @@ function getThumbNailInfo($galleryname) {
return array($thumbwidthsum, $galleryname, $thumbsizes);
}
/**
* Gibt die Links zu den existierenden Galerien zurück.
*
* @return Array, welches je Gallerie ein assoziatives Array mit den
* Keys @a gallery, @a label und @a url enthält. Die Labels für die
* Galerien werden aus dem @a title-Feld der @a gallery-Sektion der @c
* galleryinfo.ini ausgelesen. Wenn diese Feld nicht gesetzt ist, wird
* der Galeriename verwendet.
*
* @see galleryExists()
* @see getGalleryConfig()
*/
function getGalleryLinks() {
$retval = array();
foreach (glob(realpath(GALLERYPREFIX) . DIRECTORY_SEPARATOR . '*',
GLOB_ONLYDIR) as $directory) {
$basename = basename($directory);
if (galleryExists($basename)) {
$inidata = getGalleryConfig($basename);
if ($inidata[GALLERYSEC]['title']) {
$label = $inidata[GALLERYSEC]['title'];
} else {
$label = $basename;
}
$url = sprintf('index.php?galleryname=%s', urlencode($basename));
}
$retval[] = array('gallery' => $basename,
'label' => $label,
'url' => $url);
}
return $retval;
}
/**
* Gibt die Thumbnail-Bilder die in @a $thumbinfo definiert sind aus.
*
* @param &$thumbinfo Referenz auf ein Array, wie es von
* getThumbNailInfo() zurückgegeben wird
*
* @bug die HTML-Ausgabe sollte in die Ausgabeseite verschoben werden
* und diese Funktion nur noch die Daten entsprechend aufbereiten
*
* @see getThumbNailInfo()
*/
function showThumbnails(&$thumbinfo) {
foreach ($thumbinfo[2] as $basename => $data) {
printf("<div class=\"thumbnail\"><img src=\"%s\" alt=\"\" \"%s\" /></div>",
@ -199,6 +311,17 @@ function showThumbnails(&$thumbinfo) {
}
}
/**
* Gibt das erste Vorschaubild aus @a $thumbinfo aus.
*
* @param &$thumbinfo Referenz auf ein Array, wie es von
* getThumbNailInfo() zurückgegeben wird
*
* @bug die HTML-Ausgabe sollte in die Ausgabeseite verschoben werden
* und diese Funktion nur noch die Daten entsprechend aufbereiten
*
* @see getThumbNailInfo()
*/
function showPreview(&$thumbinfo) {
foreach ($thumbinfo[2] as $basename => $data) {
$galleryname = $thumbinfo[1];
@ -210,13 +333,25 @@ function showPreview(&$thumbinfo) {
DIRECTORY_SEPARATOR .
$scaledimage));
$label = getImageLabel($galleryname, $basename);
printf("<a class=\"lightbox\" title=\"%s\" href=\"%s\" rel=\"lightbox\"><img id=\"contentimg\" src=\"%s%s%s\" alt=\"%s\" %s /></a>",
printf('<a class="lightbox" title="%s" href="%s" rel="lightbox">' .
'<img id="contentimg" src="%s%s%s" alt="%s" %s /></a>',
$label, $fullname, GALLERYPREFIX, DIRECTORY_SEPARATOR,
$scaledimage, $label, $scaledimagesize[3]);
break;
}
}
/**
* Gibt die Beschreibung des ersten Bildes aus @a $thumbinfo aus.
*
* @param &$thumbinfo Referenz auf ein Array, wie es von
* getThumbNailInfo() zurückgegeben wird
*
* @bug die HTML-Ausgabe sollte in die Ausgabeseite verschoben werden
* und diese Funktion nur noch die Daten entsprechend aufbereiten
*
* @see getThumbNailInfo()
*/
function renderDescription(&$thumbinfo) {
foreach ($thumbinfo[2] as $basename => $data) {
print htmlentities(getImageLabel($thumbinfo[1], $basename));