Seite 1 von 2

Profil abhängig von Benutzergruppe

Verfasst: 07.11.2002 22:33
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

Verfasst: 08.11.2002 14:24
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

Verfasst: 08.11.2002 16:54
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...

Verfasst: 08.11.2002 20:11
von Fluckzer
Ach so: die betroffenen Felder sind:

user_check_is_fh
user_why_is_fh
user_firstname
user_lastname

Verfasst: 08.11.2002 20:25
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

Verfasst: 08.11.2002 20:45
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...

Verfasst: 09.11.2002 19:17
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

Verfasst: 10.11.2002 14:34
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?)

Verfasst: 11.11.2002 17:28
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'") : "" ); 

Verfasst: 12.11.2002 00:19
von Fluckzer
das hat leider nichts geändert... :(