FE-Users Modul Bilderverwaltung

Hilfe zu Modulen und Tags
Post Reply
Sound_City
Forum Members
Forum Members
Posts: 14
Joined: Tue Jul 08, 2008 6:26 am

FE-Users Modul Bilderverwaltung

Post by Sound_City »

Hi Forum,

ich habe eine Frage zur Verwaltung der User-Bilder beim FrontEnd-Users-Modul.

Ich habe die Eigenschaft 'Foto' eingerichtet und kann so für jeden User ein Bild über die Eingabemaske einpflegen.

FE-Users speichert die Bilder aber leider alle unter fortlaufenden Dateinamen wie "1_foto", "2_foto" etc., was nicht besonders aussagekräftig ist, wenn man bspw. nur in die Bilderverwaltung schaut.

Frage:
Gibt es eine Möglichkeit die Dateien bei der Eingabe z.B. unter ihrem Originalnamen zu hinterlegen? Oder vielleicht mit dem Username zu verbinden, bspw. "foto_USERNAME"? Damit wäre mir schon geholfen.

Ich habe hier allerdings bereits einen ganzen Satz an Userfotos (als USERNAME.jpg) vorliegen. Die Ideallösung wäre daher ein upload aller Dateien und die anschließende Verknüpfung des Profils mit einem bereits hochgeladenen Bild. Leider suche ich nach der Option bislang vergebens...

Vielleicht hat einer von euch eine Idee oder kann mir weiterhelfen? Vielen Dank!
NaN

Re: FE-Users Modul Bilderverwaltung

Post by NaN »

FEUsers speichert die Bilder unter der UserID und dem Namen des Feldes: [USERID]_[FELDNAME].jpg
D.h. das Feld heißt bei Dir "foto".
Die UserID ist eine fortlaufende Nummer, die bei jedem neuen User um Eins erhöht wird.
Somit kommen diese Dateinamen zustande.
Da gibt es leider keine Option dafür.
Wenn Du die Dateien unter ihrem Originalnamen speicherst, besteht das Risiko, dass unterschiedliche User verschiedene Bilder allerdings mit gleichem Bildnamen hochladen könnten. Das wäre ein heilloses Durcheinander, weil jedesmal, wenn ich ein Bild hochlade, ich damit das Bild eines anderen Users überschreiben würde. Ebenso wie die Usernamen müssen auch die Namen der Bilder einmalig sein.
Dafür bietet sich die UserID (bzw. auch der Username) an.
Da weiterhin die Möglichkeit besteht, mehrere Bilder pro User hochzuladen, muss auch der Feldname mit in den Dateinamen, damit eindeutig unterschieden werden kann, welches Bild zu welchem Feld gehört.
Wenn Du den Bildnamen anstelle von [USERID]_[FELDNAME].jpg in [USERNAME]_[FELDNAME].jpg ändern möchtest, musst Du den Quellcode des Moduls bearbeiten.

Folgende Änderungen müssten dabei vorgenomen werden (hab sie noch nicht getestet)...

action.do_adduser3.php Zeile 199:

Code: Select all

$result = $this->ManageImageUpload($id,'input_', $k, $uid, $vals[2] );
ändern in:

Code: Select all

$result = $this->ManageImageUpload($id,'input_', $k, $params['input_username'], $vals[2] );

action.do_edituser3.php Zeile 252:

Code: Select all

$result = $this->ManageImageUpload($id,'input_', $k, $user_id, $vals[2] );
ändern in:

Code: Select all

$result = $this->ManageImageUpload($id,'input_', $k, $username, $vals[2] );

action.do_userchangesettings.php Zeile 209:

Code: Select all

$result = $this->ManageImageUpload($id, 'feu_', $propname, $uid, $arr[2] );
ändern in:

Code: Select all

$result = $this->ManageImageUpload($id, 'feu_', $propname, $uinfo['username'], $arr[2] );

FrontEndUsers.module.php Zeile 1955:
(Optional)

Code: Select all

function ManageImageUpload($id, $fldprefix, $fldname, $uid, $image_width)
ändern in:

Code: Select all

function ManageImageUpload($id, $fldprefix, $fldname, $uname, $image_width)

FrontEndUsers.module.php Zeile 1984:
(Nur wenn vorhergende Änderung vorgenommen wurde.
Hier wird der Bildname festgelegt.
$uid ist die UserID/Username, $fldname ist der Feldname, $ext ist die Dateinamenerweiterung (jpg,gif,png etc.))

Code: Select all

$destname = $uid.'_'.$fldname.$ext;
ändern in:

Code: Select all

$destname = $uname.'_'.$fldname.$ext;
(Die letzten zwei Ändrungen sind nur dafür, dass im Quellcode keine irreführenden Variablen-Namen verwedet werden.
Hat nix mit der Funktionalität zu tun.)

Allerdings musst Du diese Änderungen jedesmal erneut vornehmen, wenn Du ein Update des Moduls vornimmst.
Da Du die User ja sowieso neu anlegen musst, kannst Du doch dabei auch gleich die Bilder erneut hochladen.
Das Modul speichert beim Anlegen/Ändern eines Benutzers für dieses "Bild-Feld" den Namen der Bild-Datei in der Datenbank.
Das ist sozusagen die "Verknüpfung" zwischen Profil und Profilbild nach der Du suchst.
Einfach nur die Bilder auf den Server zu laden, reicht daher nicht aus, da das Feld in der Datenbank weiterhin leer bleiben würde.
Das Modul sucht bei Feldern vom Typ Bild nicht automatisch nach Dateien mit Namen [USERNAME]_[FELDNAME].jpg sondern holt sich wie bei jedem anderen Feld erstmal die Daten aus der Datenbank.
Das mit dem Bild wird dann im Template geregelt. Dort muss dann geprüft werden, ob es sich um ein Bild handelt. Wenn ja, dann muss im Template anstelle des reinen Feldinhalts stehen.
Last edited by NaN on Mon Aug 25, 2008 8:47 am, edited 1 time in total.
Sound_City
Forum Members
Forum Members
Posts: 14
Joined: Tue Jul 08, 2008 6:26 am

Re: FE-Users Modul Bilderverwaltung

Post by Sound_City »

OK, besten Dank erstmal für den Code und die Erklärung.

Klingt alles sehr schlüssig. hab mir schon gedacht, dass es nur über einen direkten Eingriff in den Code/template zu realisieren ist. Ich bin ich mir allerdings noch nicht ganz sicher ob ich 1) die Bastelei auf mich nehme und eine imo wesentlich übersichtlichere Verwaltung habe oder 2) bei den Vorgaben des Moduls bleibe und schneller ein Ergebnis habe - selbst wenn's nicht optimal ist.

Ich schau's mir nochmal an und werd berichten wie's läuft, wenn ich's einbaue.
Post Reply

Return to “Module und Tags”