Mod zum Löschen aller Gruppenmitgliedschaften?

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
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.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
theonlyrobi
Mitglied
Beiträge: 80
Registriert: 09.08.2003 14:33
Wohnort: Jena
Kontaktdaten:

Mod zum Löschen aller Gruppenmitgliedschaften?

Beitrag 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
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag 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..
Benutzeravatar
theonlyrobi
Mitglied
Beiträge: 80
Registriert: 09.08.2003 14:33
Wohnort: Jena
Kontaktdaten:

Beitrag 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
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Soll der Gruppenleiter auch entfernt werden?
Benutzeravatar
theonlyrobi
Mitglied
Beiträge: 80
Registriert: 09.08.2003 14:33
Wohnort: Jena
Kontaktdaten:

Beitrag 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.
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag 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 -->
Benutzeravatar
theonlyrobi
Mitglied
Beiträge: 80
Registriert: 09.08.2003 14:33
Wohnort: Jena
Kontaktdaten:

Beitrag 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
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag 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:
Benutzeravatar
theonlyrobi
Mitglied
Beiträge: 80
Registriert: 09.08.2003 14:33
Wohnort: Jena
Kontaktdaten:

Beitrag 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
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag 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.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“