[Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Forum rules
Support ended: 31.12.2011

[Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby Kevin3 » Thu Jan 07, 2010 6:00 pm

Mahlzeit,

im Feature Tracker wurde das auch schon gewünscht: alle Bilder eines Albums als Archiv laden.
Da ich das auch brauchte, habe ich mich nun ans Werk gemacht und schon mal ein (simples) Addon geschrieben.

Was macht das Addon?
  • Es wird für jedes Album ein ZIP Archiv generiert und in dem Album zum Download angeboten. Die Dateigröße des ZIP wird neben dem Link angezeigt.
  • Das ZIP wird jedes mal automatisch generiert / aktualisiert, wenn ein Bild hochgeladen oder gelöscht wird.
  • Der Name des Archivs wird anhand des Albumnamens generiert.
    Automatisch "linkkonform", Leerzeichen werden z.B. durch Unterstriche ersetzt, Umlaute werden umgeschrieben und alles klein geschrieben.
  • Die Dateinamen in dem Archiv werden anhand der Bildnamen in der Galerie generiert.
    Ebenfalls "linkkonform", bzw "ZIP-konform", wie oben beschrieben.

Demo: http://www.harmony-remote-forum.de/gall ... album_id=1
--> Oben, die Box "Das ganze Album als ZIP herunter laden"

Was macht das Addon nicht?
  • Keine Einstellmöglichkeiten im ACP - alle Einstellungen müssten in den Dateien vorgenommen werden (was aber nicht nötig sein sollte).
  • Es werden keinerlei Daten in der Datenbank abgelegt.
  • Verschieben von Bildern wird nicht berücksichtigt.
    Sollten Bilder verschoben worden sein, müssten die Archive durch hochladen / löschen eines "Dummy-Bildes" in den Quell- Ziel-Alben händisch aktualisiert werden.
  • Umbenennen der Galerien wird nicht berücksichtigt.
    Da der Name eines vorhandenen Archivs anhand des Albumnamens generiert wurde, wird das ZIP nach dem umbenennen eines Albums nicht mehr gefunden, was zu einer Fehlermeldung führt.
    In diesem Fall kann man das ZIP mit dem alten Namen löschen und das neue Archiv durch hochladen / löschen eines Dummy-Bildes neu generieren lassen.
  • Es lassen sich nicht einzelne Alben für die ZIP-Archive aktivieren - es werden für alle Galerien ZIP erstellt, auch für private Galerien.
  • Kein subsilver2 Support - müsst ihr euch selbst basteln.
All das und noch mehr könnte man noch einbauen. Vielleicht macht das ja irgendjemand, oder NV nimmt dieses Feature fest in die Galerie mit auf und veredelt die Sache / macht das mal ordentlich. ;)
Für meine Zwecke reicht das aber erstmal.

Bitte auch beachten:
Denkt bitte dran, das nun bei jedem Upload ein neues ZIP vom Server generiert wird. Dadurch würde ich vom Einsatz dieses Addons in Galerien mit sehr viel Bildern eher abraten. Es bestehen zumindest keine Erfahrungen damit.

Installation

Benötigte Dateien: http://www.board3.de/temp/phpbb_gallery ... _alben.zip
Beinhaltet drei Dateien, diese bitte an diese Stelle laden:
  • root/gallery/includes/functions_compress.php
  • root/gallery/includes/functions_compress_links.php
  • root/styles/prosilver/template/gallery/zip.html
  • Bitte ein Verzeichnis namens "zip" (ohne Hochkomma) in root/gallery/ erstellen. Also:
    root/gallery/zip
    Wichtig: dies Verzeichnis muss beschreibbar sein! (Chmod 777)

Nun zu den benötigten Änderungen an den Galerie-Dateien:

Öffne:
root/gallery/album.php
suche:
Code: Select all
    'S_WATCHING_TOPIC'            => ($album_data['watch_id']) ? true : false,
));
 

füge danach ein:
Code: Select all
// Das ZIP bereit stellen....
include_once($phpbb_root_path . $gallery_root_path . 'includes/functions_compress_links.' . $phpEx); 


Öffne:
root/gallery/posting.php
suche:
Code: Select all
gallery_notification('album', $album_id, $image_name);
                        handle_image_counter($image_id_ary, true);

                        $sql = 'UPDATE ' . GALLERY_ALBUMS_TABLE . 
                            SET album_images_real = album_images_real + $images
                            WHERE album_id = $album_id"
