Seite 1 von 1

Standard Galerie von A. Hummel Bildreihenfolge umkehren?

Verfasst: Sa 21. Apr 2007, 15:19
von Tim Sum
Hallo, ich benutze das unveränderte Galeriemodul von Timo A. Hummel. (siehe code weiter unten)
Wenn neue Bilder hochgeladen werden, werden diese dann allerdings immer hinten angehängt.

Ich hätte gerne die frisch hochgeladenen Bilder immer vorne.

Ich habe schon im Forum gesucht. Man kann mit asort / arsort das array sortieren,
http://contenido.org/forum/viewtopic.ph ... ight=asort
dann richtet es sich aber nicht mehr nach dem Hochladedatum.
Auch array_reverse funktioniert nicht.

Ihr merkt schon, dass hier jemand versucht am PHP zu drehen, ohne wirklich programmieren zu können!

Meine Frage ist deshalb diese:
Kann in diesem Modul durch einen einfachen Befehl die Sortierreihenfolge umgekehrt werden?

Input-Code des Moduls:

Code: Alles auswählen

?><?php
/***********************************************
* Bildergalerie Input
*
* Author      :     Timo A. Hummel
* Copyright   :     four for business AG
* Created     :     30-09-2005
************************************************/?>

<table>
  <tr>
    <td><?php echo mi18n("Breite");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[0]"; ?>" value="<?php echo "CMS_VALUE[0]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Höhe");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[1]"; ?>" value="<?php echo "CMS_VALUE[1]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Spalten");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[2]"; ?>" value="<?php echo "CMS_VALUE[2]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Zeilen");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[3]"; ?>" value="<?php echo "CMS_VALUE[3]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Breite Detailansicht");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[4]"; ?>" value="<?php echo "CMS_VALUE[4]"; ?>"></td>
  </tr>
  <?php
  $sql = "SELECT DISTINCT dirname FROM ".$cfg['tab']['upl']." ORDER BY dirname";
  $db->query($sql);
  echo '<tr><td>'.mi18n("Verzeichnis auswählen").'</td><td>
		<select name="CMS_VAR[5]" size="1" style="width: 320px">
			<option value="">'.mi18n("Nichts ausgewählt").'</option>';
			while ($db->next_record()) {
				if ( stristr($db->f("dirname"),'CVS/') === FALSE ) {
					if ($db->f("dirname")=="CMS_VALUE[5]") {
						echo '<option value="'.$db->f("dirname").'" selected="selected">'.$db->f("dirname").'</option>';
					} else {
						echo '<option value="'.$db->f("dirname").'">'.$db->f("dirname").'</option>';
					}
				}
			}
	echo '</select></td></tr>';?>
</table>
<?php
Output-Code

Code: Alles auswählen

<?php
/***********************************************
* Bildergalerie Output
*
* Author      :     Timo A. Hummel
* Copyright   :     four for business AG
* Created     :     30-09-2005
************************************************/

cInclude("includes", "functions.api.images.php");

/* Gallery variables */
$bRecursive = false;

$sPath = "CMS_VALUE[5]";
if ($sPath=='') {
	$sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "bildergalerie/";
} else {
	$sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "CMS_VALUE[5]";
}

$iRows = "CMS_VALUE[3]";

if ($iRows == 0)
{
  $iRows = 2;
}

$iColumns = "CMS_VALUE[2]";

if ($iColumns == 0)
{
  $iColumns = 2;
}

if (isset($start))
{
  $iCurrentPage = $start;
} else {
  $iCurrentPage = 1;
}

$iWidth = "CMS_VALUE[0]";
$iHeight = "CMS_VALUE[1]";

if ($iWidth == 0)
{
  $iWidth = 300;
}

if ($iHeight == 0)
{
  $iHeight = 300;
}

$iDetailWidth = "CMS_VALUE[4]";

if ($iDetailWidth == 0)
{
  $iDetailWidth = 300;
}

$aValidExtensions = array("jpg", "jpeg", "gif", "png");

$iImagesPerPage = $iRows * $iColumns;

if ($_REQUEST['view']=='') {
	/* Read all gallery files */
	$aGalleryFiles = scanDirectory($sPath, $bRecursive);
	
         if (is_array($aGalleryFiles))
         {
	/* Filter out non-images */
	foreach ($aGalleryFiles as $key => $aGalleryFile)
	{
	  $sExtension = strtolower(getFileExtension($aGalleryFile));
	
	  if (!in_array($sExtension, $aValidExtensions))
	  {
	     unset($aGalleryFiles[$key]);
	  }
	}
	
	/* Calculate effective variables */
	$iFileCount = count($aGalleryFiles);
	$iPages = ceil($iFileCount / $iImagesPerPage);
	
	$aImagesToDisplay = array_slice($aGalleryFiles, ($iCurrentPage - 1) * $iImagesPerPage, $iImagesPerPage);
	
	$oImageTpl = new Template;
	$oGalleryTpl = new Template;
	$oEmptyImageTpl = new Template;
	
	$aRenderedImages = array();
	
	$iRow = 0;
	$iImagesRendered = 0;
	
	foreach ($aImagesToDisplay as $sImageToDisplay)
	{
	  /* Do Scaling */
	  $sScaledImage = cApiImgScale($sImageToDisplay, $iWidth, $iHeight);
	
	  $link = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$sImageToDisplay));

	  $description = ig_getImageDescription($sImageToDisplay);
	  if ($description=='') {
	  	$description = '&nbsp;';
	  }
	  
	  $download_link = str_replace($cfgClient[$client]['path']['frontend'],$cfgClient[$client]['path']['htmlpath'],$sImageToDisplay);

	  $download_size = ig_GetReadableFileSize($sImageToDisplay);
	  	  	
	  $oImageTpl->reset();
	  $oImageTpl->set("s", "FILE", $sScaledImage);
	  $oImageTpl->set("s", "WIDTH", $iWidth);
	  $oImageTpl->set("s", "HEIGHT", $iHeight);
	  $oImageTpl->set("s", "LINK", $link);
	  $oImageTpl->set("s", "DESCRIPTION", $description);
	  $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
	  $oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
	  $oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("download"));
	  $oImageTpl->set("s", "PREVIEW_CAPTION", mi18n("Bildvorschau"));
	  
	  $aRenderedImages[] = $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_image.html", true, false);
	
	  $iImagesRendered++;
	
	  if ($iImagesRendered == $iColumns)
	  {
	    $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages));
	    $oGalleryTpl->next();
	    $iImagesRendered = 0;
	    $aRenderedImages = array();
	  }
	}
	
	if (count($aRenderedImages) < $iColumns && count($aRenderedImages) > 0)
	{
	  $iEmptyCells = $iColumns - count($aRenderedImages);
	
	  $oEmptyImageTpl->set("s", "WIDTH", $iWidth);
	  $oEmptyImageTpl->set("s", "HEIGHT", $iHeight);
	
	  $sEmptyCells = str_repeat($oEmptyImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_empty.html", true, false),$iEmptyCells);
	 
	  $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages) . $sEmptyCells);
	  $oGalleryTpl->next();
	}
	
	$aLinks = array();
	
	if ($iCurrentPage > 1)
	{
	  $oPreviousTpl = new Template;
	  $oPreviousTpl->set("s", "LINK", $cfgClient[$client]["path"]["htmlpath"] . sprintf("front_content.php?idcatart=%s&start=%s", $idcatart, $iCurrentPage - 1));
	  $oPreviousTpl->set("s", "TITLE", mi18n(""));
	  $aLinks[] = $oPreviousTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_link_zuruck.html", true, false);
	}
	
	if ($iCurrentPage < $iPages)
	{
	  $oNextTpl = new Template;
	  $oNextTpl->set("s", "LINK", $cfgClient[$client]["path"]["htmlpath"] . sprintf("front_content.php?idcatart=%s&start=%s", $idcatart, $iCurrentPage + 1));
	  $oNextTpl->set("s", "TITLE", mi18n(""));
	  $aLinks[] = $oNextTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_link_vor.html", true, false);
	}
	
	$oGalleryTpl->set("s", "NAVIGATION", implode("", $aLinks));
	
	$oGalleryTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery.html", false, false);
    }
} else {
	$sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];
	$sScaledImage = cApiImgScale($sImageToDisplay, $iDetailWidth, 1000);

    $description = ig_getImageDescription($sImageToDisplay);
	if ($description=='') {
	  $description = '&nbsp;';
	}

    $download_link = str_replace($cfgClient[$client]['path']['frontend'],$cfgClient[$client]['path']['htmlpath'],$sImageToDisplay);

	$download_size = ig_GetReadableFileSize($sImageToDisplay);
	
	$oImageTpl = new Template;
	$oImageTpl->set("s", "IMG",$sScaledImage);
	$oImageTpl->set("s", "BACKLINK",'javascript:history.back()');
	$oImageTpl->set("s", "BACKCAPTION",mi18n("zurück zur Übersicht"));
    $oImageTpl->set("s", "DESCRIPTION", $description);
    $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
	$oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
	$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("download"));
	
	$oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_detail.html", false, false);
}

function ig_getImageDescription($idupl){

	global $cfg, $cfgClient, $db, $client, $lang;
	
    $cApiClient = new cApiClient($client);
	$language_separator = $cApiClient->getProperty('language','separator');
	if(is_numeric($idupl)){
		//ID is a number 
		$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl;
	}else{
		//ID is a string
		$path_parts = pathinfo($idupl);
		$upload = $cfgClient[$client]['upl']['frontendpath'];
		$len = strlen($upload);
		$pos = strpos($idupl,$upload);
		$dirname = substr($path_parts['dirname'],$pos+$len).'/';
		$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE (dirname = '".$dirname."') AND (filename='".$path_parts['basename']."') AND (filetype='".$path_parts['extension']."')";
	}
	$db->query($query);
	if($db->next_record()){
		return htmlspecialchars(urldecode($db->f("description")));
	}else{
		return '';
	}
}

function ig_GetReadableFileSize($path) {
	$filesize = filesize($path);
	$unit = "bytes";
	
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "kB"; }
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "MB"; }
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "GB"; }
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "TB"; }
	
	$filesize = round($filesize, 0);
	return $filesize." ".$unit;
}
?>

Verfasst: Sa 21. Apr 2007, 16:20
von emergence
nach

Code: Alles auswählen

   /* Calculate effective variables */ 
   $iFileCount = count($aGalleryFiles);
eine ergänzung von

Code: Alles auswählen

   if ($iFileCount != 0) {
      $aGalleryFiles = array_reverse($aGalleryFiles, true);
   }
sollte es tun...

ist nicht getestet...

Verfasst: Sa 21. Apr 2007, 18:19
von Tim Sum
Das funktioniert super. Vielen Dank, auch für die Schnelligkeit.

Verfasst: So 22. Apr 2007, 10:17
von maveric2001
und warun nicht das?

Code: Alles auswählen

/* Gallery variables */
$bRecursive = true;