Seite 1 von 3
Extra Seite für Files-Ordner
Verfasst: 15.08.2013 17:22
von abelius-kiel
Hallo allerseits,
mein "files"-Ordner ist in den Jahren jetzt schon recht füllig geworden, und ich möchte gern (als admin) auf einen Blick sehen, was für Fotos sich dort angesammelt haben.
Gibt es eine Möglichkeit, die folgendes kann?::
Wie könnte man dies am einfachsten realisieren?
Danke im Voraus an die Fachleute.
LG
Kai
Re: Extra Seite für Files-Ordner
Verfasst: 15.08.2013 21:14
von abelius-kiel
So, ich bin einen Schritt weiter. Folgendes habe ich getan:
Die .htaccess im Ordner files wie folgt geändert:
Dann eine php-Seite erstellt mit folgendem Inhalt:
Code: Alles auswählen
<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
$sql = "SELECT * FROM `phpbb_attachments` ORDER BY `attach_id`";
if(!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not query last attachement', '', __LINE__, __FILE__, $sql);
}
// Ordnername
$ordner = "files"; //auch komplette Pfade möglich ($ordner = "download/files";)
// Ordner auslesen und Array in Variable speichern
$allebilder = scandir($ordner); // Sortierung A-Z
$row = $db->sql_fetchrow($result);
$attach_id = $row['attach_id'];
$filename = $row['physical_filename'];
$topic_id = $row['topic_id'];
$poster_id = $row['poster_id'];
$size = getimagesize('files/'.$filename);
$height = $size[1];
$width = $size[0];
if ($height > 150)
{
$height = 150;
$percent = ($size[1] / $height);
$width = ($size[0] / $percent);
}
else if ($width > 150)
{
$width = 150;
$percent = ($size[0] / $width);
$height = ($size[1] / $percent);
}
// Schleife um Array "$alledateien" aus scandir Funktion auszugeben
// Einzeldateien werden dabei in der Variabel $datei abgelegt
foreach ($allebilder as $filename) {
$topic_link = append_sid($phpbb_root_path.'viewtopic.'.$phpEx.'?t='.$topic_id);
echo '<a href="'. $topic_link .'"><img src="files/'.$filename.'" alt="" border="0" width="'.$width.'" height="'.$height.'"></a>';
}
?>
Das Ergebnis seht Ihr hier:
http://imkerforum.nordbiene.de/alle-anhaenge.php
Was haltet Ihr davon?
LG
Kai
Re: Extra Seite für Files-Ordner
Verfasst: 15.08.2013 22:03
von Miriam
Sehr guter Ansatz.
Folgende Gesichtspunkte könntest Du ggf. noch beachten:
- Sinn der Anpassung der .htaccess prüfen.
- Login / Darstellung nur für Admins umsetzen.
- Erstellung eines Cachefolders für Thumbnails der Original-Bilder und Anzeige nur der Thumbnails bei Seitenaufruf.
- Abgleich zwischen dem files- und dem Thumbnail-Verzeichnis.
- Anzahl der Bilder pro Seite begrenzen (Pagination).
- Codeanpassungen hier und da...
Im Großen und Ganzen: Gut gemacht.
Re: Extra Seite für Files-Ordner
Verfasst: 15.08.2013 22:20
von abelius-kiel
DAnke schön, ich werde weiter testen.
LG
Kai
PS: Hätte ich die .htaccess nicht angepasst, wären keine Bilder zu sehen, da Zugriff dann nicht erlaubt,
Re: Extra Seite für Files-Ordner
Verfasst: 16.08.2013 12:46
von abelius-kiel
Hallo liebe php-Scriptler,
mittlerweile sieht mein Script so aus:
Code: Alles auswählen
<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
$attach_general = $db->sql_fetchrow($result);
$post_id = $attach_general['post_msg_id'];
$filename = $phpbb_root_path.'files/'.$attach_data['physical_filename'];
$filetime = $attach_data['filetime'];
$filetime = date('d.m.Y H:i', $filetime);
$filename = $row['physical_filename'];
$post_link = append_sid($phpbb_root_path.'viewtopic.'.$phpEx.'?p='.$post_id.'#'.$post_id);
// Sammle Haupt Informationen für das Bild
$sql = "SELECT * FROM `phpbb_attachments` WHERE `extension` = 'jpg' OR `extension` = 'jpeg' OR `extension` = 'png'";
if(!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not query last attachment', '', __LINE__, __FILE__, $sql);
}
while($attach_data = $db->sql_fetchrow($result))
{
//Sammle Informationen für die post_id
$sql = "SELECT * FROM `phpbb_attachments` WHERE `physical_filename` = '".$attach_data['attach_id']."' LIMIT 1";
if(!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not query general attachement data', '', __LINE__, __FILE__, $sql);
}
}
// Ordnername
$ordner = "files"; //auch komplette Pfade möglich ($ordner = "download/files";)
// Ordner auslesen und Array in Variable speichern
$allebilder = scandir($ordner); // Sortierung A-Z
// Schleife um Array "$alledateien" aus scandir Funktion auszugeben
// Einzeldateien werden dabei in der Variabel $datei abgelegt
foreach ($allebilder as $filename) {
echo '<a href="'.$post_link.'"><img src="files/'.$filename.'" alt="'.$filename.'" border="1" width="150" height="100"></a>';
}
?>
Es werden nun alle Bilder angezeigt, doch wie bekomme ich die Verknüpfung zum jeweiligen Posting hin? Die Tabelle php_attachments ist ja auslesbar, der Ordner files auch.
Wie bekomme ich es durch eine Schleife hin, dass php beim Auslesen des Ornders sich die Datenbank anschaut, dort jedes Bild nach physical_filename sucht, den entsprechenden post_id ausliest und nachher in der Ausgabe jedes Bild mit einem Link zum jeweiligen Post darstellt?
Ich glaube, in meinem Script ist da ein "Bruch".
Schwierig schwierig.
LG
Kai
Re: Extra Seite für Files-Ordner
Verfasst: 16.08.2013 15:41
von Miriam
Also dieses Script ist... Müll.
Aktiviere mal den DEBUG Modus und starte es. KB:debugmode
Re: Extra Seite für Files-Ordner
Verfasst: 16.08.2013 16:05
von abelius-kiel
Hallo,
Du hast Recht. Es reicht dieses hier:
Code: Alles auswählen
<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
//////////////////////////////////////////////////////////////////////////////////////////////////
// Ordnername
$ordner = "files"; //auch komplette Pfade möglich ($ordner = "download/files";)
// Ordner auslesen und Array in Variable speichern
$allebilder = scandir($ordner); // Sortierung A-Z
// Schleife um Array "$alledateien" aus scandir Funktion auszugeben
// Einzeldateien werden dabei in der Variabel $datei abgelegt
foreach ($allebilder = glob("files/[thumb_]*",GLOB_BRACE|GLOB_ERR) as $filename)
{
$post_link = append_sid($phpbb_root_path.'viewtopic.'.$phpEx.'?p='.$post_id.'#'.$post_id);
echo '<a href="'.$post_link.'"><img src="'.$filename.'" alt="'.$filename.'" border="1" width="150" height="100"></a>';
}
?>
Ergebnis:
http://imkerforum.nordbiene.de/alle-anhaenge.php
Es werden alle Dateien des Ordners "files" angezeigt, und zwar nur die Thumbnails.

Ein kleiner Fortschritt.
Was mir noch fehlt, ist eine Verlinkung zu dem jeweiligen Post. Dies möchte ich über eine DB-Abfrage zum jeweiligen Thumnail hinbekommen. Und zwar über die Tabelle "php_attachments", dort stehen mir ja die Felder attach_id, physical_filename und vor allem
post_msg_id zur Verfügung. Wie kann ich diese Abfrage hinbekommen. Ich weiß, ich bin ganz nah dran
LG
Kai
Re: Extra Seite für Files-Ordner
Verfasst: 16.08.2013 18:16
von BNa
Das Script hier zeigt, wie das geht.
http://www.4seven.de/forum/6test/viewtopic.php?f=3&t=31
Im Paket findest Du
includes\last_x_attachments_on_forum.php
Ab hier wirds interessant
Dazu (zum vorhandenen SQL) nur noch die
POSTS_TABLE
joinen,
post_id
ermitteln, Pfadvariable erstellen und gut ist.
Damit kannst Du über eine BildAdressenAnpassung im Script entweder die Bilder oder die Thumbs ausgeben lassen.
Re: Extra Seite für Files-Ordner
Verfasst: 16.08.2013 22:28
von LisaserstesForum
Ist auf jeden Fall eine interessante Sache Kai, wenn das fertig ist würde ich das gerne auch benutzen.

Re: Extra Seite für Files-Ordner
Verfasst: 16.08.2013 23:36
von Talk19zehn
Ja, ja - auch ich schließe mich mal an ...
LisaserstesForum hat geschrieben:Ist auf jeden Fall eine interessante Sache Kai, wenn das fertig ist würde ich das gerne auch benutzen.

Das ist ja ne geniale Idee und bestimmt schon bald modifikationsreif, wie ich Kai einschätze. Glückwunsch!!