Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@01-Scripts
Last active August 8, 2018 09:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 01-Scripts/712454 to your computer and use it in GitHub Desktop.
Save 01-Scripts/712454 to your computer and use it in GitHub Desktop.
PHP-Funktion um Bilder aus einer 01Gallery V2-Bildergalerie an anderer Stelle auszugeben http://www.01-scripts.de
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<?PHP
//Beispiel-Datei zur Nutzung von echo_galpics.php
include_once("echo_galpics.php");
/* Bilder ausgeben:
Binden Sie auf der PHP-Seite, auf der Sie Bilder aus Ihrer Galerie ausgeben
möchten diese Datei EINMALIG per PHP folgendermaßen ein:
<?PHP include_once("ihr-pfad/echo_galpics.php"); ?>
Anschließend können Sie in dieser PHP-Datei mit folgendem Befehl die Bilder ausgeben:
<?PHP
echo echo_pics($galid,$anzahl,$order,$zielurl,$echo_title=true,$modul="01gallery",$add_param2url=true,$cssclass="");
?>
Für die Parameter können Sie folgendes einsetzen:
$galid ID der Galerie, aus der die Bilder ausgegeben werden sollen. (Zahl ohne Anführungszeichen; 0: Alle Galerien (außer Galerien, die mit einem Passwort geschützt oder versteckt sind.) werden berücksichtigt)
$anzahl Anzahl an Bildern, die ausgegeben werden sollen (Zahl ohne Anführungszeichen)
$order Sortierreihenfolge Folgende Werte sind möglich (Text-String mit Anführungszeichen):
"rand" // Zufällige Reihenfolge
"new" // Neuste Bilder zuerst
"old" // Älteste Bilder zuerst
"order_up" // Angegebene Reihenfolge aufsteigend
"order_down" // Angegebene Reihenfolge absteigend
$zielurl Ziel-URL Ihrer Galerie, auf die verlinkt werden soll (Text-String mit Anführungszeichen)
$echo_title true/false // Bild-Titel mit ausgeben ? (True/False ohne Anführungszeichen)
*optionale Parameter:
$modul Standardmäßig mit "01gallery" vorbelegt. Sollte Ihr Modul anders heißen, bitte umbennen!
$add_param2url true/false // Verlinkt standardmäßig automatisch zu der Galerie, aus der das Bild stammt
$cssclass Text-String für ein CSS-Präfix, um verschiedene CSS-Klassen bei der Ausgabe zu erhalten (Text-String mit Anführungszeichen)
Ein Aufruf kann dann z.B. so aussehen:
echo echo_pics(1,5,"rand","http://www.01-scripts.de",true);
Es können nach dem ersten Include-Befehl beliebig oft (auch verschiedene Galerien)
über diese Funktion aufgerufen werden.
Auch an verschiedenen Stellen.
*/
?>
<head>
<title>Beispiel-Datei zur Nutzung von echo_galpics.php</title>
<!-- Beispiel-CSS-Code zur Formatierung der Ausgabe -->
<!--
// VERTIKALE AUSGABE DER THUMBNAILS:
<style type="text/css">
ul.gal_pics {
list-style-type:none;
margin-left:-40px;
}
li.gal_pics {
margin:0;
padding:3px;
}
ul.gal_pics li.gal_pics .small {
font-size:10px;
}
</style>
-->
<!--
// HORIZONTALE AUSGABE
<style type="text/css">
ul.gal_pics {
list-style-type:none;
}
li.gal_pics {
margin:0;
padding:3px;
float:left;
}
ul.gal_pics li.gal_pics .small {
font-size:10px;
}
</style>
-->
</head>
<body>
<h1>Hier einmal Bilder ausgeben:</h1>
<?PHP echo echo_pics(1,5,"rand","http://www.01-scripts.de",false); ?>
<h1>Und hier nochmal Bilder aus einer anderen Galerie</h1>
<?PHP echo echo_pics(2,5,"new","http://www.01-scripts.de",false); ?>
</body>
</html>
<?PHP
/*
01-Gallery V2 - Copyright 2003-2018 by Michael Lorer - 01-Scripts.de
Lizenz: Creative-Commons: Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Deutschland
Weitere Lizenzinformationen unter: http://www.01-scripts.de/lizenz.php
Modul: 01gallery
Dateiinfo: Ausgabe von X Bildern aus dem 01-Galleryscript
.GIF-Dateien werden hier nicht untersützt.
*/
// MySQL-Zugangsdaten
$mysql['user'] = "user"; // MySQL-Username
$mysql['passw'] = ""; // MySQL-Passwort
$mysql['host'] = "localhost"; // MySQL-Host
$mysql['database'] = ""; // MySQL-Datenbank
$mysql['instnr'] = "1"; // Installationsnummer des 01ACP
$pfad_01scripts = "01scripts"; // Absoluter (inkl. http:// ) oder relativer Pfad zum Verzeichnis 01scripts
/* Bilder ausgeben:
Binden Sie auf der PHP-Seite, auf der Sie Bilder aus Ihrer Galerie ausgeben
möchten diese Datei EINMALIG per PHP folgendermaßen ein:
<?PHP include_once("ihr-pfad/echo_galpics.php"); ?>
Anschließend können Sie in dieser PHP-Datei mit folgendem Befehl die Bilder ausgeben:
<?PHP
echo echo_pics($galid,$anzahl,$order,$zielurl,$echo_title=true,$modul="01gallery",$add_param2url=true,$cssclass="");
?>
Für die Parameter können Sie folgendes einsetzen:
$galid ID der Galerie, aus der die Bilder ausgegeben werden sollen. (Zahl ohne Anführungszeichen; 0: Alle Galerien (außer Galerien, die mit einem Passwort geschützt oder versteckt sind.) werden berücksichtigt)
$anzahl Anzahl an Bildern, die ausgegeben werden sollen (Zahl ohne Anführungszeichen)
$order Sortierreihenfolge Folgende Werte sind möglich (Text-String mit Anführungszeichen):
"rand" // Zufällige Reihenfolge
"new" // Neuste Bilder zuerst
"old" // Älteste Bilder zuerst
"order_up" // Angegebene Reihenfolge aufsteigend
"order_down" // Angegebene Reihenfolge absteigend
$zielurl Ziel-URL Ihrer Galerie, auf die verlinkt werden soll (Text-String mit Anführungszeichen)
$echo_title true/false // Bild-Titel mit ausgeben ? (True/False ohne Anführungszeichen)
*optionale Parameter:
$modul Standardmäßig mit "01gallery" vorbelegt. Sollte Ihr Modul anders heißen, bitte umbennen!
$add_param2url true/false // Verlinkt standardmäßig automatisch zu der Galerie, aus der das Bild stammt
$cssclass Text-String für ein CSS-Präfix, um verschiedene CSS-Klassen bei der Ausgabe zu erhalten (Text-String mit Anführungszeichen)
Ein Aufruf kann dann z.B. so aussehen:
echo echo_pics(10,5,"rand","http://www.01-scripts.de",true);
Es können nach dem ersten Include-Befehl beliebig oft (auch verschiedene Galerien)
über diese Funktion aufgerufen werden.
Auch an verschiedenen Stellen.
*/
/* Verbindung zur MySQL-Datenbank aufbauen */
$mysqli = new mysqli($mysql['host'], $mysql['user'], $mysql['passw'], $mysql['database']);
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
function echo_pics($galid,$anzahl,$order,$zielurl,$echo_title=true,$modul="01gallery",$add_param2url=true,$cssclass=""){
global $mysqli,$pfad_01scripts,$mysql;
$mysql_tables['module'] = "01_".$mysql['instnr']."_module";
// Parameter überprüfen, sonst abbrechen
if(!is_numeric($anzahl)) return "Fehler: Anzahl ist keine Nummer!";
if(empty($order)) $order = "random";
// Alle Bilder unabhängig von der GalerieID anzeigen?
if(!is_numeric($galid) || $galid == 0 || empty($galid)) $wgalid = "";
else $wgalid = " WHERE galid = '".$mysqli->escape_string($galid)."' ";
$list = $mysqli->query("SELECT nr FROM ".$mysql_tables['module']." WHERE idname = '".$mysqli->escape_string($modul)."' LIMIT 1",$db);
while($row = $list->fetch_assoc()){
$mysql_tables['gallery'] = "01_".$mysql['instnr']."_".$row['nr']."_galerien";
$mysql_tables['pics'] = "01_".$mysql['instnr']."_".$row['nr']."_pictures";
}
// Bilder aus DB holen
if(isset($mysql_tables['gallery'])){
switch($order){
case "new":
$orderby = "pictimestamp DESC";
break;
case "old":
$orderby = "pictimestamp ASC";
break;
case "order_up":
$orderby = "sortorder ASC";
break;
case "order_down":
$orderby = "sortorder DESC";
break;
default:
$orderby = "RAND()";
break;
}
$c = 0;
$return = "<ul class=\"".$cssclass."gal_pics\">\n";
$list = $mysqli->query("SELECT id,galid,filename,title FROM ".$mysql_tables['pics'].$wgalid." ORDER BY ".$orderby."");
while($row = $list->fetch_assoc()){
$listgal = $mysqli->query("SELECT galpassword,hide FROM ".$mysql_tables['gallery']." WHERE id = '".$mysqli->escape_string($row['galid'])."' LIMIT 1");
$statrow = $listgal->fetch_assoc();
$galdir = $pfad_01scripts."/01module/".$modul."/galerien/gal_".$row['galid'];
// Dürfen Bilder aus dieser Galerie ausgegeben werden? (hide?, galpassword?)
if(!check_galpw_and_hide_rec($row['galid'],$mysql_tables['gallery']) && $galid == 0)
continue;
elseif(!empty($statrow['galpassword'])){
$galdir .= "_".substr(md5($mysql['instnr'].$row['galid'].$statrow['galpassword']),0,10);
}
$split = explode('.',$row['filename']);
$filename = $split[0];
if(isset($split[1])) $endung = $split[1];
else $endung = "";
// Link zusammenstellen
if(strchr($zielurl,"?") && $add_param2url)
$zielurl_new = $zielurl."&amp;galid=".$row['galid'];
elseif($add_param2url)
$zielurl_new = $zielurl."?galid=".$row['galid'];
else
$zielurl_new = $zielurl;
// Titel ausgeben?
if($echo_title) $addtitle = "<br /><span class=\"".$cssclass."small\">".stripslashes($row['title'])."</span>";
else $addtitle = "";
// Bilder ausgeben
if($endung != "gif")
$return .= "<li class=\"".$cssclass."gal_pics\"><a href=\"".$zielurl_new."\"><img src=\"".$galdir."/".$filename."_tb.".$endung."\" alt=\"".stripslashes($row['title'])."\" title=\"".stripslashes($row['title'])."\" /></a>".$addtitle."</li>\n";
$c++;
if($c == $anzahl)
break;
}
$return .= "</ul>";
return $return;
}
else return "Fehler: Modul ".$modul." nicht gefunden. Bitte &uuml;berpr&uuml;fen Sie Ihre Eingaben!";
}
/* Funktion überprüft, ob eine ggf. übergeordnete Galerie ein Passwort hat oder versteckt ist
Wenn dies der Fall ist gibt die Funktion FALSE zurück
Andernfalls TRUE (= Bilder dieser Galerie können und dürfen ausgegeben werden) */
function check_galpw_and_hide_rec($galid,$galtable){
global $mysqli;
$listgal = $mysqli->query("SELECT subof,galpassword,hide FROM ".$galtable." WHERE id = '".$mysqli->escape_string($galid)."' LIMIT 1");
$statrow = $listgal->fetch_assoc();
if($statrow['hide'] == 1 || !empty($statrow['galpassword']))
return FALSE;
elseif($statrow['subof'] != 0)
return check_galpw_and_hide_rec($statrow['subof'],$galtable);
else
return TRUE;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment