Profil abhängig von Benutzergruppe

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
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.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Fluckzer
Mitglied
Beiträge: 11
Registriert: 13.06.2002 00:39

Profil abhängig von Benutzergruppe

Beitrag von Fluckzer »

Halöle Leutz!

Ich suche ein Mod bzw. mal ne kleine Unterstützung, wie ich ein Profil von der Benutzergruppe abhängig gestalten kann, d.h. nur wenn man Mitglied einer bestimmten Gruppe ist, sollen diese Leute im Profil die Möglichkeit haben zusätzliche Felder editieren zu können.

Brauche auch kein grosses Dingen, dass heisst mir reicht vollkommen die Eingabe im Profil beim Editieren. Die eigentliche Registrierung soll nicht verändert werden. Die Ansicht des Profils für andere Mitglieder (Viewprofiles) kann ebenfalls so bleiben wie sie ist, da die im Profil eingebenen Daten lediglich für ein anderes Skript ausgelesen werden (quasi Vorstellung bestimmter Mitglieder) sollen.

Kann mir jemand sagen, wie ich vermutlich die usercp_register.php (meine Vermutung) anpassen muss, damit mir dieses gelingen kann?

Für freundliche Hilfe sage ich jetzt schon mal danke
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

zuerst musst du die zusätzlichen felder einfügen....
dann musst du am ende deiner includes/functions.php fpr ?> folgende funktion einfügen:

Code: Alles auswählen

function member_of($group, $userdata)
{
	global $db;
        if ( !$userdata['session_logged_in'] )
        {
        	return false;
        }
        $sql = "SELECT count(*) FROM " . USER_GROUP_TABLE . " WHERE user_id = '" . $userdata['user_id'] . "' AND group_id = '" . $group_id . "'";
        if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not get group auth', '', __LINE__, __FILE__, $sql);
	}

	list($num) = $db->sql_fetchrow($result);
	if ( $num > 0 )
        {
        	return true;
        }
        return false;
}
dann musst du in der includes/usercp_register.php nach

