[2.0.x] Neues Feld für Profil/Registrierung

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
helluvaguy
Mitglied
Beiträge: 124
Registriert: 29.05.2001 02:00

Beitrag von helluvaguy »

Genau, ich möchte zum einen, das die neuen Felder nur von den Mitgliedern einer Benutzergruppe im jeweils eigenen Profil angezeigt werden und dann auch nur für diese Mitglieder im Profil der anderen zu sehen sind. Praktisch hat es den Hintergrund, dass es um das Forum eines Sportteams geht und dort Infos von den aktiven Spielern abgefordert werden sollen, die aber auch nur für diese einzusehen sind.

Ich habe diese erwähnte Angabe, wie in dem optionalen Teil "Feld nur von bestimmten Usern änderbar/einsehbar 1.0" angegeben, sowohl in der includes/usercp_register.php als auch in der includes/usercp_viewprofile.php, jeweils am Ende eingefügt.

Hier sind beide Dateien: usercp_register.php und usercp_viewprofile.php

In den Dateien profile_add_body.tpl und profile_view_body.tpl habe ich dann den Bereich, der betroffen ist mit

Code: Alles auswählen

<!-- BEGIN switch_certain_users -->
<!-- END switch_certain_users -->
gekennzeichnet.
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

aso.. ich hatte gestern das mit den "Benutzergruppen" überlesen.
Bei Benutzergruppen müsstest du es etwas anders machen. Dazu könntest du die Gruppenverwaltung zum Schutz .. benutzen.

Die Änderungen an profile_add_body.tpl/profile_view_body.tpl sind wie gehabt..

Code: Alles auswählen

<!-- BEGIN switch_certain_users -->
    ...
<!-- END switch_certain_users -->
..anstatt den beschriebenen Änderungen an usercp_viewprofile.php und usercp_register.php includest du vor $template->pparse('body'); die name.php (Datei kann umbenannt werden, muss dann aber auch im include-Befehl angepasst werden) aus dem oben genannten MOD..

Code: Alles auswählen

include($phpbb_root_path . 'name.'.$phpEx);
..nun kopierst du noch eine etwas angepasste name.php in den phpBB-Ordner. Angepasst deshalb, da du die Datei ja in eine andere einbindest. Speichere folgendes als name.php ab..

Code: Alles auswählen

<?php 

// User die zugriff haben: es sind gruppen_ids, gruppennamen und user_ids  erlaubt wobei bei den gruppen namen und ids ein g am anfang angehängt werden muss. 
$allowed_u = array(); 
$allowed_u[] = 'g3'; //gruppe 

$access_allowed = false; 
if( in_array($userdata['user_id'],$allowed_u)) 
{ 
        $access_allowed = true; 
} 

else 
{ 
        $sql = "SELECT g.group_id, g.group_name 
                FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
                WHERE ug.user_id = '" . $userdata['user_id'] . "' 
                        AND g.group_id = ug.group_id"; 
        if ( !($result = $db->sql_query($sql)) ) 
        { 
                message_die(GENERAL_ERROR, 'Could not get user group.', '', __LINE__, __FILE__, $sql); 
        } 
        $access_allowed = false; 
        while( list($group_id, $group_name) = $db->sql_fetchrow($result) ) 
        { 
                if( in_array('g' . $group_id[group_id],$allowed_u )) 
                { 
                         $access_allowed = true; 
                         break; 
                } 
                if( in_array('g' . $group_name[group_name],$allowed_u))
                { 
                         $access_allowed = true; 
                         break; 
                } 
        } 
        if( $access_allowed ) 
        { 
	$template->assign_block_vars('switch_certain_users', array());
        } 
} 

?>
..bei //gruppe kannst du die GruppenID angeben (mit dem "g" davor). (s. info.txt des genannten MODs, wenn du mehrere Gruppen angeben willst)
Zuletzt geändert von Acid am 15.01.2004 13:26, insgesamt 1-mal geändert.
helluvaguy
Mitglied
Beiträge: 124
Registriert: 29.05.2001 02:00

Beitrag von helluvaguy »

Vielen Dank Acid, das hat wunderbar funktioniert.

Aber kaum funktioniert etwas, komme ich auf so ganz komische Ideen, das nicht mehr alles läuft.

