|
User aus Gruppe entfernen - Schnellzugriff
|
| emblinux |
Geschrieben am 15. Januar 2010 12:08:01
|


Posts: 3662
Registriert seit: 04.10.08
MeisterNächstes Level: 3684/5000 Scores: gesperrt
|
In PHP-Fusion ist es als Administrator möglich, User per Schnellzugriff in eine Gruppe zu packen. Dazu braucht man lediglich auf das entsprechende Profil des Users gehen und unten erscheinen die Möglichkeiten diesen User zu bearbeiten, bannen, löschen oder einer Gruppe hinzuzufügen. Wie gesagt nur als Administrator mit dem entsprechendem Recht.
Aber wie entferne ich diesen User mal schnell wieder. Dazu muss man in den Adminbereich zu der Gruppenverwaltung, die Gruppe auswählen und dann auf löschen klicken. Nun habe ich mir gedacht, das geht doch auch schneller, so wie es ja auch mit dem hinzufügen geht, kann man das doch auch mit dem entfernen machen. Deshalb habe ich dazu einen Mod geschrieben, den ich euch hier auch nicht vorenthalten und vorstellen möchte.
Dazu sind nur geringfügige Änderungen notwendig.
* anzupassende Dateien:
- profile.php
- view_profile.php aus dem entsprechenden Sprach-Ordner ( z.B. locale/German)
Als 1. öffnet man die Datei profile.php und sucht dort folgenden Code:
Code
if (iADMIN && checkrights("UG") && $user_data['user_id'] != $userdata['user_id'])
{
if ((isset($_POST['add_to_group'])) && (isset($_POST['user_group']) && isnum($_POST['user_group'])))
{
if (!preg_match("(^\.{$_POST['group_id']}$|\.{$_POST['group_id']}\.|\.{$_POST['group_id']}$)", $user_data['user_groups']))
{
$result = dbquery("UPDATE ".DB_USERS." SET user_groups='".$user_data['user_groups'].".".$_POST['user_group']."' WHERE user_id='".$user_data['user_id']."'");
}
redirect(FUSION_SELF."?lookup=".$user_data['user_id']);
}
}
und ersetze diesen durch den nun folgenden Code:
Code
if (iADMIN && checkrights("UG") && $user_data['user_id'] != $userdata['user_id'])
{
if ((isset($_POST['add_to_group'])) && (isset($_POST['user_group']) && isnum($_POST['user_group'])))
{
if (!preg_match("(^\.{$_POST['group_id']}$|\.{$_POST['group_id']}\.|\.{$_POST['group_id']}$)", $user_data['user_groups']))
{
$result = dbquery("UPDATE ".DB_USERS." SET user_groups='".$user_data['user_groups'].".".$_POST['user_group']."' WHERE user_id='".$user_data['user_id']."'");
}
redirect(FUSION_SELF."?lookup=".$user_data['user_id']);
}
if ( ( isset($_GET['remove_group']) && isNum($_GET['remove_group']) && $_GET['remove_group'] == 1 )
&& ( isset($_GET['user_group']) && isnum($_GET['user_group']) ) && $user_data['user_level'] < $userdata['user_level'] )
{
if ( preg_match("(^\.{$_GET['user_group']}$|\.{$_GET['user_group']}\.|\.{$_GET['user_group']}$)", $user_data['user_groups']) )
{
$user_groups = preg_replace(array("(^\.{$_GET['user_group']}$)","(\.{$_GET['user_group']}\.)","(\.{$_GET['user_group']}$)"), array("",".",""), $user_data['user_groups']);
$result = dbquery("UPDATE ".DB_USERS." SET user_groups='".$user_groups."' WHERE user_id='".$user_data['user_id']."'");
}
redirect(FUSION_SELF."?lookup=".$user_data['user_id']);
}
}
Es wurde die Verarbeitung zum entfernen der Gruppe hinzugefügt. Nun fehlt uns noch der Link, der uns dahinleitet. Dazu sucht man in der profile.php weiter nach folgendem Code:
Code for ($i = 0; $i < count($user_groups); $i++) {
echo "<div style='float:left'><a href='".FUSION_SELF."?group_id=".$user_groups[$i]."'>".getgroupname($user_groups[$i])."</a></div><div style='float:right'>".getgroupname($user_groups[$i], true)."</div><div style='float:none;clear:both'></div>\n";
}
und ersetzt diesen durch folgenden:
Code
for ($i = 0; $i < count($user_groups); $i++)
{
echo "<div style='float:left'><a href='".FUSION_SELF."?group_id=".$user_groups[$i]."'>".getgroupname($user_groups[$i])."</a></div>";
echo "<div style='float:right'>".getgroupname($user_groups[$i], true)."</div>";
if (iADMIN && checkrights("M") && $user_data['user_id'] != $userdata['user_id'] && $user_data['user_level'] < $userdata['user_level'] )
{
echo "<br /><div style='float:right'><a href='".FUSION_SELF."?lookup=".$user_data['user_id']."&user_group=".$user_groups[$i]."&remove_group=1'>".$locale['418']."</a></div>";
}
echo "<div style='float:none;clear:both'></div>\n";
}
Hier wurde nun der Link hinzugefügt, der uns dann zur Verarbeitung der Gruppenentfernung leitet. Damit der Link auch richtig angezeigt wird, fehlt uns lediglich noch der entsprechnde Text in der view_profile.php. Dazu öffnet man die Datei locale/German/view_profile.php und sucht nach:
und fügt davor folgende Zeile ein:
Code $locale['418'] = "Aus Gruppe entfernen";
Den Text kann man natürlich auch noch ändern, so wie es jeder möchte.
Bitte macht von beiden Dateien ein Backup, damit man diese bei Problemen einfach wieder aufspielen kann. Das sollte es dann auch schon gewesen sein. Ich hoffe ihr könnt diesen Mod gebrauchen. Auf meiner Seite habe ich es im Einsatz, das es mir ein schnelleres Arbeiten ermöglicht. Für Feedback und konstruktive Kritik bin ich natürlich offen.
EDIT: Bugfix.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius
Alles wird Gut!
KEIN Support per Mail, ICQ oder PN !
 |
 |