;
                        $db->sql_query($sql); 

füge danach ein:
Code: Select all
// Ein ZIP bereit stellen....
                        include_once($phpbb_root_path . $gallery_root_path . 'includes/functions_compress.' . $phpEx); 


suche:
Code: Select all
$sql = 'DELETE FROM ' . GALLERY_IMAGES_TABLE . "
                        WHERE image_id = $image_id"
;
                    $db->sql_query($sql);

                    update_album_info($album_id); 

füge danach ein:
Code: Select all
// Ein ZIP bereit stellen....
                    include_once($phpbb_root_path . $gallery_root_path . 'includes/functions_compress.' . $phpEx); 


Öffne:
root/styles/prosilver/template/gallery/album_body.html
suche:
Code: Select all
    <!-- IF U_CREATE_ALBUM --><br /><strong><a href="{U_CREATE_ALBUM}">{L_CREATE_SUBALBUM}</a></strong><!-- ENDIF -->
</
div>
<!--
 ENDIF --> 

füge danach ein:
Code: Select all
<!-- INCLUDE gallery/zip.html --> 


Das sollte es gewesen sein - viel Spaß damit!

Gruß

Kevin
Kevin3
Posts < 10
Posts < 10
 
Posts: 2
Topics: 1
Joined: Wed Dec 02, 2009 1:09 pm
phpBB.de: saint
phpBB.com: saint_hh

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby bce » Fri Jan 08, 2010 12:06 am

:P
im Feature Tracker wurde das auch schon gewünscht: alle Bilder eines Albums als Archiv laden.
Da ich das auch brauchte, habe ich mich nun ans Werk gemacht und schon mal ein (simples) Addon geschrieben.
schon mal ne feine sache, dass du das auf die beine gestellt hast! :o

Bitte auch beachten:
Denkt bitte dran, das nun bei jedem Upload ein neues ZIP vom Server generiert wird. Dadurch würde ich vom Einsatz dieses Addons in Galerien mit sehr viel Bildern eher abraten. Es bestehen zumindest keine Erfahrungen damit.
:evil: da liegt mein problem... da ich sehr viele bilder habe und die zip-files unmengen von teuren webspace vershclingen finde ich dies nicht so gut. leider. würde es besser finden, wenn vor jedem download das zip-file erstellt und nach dem download wieder gelöscht wird. spart enorm speicherplatz...
aber ok, du hast dich für die variante entshcieden.


was mir auf die schnelle auffällt:
Umbenennen der Galerien wird nicht berücksichtigt.
Da der Name eines vorhandenen Archivs anhand des Albumnamens generiert wurde, wird das ZIP nach dem umbenennen eines Albums nicht mehr gefunden, was zu einer Fehlermeldung führt.
wenn der ordnername gleich der ordner-id wäre, so wärs für ein umbenennen egal... der dateiname schaut zwar unverständlich aus, würde aber das problem denke ich lösen.

hast gute vorarbeit geleistet. vielleicht findet sich der ein oder andere und erweitert das ganze. denke da an das der download nur möglich ist wenn man einer bestimmte user-gruppe angehört...

werds mir bei gelegenheit mal genauer anschauen...
bce
Posts > 50
Posts > 50
 
Posts: 91
Topics: 25
Images: 18
Joined: Wed Oct 08, 2008 7:07 pm
phpBB.de: bce

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby nickvergessen » Fri Jan 08, 2010 12:09 am

bce wrote:da liegt mein problem... da ich sehr viele bilder habe und die zip-files unmengen von teuren webspace vershclingen finde ich dies nicht so gut. leider. würde es besser finden, wenn vor jedem download das zip-file erstellt und nach dem download wieder gelöscht wird. spart enorm speicherplatz...
aber ok, du hast dich für die variante entshcieden.

Das würd eich auch so machen wenn möglich, das würde das Problem mit dem verschieben lösen, mit dem umbenennen usw. :P
cheers nickvergessen :geek:

Member of phpBB Development-Team
No Support via PM
User avatar
nickvergessen
Administrator
Administrator
 
Posts: 5748
Topics: 217
Images: 139
Joined: Mon Oct 15, 2007 4:15 pm
phpBB.de: nickvergessen
phpBB.com: nickvergessen

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby Kevin3 » Fri Jan 08, 2010 1:40 am