Ich habe mal versucht, beide Systeme der "Beschränkung" nebeneinander zu nutzen, so das ein Teil der Infos von der Benutzergruppe gesehen werden kann und ein Teil nur von den Admins. Doch leider funktionierte das nicht wirklich. Gibt es eine Möglichkeit, das irgendwie mit einander zu kombinieren?
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Also du willst, das diese Information von Gruppenmitgliedern und z.B. Admins eingesehen werden kann, selbst wenn letztere der Gruppe nicht angehören !?

Versuch´s ma in der name.php damit (blau is neu)..
if( $access_allowed && $userdata['user_level'] == ADMIN )
{
$template->assign_block_vars('switch_certain_users', array());
}
helluvaguy
Mitglied
Beiträge: 124
Registriert: 29.05.2001 02:00

Beitrag von helluvaguy »

Danke, das werde ich mal bei Gelegnheit versuchen.

... doch ist mir eine wesentlich gravierendere Unzulänglichkeit bei meiner Programmierung aufgefallen. Wenn ich als Admin über das ACP in die Einstellungen eines Users gehe, dann werden dort für die neu eingefügten Felder nicht die DB Daten der jeweiligen User gezogen, sondern sehr iritierender Weise meine Daten.

Ich habe etliche Felder neu hinzugefügt, wovon ich zunächst nur zwei eingefügt habe (um mit dem Vorgang vertraut zu werden :) ), $real_name und $number - bei diesen beiden Feldern funktioniert es einwandfrei, wie bei auch allen alten Feldern.
Danach habe ich $nick, $plays, $scouts_from, $scouts_till, $pri_pos, $fav_pos, $like, $team und $quest_01 bis $quest_31 eingefügt, und bei diesen werden wie gesagt, meine Daten gezogen.

Bei der Anzeige im Profil, werden jedoch die Einträge des jeweiligen Users angezeigt.

Somit würde ich mal mutmaßen, dass der Fehler in der admin/admin_users.php liegen muß. Ich habe den Code zwar schon x-mal durchgesehen, aber sehe den Wald vor lauter Bäumen bestimmt nicht mehr. Könnte evtl mal jemand anderer ein Blick auf meine Datei werfen?

http://www.bs-scouts.de/phpBB2/admin_users.txt
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

$nick = $userdata['user_nick'];
..bei dieser Zeile und den folgenden müsste es $this_userdata lauten.
helluvaguy
Mitglied
Beiträge: 124
Registriert: 29.05.2001 02:00

Beitrag von helluvaguy »

Duh!!! :x

Vielen, vielen Dank Acid. :grin:
helluvaguy
Mitglied
Beiträge: 124
Registriert: 29.05.2001 02:00

Beitrag von helluvaguy »

Acid hat geschrieben:Also du willst, das diese Information von Gruppenmitgliedern und z.B. Admins eingesehen werden kann, selbst wenn letztere der Gruppe nicht angehören !?

Versuch´s ma in der name.php damit (blau is neu)..
if( $access_allowed && $userdata['user_level'] == ADMIN )
{
$template->assign_block_vars('switch_certain_users', array());
}
Das ist nicht ganz was ich meinte. Meine Absicht ist es eher gewesen, einen Teil der neuen Felder für die Benutzergruppe sichtbar zu machen, einen anderen Teil nur für Moderatoren, also habe ich folgendes versucht.

Bei includes/usercp_viewprofile.php habe ich am Ende

Code: Alles auswählen

if ( $userdata['user_level'] == ADMIN )
{
        $template->assign_block_vars('switch_other_users', array() );
}

include($phpbb_root_path . 'name.'.$phpEx);

$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>
eingetragen und dann in profile_view_body.tpl den einen Teil mit

Code: Alles auswählen

<!-- BEGIN switch_certain_users -->
<!-- End switch_certain_users -->
und den anderen Teil mit

Code: Alles auswählen

<!-- BEGIN switch_other_users -->
<!-- End switch_other_users -->
gekennzeichnet. Doch dabei wurde im Endeffekt gar nichts angezeigt.
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Sind diese Felder und die BEGIN/END-Anweisungen verschachtelt oder is eines nach dem anderen?
helluvaguy
Mitglied
Beiträge: 124
Registriert: 29.05.2001 02:00

Beitrag von helluvaguy »

Vergiß es, ich habe es schon selber bemerkt. :lol:
Ich muß diese beisen Sachen

Code: Alles auswählen

<!-- BEGIN switch_certain_users -->
<!-- End switch_certain_users -->

Code: Alles auswählen

<!-- BEGIN switch_other_users -->
<!-- End switch_other_users -->
bloß in die richtige Reihenfolge bringen.
Antworten

Zurück zu „phpBB 2.0: Mod Support“