Seite 1 von 2
Mod zum Löschen aller Gruppenmitgliedschaften?
Verfasst: 07.10.2004 16:27
von theonlyrobi
Hallo Leute,
ich habe in meinem Forum mehrere Gruppen, die auch alle andere Zugriffsrechte haben auf die Foren. Nun will ich in bestimmten Abständen sämtliche Mitglieder aller Gruppen löschen, damit nicht so viele Karteileichen entstehen. Kennt jemand einen Mod, mit dem sich das bewerkstelligen läßt?
Robert
Verfasst: 07.10.2004 17:08
von Leuchte
Du meinst quasi "Gruppen-Pruning"?
Nach welchen Kriterien sollen User denn gelöscht/aus der Gruppe entfernt werden?
Ein Mod ist mir nicht bekannt..
Verfasst: 07.10.2004 17:25
von theonlyrobi
Hallo,
nach gar keinen Kriterien soll gelöscht werden. Es sollen einfach alle User gelöscht werden aus allen Gruppen. Ich könnte die Gruppe zwar einfach löschen und wieder erstellen aber dann sind ja auch alle gesetzten Berechtigungen weg für die ganzen Foren. Kann man das vielleicht irgendwie direkt in SQL erledigen mit nem Befehl?
Robert
Verfasst: 07.10.2004 17:29
von Leuchte
Soll der Gruppenleiter auch entfernt werden?
Verfasst: 07.10.2004 17:32
von theonlyrobi
Eigentlich sollte der Gruppenleiter stehen bleiben, aber wenns aus Einfachheitsgründen besser ist, ihn zu löschen, dann würde es auch gehen. Ihn wieder einzutragen ist ja nicht so das Problem.
Verfasst: 07.10.2004 17:50
von Leuchte
Bitte mal testen mit Rückmeldung ob es funktioniert (Gruppenleiter bleibt

)
In
language/lang_german/lang_admin.php finden
Danach einfügen
Code: Alles auswählen
$lang['group_delete_users'] = 'Gruppenmitglieder löschen';
$lang['group_delete_users_check'] = 'Alle Mitglieder dieser Gruppe löschen';
$lang['group_users_removed'] = 'Alle Mitglieder dieser Gruppe wurden entfernt.';
In
admin/admin_groups.php finden
Code: Alles auswählen
//
// Ok, they are submitting a group, let's save the data based on if it's new or editing
Davor einfügen
Code: Alles auswählen
if ( isset($HTTP_POST_VARS['group_delete_users']) )
{
$sql = "SELECT group_moderator
FROM ". GROUPS_TABLE ."
WHERE group_id = $group_id
AND group_single_user = 0";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get group mod', '', __LINE__, __FILE__, $sql);
}
$group_mod = $db->sql_fetchrow($result);
$sql = "DELETE FROM ". USER_GROUP_TABLE ."
WHERE group_id = $group_id
AND user_id != ". $group_mod['group_moderator'];
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not delete group users', '', __LINE__, __FILE__, $sql);
}
$message = $lang['group_users_removed'] . '<br /><br />' . sprintf($lang['Click_return_groupsadmin'], '<a href="' . append_sid("admin_groups.$phpEx") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
In
templates/subSilver/admin/group_edit_body.tpl finden
Ersetzen mit
Code: Alles auswählen
<tr>
<td class="row1" width="38%"><span class="gen">{L_GROUP_DELETE_USERS}:</span></td>
<td class="row2" width="62%">
<input type="checkbox" name="group_delete_users" value="1">
{L_GROUP_DELETE_USERS_CHECK}</td>
</tr>
<!-- END group_edit -->
Verfasst: 07.10.2004 18:22
von theonlyrobi
Hallo Leuchte,
funktioniert super! Das Einzige: Es wird nicht angezeigt "Gruppenmitglieder löschen" und "Alle Mitglieder dieser Gruppe löschen"
Robert
Verfasst: 07.10.2004 18:25
von Leuchte
Finde in
admin/admin_groups.phpCode: Alles auswählen
'L_GROUP_DELETE_CHECK' => $lang['group_delete_check'],
Füge danach ein
Code: Alles auswählen
'L_GROUP_DELETE_USERS' => $lang['group_delete_users'],
'L_GROUP_DELETE_USERS_CHECK' => $lang['group_delete_users_check'],
Glatt vergessen

Verfasst: 07.10.2004 18:47
von theonlyrobi
Hallo Leuchte,
suuuuper danke jetzt funzt es alles! Eine Frage hätte ich mal noch: Sind die Gruppenzugehörigkeiten in der Tabelle "phpbb_user_group" gespeichert oder in "phpbb_groups"? Mich wundert dass ich nur 5 Gruppen habe, aber viele verschiedene "group_id" in den Tabellen stehen.
Robert
Verfasst: 07.10.2004 18:49
von Leuchte
Wenn sich ein User registriert, wird automatisch eine "persönliche Gruppe" angelegt. Das vereinfacht die Befugnisvergabe.
Deshalb grenzen wir die Suche der Gruppe explizit ein
Wenn group_single_user auf 1 steht, ist es eine persönliche Gruppe.