Jup, wie ich bereits erwähnte: für meine Zwecke ist das so ausreichend.
Da es sich ja um eine Sender-Logo Datenbank für Universal-Fernbedienungen handelt, sind die Bilder naturgemäß ziemlich klein. Der Grundbestand macht jetzt gerade mal um und bei 2 MB bei mir aus.

bce wrote:wenn der ordnername gleich der ordner-id wäre, so wärs für ein umbenennen egal... der dateiname schaut zwar unverständlich aus, würde aber das problem denke ich lösen.

Ja, von der Seite aus gesehen. Wäre aber für meine Zwecke nicht so hübsch. ;)

nickvergessen wrote:
bce wrote:da liegt mein problem... da ich sehr viele bilder habe und die zip-files unmengen von teuren webspace vershclingen finde ich dies nicht so gut. leider. würde es besser finden, wenn vor jedem download das zip-file erstellt und nach dem download wieder gelöscht wird. spart enorm speicherplatz...
aber ok, du hast dich für die variante entshcieden.

Das würd eich auch so machen wenn möglich, das würde das Problem mit dem verschieben lösen, mit dem umbenennen usw. :P

Das wäre sicherlich die schönere Lösung, ja.
Ich wollte auch nur eine Impuls geben und meine Arbeit mit euch teilen. Für kleinere Galerien ist das sicherlich eine Lösung, die erstmal anwendbar wäre. Und ich habe für euch schon mal den ganzen Kompressionsvorgang auseinander gedröselt - viele Infos gibt es dazu echt nicht, musste ne Menge rum probieren. ;)

Was mir bei der Programmierung noch dazu eingefallen ist: die Chose ließe sich auch recht schnell in ein ACP-Modul umstricken, um einzelne Alben zu sichern. Optional (wie jetzt) mit dem Bildnamen, oder mit dem echten Filenamen (vielleicht dann noch die SQL mit bei packen?). So könnte der Admin einzelne Galerien sichern, bevor er sie z.B. löscht.

Abschließend noch ein großes Lob an NV: deine Galerie ist echt erwachsen geworden, saubere Arbeit - Hut ab! Das Import-Feature ist z.B. schon echt ein Hammer - so was macht den Mod echt rund. Besten Dank nochmal! :)

Also, ich freue mich, wenn dieses Addon auch anderen nützt und es evtl sogar weiter entwickelt würde - viel Spaß damit!

Gruß

Kevin
Kevin3
Posts < 10
Posts < 10
 
Posts: 2
Topics: 1
Joined: Wed Dec 02, 2009 1:09 pm
phpBB.de: saint
phpBB.com: saint_hh

Album Download - Downloadlink

Postby bce » Tue Feb 02, 2010 12:15 am

ok.. habe mich der sache mal angenommen und folgendes geändert:
  • das zip wird erst wenn man auf "album herunterladen" klickt generiert
  • es werden nur bilder ins zip gepackt, die größer als 0 byte sind
  • bisher konnte es vorkommen das mehrere dateien mit gleichen namen sich im zip befanden - nun nicht mehr, doppelte bekommen einen zähler angehangen - z.b. datei.jpg und datei_1.jpg
  • link "album herunterladen" wird schlichter dargestellt, nicht so auffällig;
    oben der link unten maus drüber -> title-text 580
  • der link "album herunterladen" ist nur für user, die in einer bestimmten gruppe sind, sichtbar (leicht änderbar)

was noch zu machen ist:
  • wenn zip heruntergeladen wurde, sollte es vom server gelöscht werden - aber da muss ich erst mal sehen wie man das umsetzen könnte

dadurch ich hier keine dateianhänge hochladen darf (das finde ich sehr schade, weil man ruckzuck dateien anderen user zur verfügung stellen kann. auch kleine bilder helfen manches besser zu verstehen) hab ich die neue datei "download.php" verpackt und bei mir in die downloads reingestellt.

wenn die datei runtergeladen wurde ist sie nach foren-root/gallery zu entpacken. sie basiert auf "function_compress.php" von user kevin3.

nun sind noch folgende änderungen vorzunehmen:

öffne: gallery/album.php
suche nach
Code: Select all
// End of "We have album_type so that there may be images ..."

