Extra Seite für Files-Ordner

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
abelius-kiel
Mitglied
Beiträge: 290
Registriert: 15.03.2011 08:59

Extra Seite für Files-Ordner

Beitrag 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
Benutzeravatar
abelius-kiel
Mitglied
Beiträge: 290
Registriert: 15.03.2011 08:59

Re: Extra Seite für Files-Ordner

Beitrag von abelius-kiel »

So, ich bin einen Schritt weiter. Folgendes habe ich getan:

Die .htaccess im Ordner files wie folgt geändert:

Code: Alles auswählen

<Files *>
	Order Allow,Deny
	Allow from All
</Files>
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
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Extra Seite für Files-Ordner

Beitrag 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.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
abelius-kiel
Mitglied
Beiträge: 290
Registriert: 15.03.2011 08:59

Re: Extra Seite für Files-Ordner

Beitrag 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,
Benutzeravatar
abelius-kiel
Mitglied
Beiträge: 290
Registriert: 15.03.2011 08:59

Re: Extra Seite für Files-Ordner

Beitrag 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
Verschoben von phpBB 3.0: Mod Suche/Anfragen nach phpBB 3.0: Mod-Bastelstube am 16.08.2013 14:54 durch AYYILDIZLAR

Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Extra Seite für Files-Ordner

Beitrag von Miriam »

Also dieses Script ist... Müll.
Aktiviere mal den DEBUG Modus und starte es. KB:debugmode
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
abelius-kiel
Mitglied
Beiträge: 290
Registriert: 15.03.2011 08:59

Re: Extra Seite für Files-Ordner

Beitrag 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. :P 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
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Extra Seite für Files-Ordner

Beitrag 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

Code: Alles auswählen

if (!empty($forum_ary)){ 
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.
LisaserstesForum
Mitglied
Beiträge: 996
Registriert: 28.08.2008 20:20
Wohnort: Kassel

Re: Extra Seite für Files-Ordner

Beitrag von LisaserstesForum »

Ist auf jeden Fall eine interessante Sache Kai, wenn das fertig ist würde ich das gerne auch benutzen. :)
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 5018
Registriert: 08.06.2009 12:03

Re: Extra Seite für Files-Ordner

Beitrag von Talk19zehn »

Ja, ja - auch ich schließe mich mal an ... :wink:
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!!
Adventereigniskalender für phpBB 3.3.x,
Meine persönliche Meinung im Jahr 2024: Im Zenit seiner Popularität wirkt KI zunächst wie eine Blaupause und lässt sich aufgrund der Vielschichtigkeit nicht auf eine einzige Botschaft reduzieren. Präteritum, Perfekt, Präsens, Futur & Plusquamperfekt werden nicht fehlerfrei genutzt, gar missverstanden.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“