|
|
|
|
| MarcusG |
Geschrieben am 15. Januar 2010 12:18:17
|


Posts: 2936
Registriert seit: 21.01.09
MeisterNächstes Level: 2942/5000 Scores: gesperrt
|
Sehr gute Idee, funktioniert prima.
Gruß Marcus
Support per Mail, PN, ICQ oder MSN ist kostenpflichtig!
if ($ahnung == 'keine' ) { use ( FAQ ) && ( Google | | Suche ) }
if ($antwort == 0 ) { post ( Frage ) } |
 |
|
|
|
|
| emblinux |
Geschrieben am 15. Januar 2010 14:52:31
|


Posts: 3662
Registriert seit: 04.10.08
MeisterNächstes Level: 3684/5000 Scores: gesperrt
|
Danke. Leider musste ich gerade noch einen Bugfix vornehmen. Mit der nun oben aktualisierten Version ist es normalen Admins nicht mehr möglich andere Admins bzw. Superadmins aus diversen Gruppen zu entfernen. Soll also heißen, dass ein Admin oder SuperAdmin nur User/Admins mit kleinerem User-Level aus einer Gruppe entfernen darf.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius
Alles wird Gut!
KEIN Support per Mail, ICQ oder PN !
 |
 |
|
|
|
|
| DJ-Papst |
Geschrieben am 15. Januar 2010 21:55:07
|

Anfänger

Posts: 38
Registriert seit: 04.11.08
LehrlingNächstes Level: 38/50 Scores: gesperrt
Verwarnstatus:    
|
HIHI
Genau die Idee hat ich vor ein paar Tagen auch, weil´s die Arbeit erleichert und es schneller geht.
http://www.phpfus...d_id=24144
Erspart mir jetzt die Arbeit.
Aber geile sache emblinux. Dankeeeeeeeeeeeeee |
 |
|
|
|
|
| Bull Fullbright |
Geschrieben am 21. Januar 2010 23:27:32
|

Anwender

Posts: 232
Registriert seit: 20.05.09
Erfahrener BenutzerNächstes Level: 234/250 Scores: gesperrt
Verwarnstatus:    
|
Hi, emblinux
Eine sehr gute idee die modifikation. Danke funktioniert auch prima.
Gruß MyFusion |
 |
|
|
|
|
| DJ-Papst |
Geschrieben am 06. Mai 2011 12:31:07
|

Anfänger