wenn der download nur für eine spezielle gruppe zulässig sein soll, so ist foglender code danach einzufügen
Code: Select all
//prüfen ob user album download darf
include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
$gruppen_id = XX;
$benutzer_id = $user->data['user_id'];
group_memberships($gruppen_id, $benutzer_id , true) ? $is_album_download=true : $is_album_download=false;

soll der download für jeden zulässig sein, so folgendes danach einfügen:
Code: Select all
$is_album_download=true;


suche nach
Code: Select all
'S_DISPLAY_SEARCHBOX'      => ($auth->acl_get('u_search') && $config['load_search']) ? true : false,

davor einfügen
Code: Select all
'U_ALBUM_DOWNLOAD' => append_sid("{$phpbb_root_path}{$gallery_root_path}download.$phpEx", "album_id=$album_id"),
   'S_IS_ALBUM_DOWNLOAD ' => $is_album_download,



öffne styles/prosilver/template/gallery/album_body.html
suche nach (zeiel ca 80)
Code: Select all
   <!-- IF S_IS_POSTABLE and U_SLIDE_SHOW and not S_IS_BOT -->
      <div class="pagination"><a href="{U_SLIDE_SHOW}">{L_SLIDE_SHOW}</a><!-- IF PAGINATION or TOTAL_IMAGES or U_SLIDE_SHOW --> &bull;&nbsp;<!-- ENDIF --></div>
   <!-- ENDIF -->

danach einfügen
Code: Select all
    <!-- IF S_IS_ALBUM_DOWNLOAD or U_ACP  -->
    <div class="pagination"><a href="{U_ALBUM_DOWNLOAD}" title="{L_ALBUM_DOWNLOAD_TITLE}">{L_ALBUM_DOWNLOAD}</a> &bull;&nbsp;</div>
   <!-- ENDIF -->   


öffne language/de/mods/gallery.php
suche nach
Code: Select all
));

davor einfügen
Code: Select all
   'ALBUM_DOWNLOAD' => 'Album herunterladen',
   'ALBUM_DOWNLOAD_TITLE' => 'Hier kannst du alle Bilder von diesem Album gepackt als ZIP-Datei herunterladen.',
   'ALBUM_DOWNLOAD_READY' => 'Download startet automatisch. Wenn nicht klicke %shier%s.<br /><br />Klicke %shier%s um zur Galerie zurückzukehren.',


evtl. nun noch im acp beim entsprechenden style das template aktualisieren

wie auch beim user kevin3 ist im ordner foren-root/gallery ein ordner namens "zip" anzulegen. hier werden die generierten zips gepseichert.


edit:
was noch zu machen ist:
  • wenn zip heruntergeladen wurde, sollte es vom server gelöscht werden - aber da muss ich erst mal sehen wie man das umsetzen könnte


wäre das am anfang von der download.php eine alternative :?:
Code: Select all
 $verz = opendir ("ordner/");                 
 while ($file = readdir($verz))     
     {
         $now = time();
         
         if ($file != "." && $file != "..") {
             $last_access = fileatime("ordner/".$file);
             
             if($now - $last_access > 3600) {
                 unlink('ordner/'.$file);
             }
         }
     }
Last edited by bce on Wed Feb 03, 2010 11:48 pm, edited 1 time in total.
bce
Posts > 50
Posts > 50
 
Posts: 91
Topics: 25
Images: 18
Joined: Wed Oct 08, 2008 7:07 pm
phpBB.de: bce

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby mackeno » Tue Feb 02, 2010 3:23 pm

Ich habe fügte hinzu: "[Addon] alle Bilder eines Albums als Archiv laden (ZIP)" aber es ist ein Fehler

Code: Select all
[phpBB Debug] PHP Notice: in file /gallery/includes/functions_compress_links.php on line 31: filesize() [function.filesize]: stat failed for ../gallery/zip/12a.zip
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4198: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4200: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4201: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4202: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)

der mir helfen kann?! Thank you!
mackeno
Posts < 10
Posts < 10
 
Posts: 1
Joined: Tue Feb 02, 2010 2:03 pm

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby bce » Wed Feb 03, 2010 12:21 am

mackeno wrote:Ich habe fügte hinzu: "[Addon] alle Bilder eines Albums als Archiv laden (ZIP)" aber es ist ein Fehler