Code: Alles auswählen

	// it works well :)
	//
	if ( $mode != 'register' )
	{
folgendes einfügen

Code: Alles auswählen

                if ( member_of(123, $userdata) )
                {
                	$template->assign_block_vars('switch_group_block', array() );
                }
wobei du 123 durch die gruppen_id ersetzen musst....
dann muss man nur noch die query dementsprechend an passen aber dazu musst du erst deine query posten...
( das ist der block der mit

Code: Alles auswählen

$sql = "UPDATE " . USERS_TABLE . " 
anfängt )

ah
Fluckzer
Mitglied
Beiträge: 11
Registriert: 13.06.2002 00:39

Beitrag von Fluckzer »

Erstmal Danke für dein Hilfe, meine Query sieht wie folgt aus:


$sql = "UPDATE " . USERS_TABLE . "
SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "',user_firstname = '" . str_replace("\'", "''", $firstname) . "',user_lastname = '" . str_replace("\'", "''", $lastname) . "',user_why_is_fh = '" . str_replace("\'", "''", $why_is_fh) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . ", user_birthday='$birthday', user_next_birthday_greeting='$next_birthday_greeting', user_gender='$gender', user_check_is_fh='$is_fh'
WHERE user_id = $user_id";
Habe erstmal alles so angepasst, wie du oben beschrieben hast (bis auf die query)

Allerdings habe ich glaube ich oben einen kleinen Fehler bei der Beschreibung gemacht, dass heisst, wenn jemand der Gruppe nicht angehört, sollen die Felder im Profil garnicht erst angezeigt werden und wenn man zu der Gruppe gehört, dann sollen sie als zusätzliche Felder im Profil bearbeitet werden können.

Trotzdem schon einmal danke für deine Mühen. Auch so wäre es schonmal für mich ein erheblicher Fortschrit...
Fluckzer
Mitglied
Beiträge: 11
Registriert: 13.06.2002 00:39

Beitrag von Fluckzer »

Ach so: die betroffenen Felder sind:

user_check_is_fh
user_why_is_fh
user_firstname
user_lastname
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

ersetze die query durch folgendes:

Code: Alles auswählen

$avatar_sql .= member_of(123, $userdata) ? ( ", user_firstname = '" . str_replace("\'", "''", $firstname) . "', user_lastname = '" . str_replace("\'", "''", $lastname) . "',user_why_is_fh = '" . str_replace("\'", "''", $why_is_fh) . "', user_check_is_fh='$is_fh'") : "";

$sql = "UPDATE " . USERS_TABLE . " 
SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . ", user_birthday='$birthday', user_next_birthday_greeting='$next_birthday_greeting', user_gender='$gender'
WHERE user_id = $user_id"; 
und damit die felder nicht angeigt werden brauch ich noch deine templates/xxx/profile_add_body.tpl ...
oder mach in der datei <!-- BEGIN switch_group_block --> vor dem anfang der felder und <!-- END switch_group_block --> nach den feldern ( jeweils zwischen </tr> und <tr>... )

ah
Fluckzer
Mitglied
Beiträge: 11
Registriert: 13.06.2002 00:39

Beitrag von Fluckzer »

mmmmh schade, war leider nicht erfolgreich. Es kommt zwar keine Fehlermeldung, aber die geänderten Daten werden nun garnicht übernommen/gespeichert, auch nicht wenn man Mitglied der entsprechenden eingegebenen GroupID ist...


...ich denke die Ursache jetzt zu suchen ist bestimmt sehr aufwendig oder? Dank dir trotzdem...
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

warum denn nicht... nicht zu schnell aufgeben... poste doch einfach die usercp_register.tpl und deine profile_add_body.tpl als link...

ah
Fluckzer
Mitglied
Beiträge: 11
Registriert: 13.06.2002 00:39

Beitrag von Fluckzer »

also die tpl-Dateien können wir erstmal weglassen, dass betrifft ja nur die Anzeige oder nicht-Anzeige der Felder. Aber das Problem tritt ja schon beim der .php-Datei auf, dass wenn ich die Daten in den neuen Felder eingebe diese nicht in der Datenbank gespeichert werden, sprich die, die du mit folgender Anweisung:
$avatar_sql .= member_of(123, $userdata) ? ( ", user_firstname = '" . str_replace("\'", "''", $firstname) . "', user_lastname = '" . str_replace("\'", "''", $lastname) . "',user_why_is_fh = '" . str_replace("\'", "''", $why_is_fh) . "', user_check_is_fh='$is_fh'") : "";
ausgelagert hast. Auch wenn der entsprechende User Berechtigung zur Gruppe 123 (in meinem Falle die 16) hat. Die anderen Daten der Felder in:
$sql = "UPDATE " . USERS_TABLE . "
SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . ", user_birthday='$birthday', user_next_birthday_greeting='$next_birthday_greeting', user_gender='$gender'
WHERE user_id = $user_id";
werden nach wie vorn übertragen.

Also dürfte der Fehler entweder beim Abspeichern der Neuen Felder liegen oder bei der Abfrage nach der Gruppenzugehörigkeit....


Nützt es dir was, wenn ich dir meine Dateien:

functions.php und usercp_register.php mal zukommen lasse? (ich denke zum Quoten sind die zu gross oder?)
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

ersetz mal das

Code: Alles auswählen

$avatar_sql .= member_of(123, $userdata) ? ( ", user_firstname = '" . str_replace("\'", "''", $firstname) . "', user_lastname = '" . str_replace("\'", "''", $lastname) . "',user_why_is_fh = '" . str_replace("\'", "''", $why_is_fh) . "', user_check_is_fh='$is_fh'") : ""; 
durch

Code: Alles auswählen

$avatar_sql .= ( member_of(123, $userdata) ? ( ", user_firstname = '" . str_replace("\'", "''", $firstname) . "', user_lastname = '" . str_replace("\'", "''", $lastname) . "',user_why_is_fh = '" . str_replace("\'", "''", $why_is_fh) . "', user_check_is_fh='$is_fh'") : "" ); 
Fluckzer
Mitglied
Beiträge: 11
Registriert: 13.06.2002 00:39

Beitrag von Fluckzer »

das hat leider nichts geändert... :(
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“