Posts: 38
Registriert seit: 04.11.08
LehrlingNächstes Level: 38/50 Scores: gesperrt
Verwarnstatus:    
|
emblinux schrieb:
Danke. Leider musste ich gerade noch einen Bugfix vornehmen. Mit der nun oben aktualisierten Version ist es normalen Admins nicht mehr möglich andere Admins bzw. Superadmins aus diversen Gruppen zu entfernen. Soll also heißen, dass ein Admin oder SuperAdmin nur User/Admins mit kleinerem User-Level aus einer Gruppe entfernen darf.
Sorry das ich diesen mehr als 1 Jahr alten beitrag hochhole. 
Aber mal anmerken muss das der Mod auch einwandfrei mit der 7.02.01 funzt.
Jetzt zum eigentlichen Problem. Ich hab mich dumm und dämlich Probiert mal mit den fehlern mal Funtioniert es aber dann nur einseitig.
emblinux könntest du mir den Fix wieder Rückgängig machen so das auch Super Admins andere Admin´s aus Gruppen entfernen können bzw Hinzufügen weil über die Benutzer Gruppen Option ist das immer sehr umständlich.
Danke Gruß
Papst |
 |
|
|
|
|
| emblinux |
Geschrieben am 06. Mai 2011 13:05:59
|


Posts: 3662
Registriert seit: 04.10.08
MeisterNächstes Level: 3684/5000 Scores: gesperrt
|
Das könnt ihr doch auch alleine oder...?
es geht letztendlich nur um folgende Stellen:
Code $user_data['user_level'] < $userdata['user_level']
Diese muss man anpassen.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius
Alles wird Gut!
KEIN Support per Mail, ICQ oder PN !
 |
 |
|
|
|
|
| DJ-Papst |
Geschrieben am 06. Mai 2011 14:52:22
|

Anfänger

Posts: 38
Registriert seit: 04.11.08
LehrlingNächstes Level: 38/50 Scores: gesperrt
Verwarnstatus:    
|
Danke für den Denkanstoss
Ich hab zwar schon richtig gedacht mit Größer & Kleiner nur an der Falschen stelle geändert da war nen Denkfehler in meinem Kopf.   |
 |
|
|
|
|
| MarcusG |
Geschrieben am 30. November 2011 13:05:05
|


Posts: 2936
Registriert seit: 21.01.09
MeisterNächstes Level: 2942/5000 Scores: gesperrt
|
Ich weiss nicht genau seit welcher Version (muss 7.01.06 oder früher sein), aber die $locale['418'] in der view_profile.php ist belegt. Code <?php
// Member Profile
$locale['400'] = "Profil des Mitglieds";
$locale['401'] = "User Gruppe";
$locale['402'] = "Administrator Optionen";
// Administrator Options
$locale['410'] = "Bearbeiten";
$locale['411'] = "Sperren";
$locale['412'] = "Löschen";
$locale['413'] = "Dieses Mitglied sperren?";
$locale['414'] = "Dieses Mitglied löschen?";
$locale['415'] = "Zu Gruppe hinzufügen:";
$locale['416'] = "Hinzufügen";
$locale['417'] = "Dieses Mitglied zur gewählten Gruppe hinzufügen?";
$locale['418'] = "Aktivieren";
$locale['419'] = "Sperr-Protokoll ansehen";
// View User Groups
$locale['420'] = "User Gruppe ansehen";
$locale['421'] = "%u Mitglied";
$locale['422'] = "%u Mitglieder";
$locale['423'] = "Name des Mitglieds";
$locale['424'] = "Typ des Mitglieds";
// Member status
$locale['440'] = "Aktiv";
$locale['441'] = "Gesperrt";
$locale['442'] = "Deaktiviert wegen Inaktivität";
$locale['443'] = "Temporär gesperrt";
$locale['444'] = "Aus Sicherheitsgründen gesperrt";
$locale['445'] = "Abgebrochen";
$locale['446'] = "Anonymisiert";
$locale['447'] = "Deaktiviert";
$locale['448'] = "Grund:";
?>
Gruß Marcus
Support per Mail, PN, ICQ oder MSN ist kostenpflichtig!
if ($ahnung == 'keine' ) { use ( FAQ ) && ( Google | | Suche ) }
if ($antwort == 0 ) { post ( Frage ) } |
 |
|
|
|
|
| emblinux |
Geschrieben am 30. November 2011 13:12:26
|


Posts: 3662
Registriert seit: 04.10.08
MeisterNächstes Level: 3684/5000 Scores: gesperrt
|
Das kann dann ja jeder selbst anpassen. Ist ja nicht weiter schwer.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius
Alles wird Gut!
KEIN Support per Mail, ICQ oder PN !
 |
 |
|