Benutzerspezifische Profilfelder ausblenden
Verfasst: 29.05.2009 12:21
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
und hier die Zeile
ersetzen mit
finde
danach einfügen
finde
davor einfügen
finde
danach einfügen
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:
Bestimmte Benutzer ausnehmen:
Hier ist
mit den Benutzer-IDs zu füllen, die die Profilfelder nicht sehen sollen.
06.06.2009: Anpassung wegen ungenauer Suchstelle
Ö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;
Code: Alles auswählen
global $db;
Code: Alles auswählen
global $db, $user;
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();
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');
Code: Alles auswählen
$tpl_fields['row'] += array(
'PROFILE_' . strtoupper($ident) . '_VALUE' => $value,
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)
{
Code: Alles auswählen
'PROFILE_FIELD_EXPLAIN' => $ident_ary['data']['lang_explain'],
'S_PROFILE_' . strtoupper($ident) => true
);
Code: Alles auswählen
}
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)
{
Code: Alles auswählen
if (($is_forbidden && !in_array($user->data['user_id'], array(10,11,12))) || !$is_forbidden)
{
Code: Alles auswählen
array(10,11,12)
06.06.2009: Anpassung wegen ungenauer Suchstelle