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

Code: Alles auswählen

$lang['group_delete_check'] = 'Diese Gruppe löschen';
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

Code: Alles auswählen

	<!-- END group_edit -->
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&ouml;schen" und "Alle Mitglieder dieser Gruppe l&ouml;schen"

Robert

Verfasst: 07.10.2004 18:25
von Leuchte
Finde in admin/admin_groups.php

Code: 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 :oops:

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

Code: Alles auswählen

AND group_single_user = 0
Wenn group_single_user auf 1 steht, ist es eine persönliche Gruppe.