Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 6 Gast/Gäste
Private Userdaten
#1
Hallo allerseits,

da wir unser Forum bezüglich einer Online-Anmeldung für Veranstaltungen erweitern möchten, würde ich gerne das Benutzer-CP um "private" User-Daten erweitern. Also zB Adresse, Telefonnummer, Allergien usw.

Diese Daten sollten vom User normal im CP editierbar sein, aber für sonst niemanden. Erfolgt eine Anmeldung, sollten die Daten aus für die Veranstalter (zB eine spezielle Usergruppe) sichtbar sein.

Gibt es da schon etwas in der Richtung, was ich umbauen oder als Anregung nutzen könnte?

V.
Zitieren
#2
Admin CP--> User & Groups --> Custom Profile Fields

Dann fügst du ein neues hinzu und machst unten bei "Hidden on Profile" Yes und dann können nur die Administratoren und Moderatoren das Feld im Profil sehen. Das dumme ist, das die Felder nicht mal den Usern gezeigt werden, die es bearbeitet haben. Sie können ihre Daten dann nur noch in den Profil Optionen sehen.
Gruß Manuel
Bitte erst die Suche und die Doku benutzen.
Zitieren
#3
Auch wenn mein erster Gedanke bei den Custom Profile Fields war (wie mein Vorposter folgerichtig schon erwähnte), stört mich der Gedanke, das man diese nicht so individuell Einstellen und später mit Arbeiten kann, wie man es gerne hätte; die "Veranstalter" müssten ständig in das Profil eines Usern und zwischen den anderen eher unwichtigen, voreingestellten, mybb-spezifischen Daten die gebrauchte Information holen.

Ich glaube es wäre viel eleganter eine eigene MyBB-Tabelle in der DB zu erstellen und im BenutzerCP einen neuen Optionspunkt in das Menü zu setzen, worin die gewünschten Änderungen vorgenommen werden können.
Nachteil dieser Methode ist natürlich, dass diese Daten nicht unmittelbar nach der Benutzerregistrierung verfügbar sind und erst nach der Anmeldung im BenutzerCP vorgenommen werden müssen - das impliziert eine ausreichende Bekanntmachung dieser neuen Funktion im BenutzerCP, damit auch neu registrierte Benutzer wissen, das es solch eine Möglichkeit gibt.

Also gibt es folgende Möglichkeiten:
  • Man benutzt die Custome Profile Fields, setzt diese auf unsichtbar, worauf die Informationen nur vom Team eingesehen werden kann. Dies ist notwendig, damit die Daten nicht im öffentlichen Profil eines Benutzers einsehbar sind.
    • Ich persönlich mag diese Option nicht, da es aus technisch-praktischer Sicht auf kurz oder lang die mybb_userfields-Tabelle "zumüllt"
    • Als Vorteil ist zu betonen, das in der Umgebungsvariable $mybb->user die verschiedenen Werte der Profilfelder (Custom Profile Fields) abgelegt sind und somit jederzeit in einem Script aufgerufen werden können
  • Man schreibt ein individuelles Script, welches im BenutzerCP die Einstellungsmöglichkeiten bietet, eine viel flexiblere Informationseingabe zu tätigen, jedoch gleichzeitig den Nachteil bringt, dass neuregistrierte Benutzer auf diese Funktion aufmerksam gemacht werden müssen
    • obiges Problem kann mit bekannten Plugins gelöst werden, indem ein neuregistrierter Benutzer unmittelbar nach der Neuanmeldung eine private Nachricht zugesandt bekommt oder gleich zu einer vordefinierten Seite weitergeleitet wird

Es obliegt nun dir eine passende Option im Kontext der Funktionswünsche auszuwählen.
Zitieren
#4
Dankeschön! Mir persönlich scheint die zweite Möglichkeit langfristig erweiterbarer zu sein. Zusätzlich kann man ja vor dem Klick des Anmeldebuttons für eine Veranstaltung die neuen Daten überprüfen. Frühestens dann werden sie benötigt.
Zitieren
#5
So, ich habe mich jetzt mal tiefer in die usercp.php eingelesen und mir auch mal angeschaut, wo die Hooks platziert sind. Die Seite, um die es gehen wird ist übrigens diese. Um einfach updaten zu können, ist es mir sehr wichtig, nur das Plugin-System zu benutzen und nichts im Original-Code ändern zu müssen, da ich möglichst häufig update und dabei wenig Aufwand haben möchte.

