Benutzerspezifische Profilfelder ausblenden

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Snippets können über unser Kontaktformular eingereicht werden (bitte als vollständiger, Copy&Paste fähiger Beitrag).
Bei Fragen oder Problemen benutze bitte das Forum [3.0.x] Mod Support.
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.
Antworten
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5389
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Benutzerspezifische Profilfelder ausblenden

Beitrag von oxpus »

Ich habe mal ein Snippet gebastelt, um bestimmte benutzerspezifische Profilfelder nur für Foren-Gründer und für den betreffenden Benutzter sichtbar zu machen:

Öffne

includes/functions_profile_fields.php

finde

Code: Alles auswählen

    function generate_profile_fields_template($mode, $user_id = 0, $profile_row = false)
    {
        global $db;  
und hier die Zeile

Code: Alles auswählen

        global $db; 
ersetzen mit

Code: Alles auswählen

        global $db, $user;  
finde

Code: Alles auswählen

        else if ($mode == 'show')
        {
            // $profile_row == $user_fields[$row['user_id']];
            $tpl_fields = array();
            $tpl_fields['row'] = $tpl_fields['blockrow'] = array();  
danach einfügen

Code: Alles auswählen

            // Hier die Feldkennungen gemäß Profilfeldverwaltung angeben, nicht die angegebenen Namen des Feldes:
            $forbidden_fields = array('field_name_1', 'field_name_2');  
finde

Code: Alles auswählen

                    $tpl_fields['row'] += array(
                        'PROFILE_' . strtoupper($ident) . '_VALUE'    => $value,  
davor einfügen

Code: Alles auswählen

                $is_forbidden = (in_array($ident_ary['data']['field_name'], $forbidden_fields)) ? true : false;

                if (($is_forbidden && ($user->data['user_type'] == USER_FOUNDER || $user->data['user_id'] == $user_id)) || !$is_forbidden)
                {  
finde

Code: Alles auswählen

                    'PROFILE_FIELD_EXPLAIN'    => $ident_ary['data']['lang_explain'],

                        'S_PROFILE_' . strtoupper($ident)        => true
                    );  
danach einfügen

Code: Alles auswählen

                }  
Hiervon nicht betroffen sind die Einstellungen, wo benutzerspezifische Felder angezeigt werden und auch die Erfassung im eigenen Profil, bzw. die Verwaltung der Felder im ACP für Adminstratoren.
Es können dazu auch weitere Felder in dem Array $forbidden_fields gemäß dem Muster hinterlegt werden, die allesamt in der Profilansicht für andere User (Ausnahme in diesem Beispiel eben Forengründer) nicht angezeigt werden sollen.
Bei den Feldern aber unbedingt darauf achten, die Feldkennung anzugeben, die auch im Admin-Bereich zu dem Feld vom Forum angezeigt/hinterlegt wird und nicht der selbst eingegebene Feldname.

Beispiele weiterer Bedingungen, wer die Profilfelder nicht sehen darf:

Nur für den Benutzer selber:

Code: Alles auswählen

                if (($is_forbidden && $user->data['user_id'] == $user_id)) || !$is_forbidden)
                {   
Bestimmte Benutzer ausnehmen:

Code: Alles auswählen

                if (($is_forbidden && !in_array($user->data['user_id'], array(10,11,12))) || !$is_forbidden)
                {   
Hier ist

Code: Alles auswählen

array(10,11,12) 
mit den Benutzer-IDs zu füllen, die die Profilfelder nicht sehen sollen.

06.06.2009: Anpassung wegen ungenauer Suchstelle
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Antworten

Zurück zu „[3.0.x] Snippets“