Code: Select all
[phpBB Debug] PHP Notice: in file /gallery/includes/functions_compress_links.php on line 31: filesize() [function.filesize]: stat failed for ../gallery/zip/12a.zip
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4198: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4200: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4201: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4202: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3502)

der mir helfen kann?! Thank you!

du hast das den code von kevin3 eingebaut. wenn man da ein album betritt, nachdem das addon eingebaut wurde, dann erscheint diese fehlermeldung. lade mal ein bild in das entsprechende album hoch, damit die zip datei generiert wird. danach dürfte die fehlermeldung verschwunden sein.
bce
Posts > 50
Posts > 50
 
Posts: 91
Topics: 25
Images: 18
Joined: Wed Oct 08, 2008 7:07 pm
phpBB.de: bce

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby bce » Wed Feb 03, 2010 12:25 am

@nickvergessen: mal bitte das bild freischalten - thx
bce
Posts > 50
Posts > 50
 
Posts: 91
Topics: 25
Images: 18
Joined: Wed Oct 08, 2008 7:07 pm
phpBB.de: bce

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby bce » Wed Feb 03, 2010 8:52 pm

bce wrote:@nickvergessen: mal bitte das bild freischalten - thx



habe nun in das download-skript die wasserzeichen-funktionalität eingebaut. es wird, wie in der gallery üblich, auf mindesthöhe und -breite geachtet und ob überhaupt ein wasserzeichen gewünscht ist.
nachdem das bild mit dem wasserzeichen versehen wurde, wird es in das zip gepackt. das bild mit dem wasserzeichen wird im anschluß daran von der platte gelöscht, sodass es sich nur noch im zip-archiv befindet.

hier der code - ist in der aktualisierten download.php enthalten:
Code: Select all
         //datei mit wasserzeichen versehen, falls dies aktiviert ist
         if ($gallery_config['watermark_images'] && !gallery_acl_check('i_watermark', $album_id, $album_data['album_user_id']))
         {
            $filesize_var = '';
            $image_tools->set_image_data($datei);
            $image_tools->read_image(true);
      
            $image_size['file'] = $image_tools->image_size['file'];
            $image_size['width'] = $image_tools->image_size['width'];
            $image_size['height'] = $image_tools->image_size['height'];
      
            $image_source = $image_source_path  . $c_images_ary['image_filename'];
            $image_tools->set_image_data($image_source);
            $image_tools->watermark_image($phpbb_root_path . $gallery_config['watermark_source'], $gallery_config['watermark_position'], $gallery_config['watermark_height'], $gallery_config['watermark_width']);

            $image_tools->kopieren($phpbb_root_path . 'gallery/zip/', $image_name, $ext);
            $compress->add_custom_file($phpbb_root_path.'gallery/zip/'.$image_name.$ext, $image_name.$ext);
            unlink($phpbb_root_path.'gallery/zip/'.$image_name.$ext);
         }
         else {
            //bild dem zip OHNE wasserzeichen hinzufügen
            $compress->add_custom_file($datei, $image_name.$ext);         
         }


eine funktion muss der gallery/includes/functions_image.php hinzugefügt werden:
Code: Select all
   //bild mit wasserzeichen in zip-ordner kopieren
   function kopieren($zipdir, $dateiname, $ext)
   {
      //echo "<br>kopieren" . $ext. " " . $zipdir . $this->watermark;
      switch ($ext) {
         case ".png" : imagepng($this->image, $zipdir.$dateiname.$ext); break;
         case ".gif" : imagegif($this->image, $zipdir.$dateiname.$ext); break;
         default: imagejpeg($this->image, $zipdir.$dateiname.$ext, 85);
      }//switch
      @imagedestroy($this->watermark);
   }//kopieren
bce
Posts > 50
Posts > 50
 
Posts: 91
Topics: 25
Images: 18
Joined: Wed Oct 08, 2008 7:07 pm
phpBB.de: bce

Re: [Addon] alle Bilder eines Albums als Archiv laden (ZIP)

Postby bce » Thu Feb 04, 2010 12:39 am

habe nun dem downloadarchiv eine übersichtlichere modx-einbauanleitung 576 beigelegt.
bce
Posts > 50
Posts > 50
 
Posts: 91
Topics: 25
Images: 18
Joined: Wed Oct 08, 2008 7:07 pm
phpBB.de: bce

Next

Return to Supported Addons

Who is online

Users browsing this forum: No registered users and 1 guest