Deshalb scheint es mir am sinnvollsten, im User-CP einen neuen Menüpunkt "Anmeldedaten" anzulegen. Am schönsten wäre es natürlich, wenn man den Code für die Custom-Fields missbrauchen re-usen könnte, dann könnte ich eine Tabelle "custom_private_fields" in der gleichen Struktur erzeugen und auch recht simpel Felder zwischen den beiden Tabellen hin- und herschieben (zu Testzwecken).

Programmieren werden wir das ganze wohl selbst, interessant wäre es, wenn mir jemand einen ersten Schubs in die richtige Richtung geben könnte, vor allem, wo/wie ich einen neuen Menüpunkt und Aktionen einfügen.
Zitieren
#6
Neue Punkte für das Menü im Benutzer-CP kannst du in den usercp_nav... Templates einfügen.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#7
Ich habe erst letztens an einem Plugin gearbeitet und arbeite aktuell an einem neuen, wo ich in das UserCP einen eigenen Menüpunkt einfügen muss.

Da ich nicht die Arbeit mit den Template-Ersetzungsfunktionen mag, da es oft vorkommt, das die Replace-Methoden wegen verschiedenen Templatesets bzw. individuellen Änderungen fehlschlagen, habe ich einfach an die Variable, welches das CP-Menü enthält, weitere Zellen hinzugefügt und mir so eine neue Kategorie ins Menü gezaubert.
PHP-Code:
$plugins->add_hook("usercp_start""handle_settings");
function 
handle_settings()
{
        global 
$usercpnav$usercpmenu$theme$lang;

        
$unanswrd_usercp '<tr>
<td class=tcat><span class="smalltext"><strong>Kat-Titel</strong></span></td>
</tr>
<tr>
<td class=trow1><ul class="usercpnav"><li><a href="usercp.php?action=meine_einstellungen">Einstellungen</a></li></ul></td>
</tr>'
;
        
$usercpnav str_replace($usercpmenu$usercpmenu.$unanswrd_usercp$usercpnav);

Ich weiß, ist eine sehr unkonventionelle Lösung, jedoch effektiv, da man so nicht von bestimmten Templatesets abhängig ist.

Nun fangen wir den Link in der gleichen Funktion ab, müssen jedoch die globalen Variablen zuvor erweitern:
PHP-Code:
$plugins->add_hook("usercp_start""handle_settings");
function 
handle_settings()
{
        global 
$mybb$templates$theme$lang$usercpnav$usercpmenu;

        
$unanswrd_usercp '<tr>
<td class=tcat><span class="smalltext"><strong>Kat-Titel</strong></span></td>
</tr>
<tr>
<td class=trow1><ul class="usercpnav"><li><a href="usercp.php?action=meine_einstellungen">Einstellungen</a></li></ul></td>
</tr>'
;
        
$usercpnav str_replace($usercpmenu$usercpmenu.$unanswrd_usercp$usercpnav);

        if (
$mybb->input[action] == "meine_einstellungen")
        {
                
// Hier dann das gewünschte Formular zum Einsenden der Daten einfügen, bzw die Daten vorbereiten und dann unten mit einem Template ausgeben
               
               // Post-Abfragen und Aufbereitung der eingesendeten Daten
               
               
eval("\$page = \"".$templates->get("mein_template")."\";");
               
output_page($page);
        }

Sämtliche action-Anweisungen sind in der gleichen Funktion abzufangen, da der Hook unmittelbar am Anfang der usercp.php steht.
Zitieren
#8
Dankeschön, der Hinweis hat uns sehr geholfen. Der User kann nun bereits (in unserem dev-System) eine Adresse hinzufügen und sie natürlich auch ändern.

Für die Anmeldung zu Veranstaltungen würden wir gerne eine Möglichkeit zu Frei-Text im BBCode schaffen, um den entsprechenden Charakter zu beschreiben. Gibt es da eine Möglichkeit, das Eingabeformular für Threads/PNs wiederzuverwenden?
Zitieren
#9
Er wird mit der Funktion build_mycode_inserter() erzeugt. Wie du einsetzt, kannst du z.B. der newthread.php entnehmen.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren