Seite 1 von 1

Alle bestehenden Benutzer einer Gruppe zuordnen

Verfasst: 22.08.2007 15:15
von thorbytes
Hallo,

da ich ein Forum nun um verschiedene Gruppen erweitern will, sollen erstmal alle bestehenden Benutzer einer Gruppe zugeordnet werden. Was ich natürlich nicht manuell machen will.

Das einzige was mir momentan einfällt ist ein PHP-Skript zu schreiben, welches user_id(s) aus der Tabelle phpbb_users ausliest und diese dann in der Tabelle phpbb_user_group mit der ID der Gruppe verbindet.

Hat jemand vielleicht ne bessere Idee?

Re: Alle bestehenden Benutzer einer Gruppe zuordnen

Verfasst: 22.08.2007 15:16
von Seimon
thorbytes hat geschrieben:... sollen erstmal alle bestehenden Benutzer einer Gruppe zugeordnet werden.
Wozu brauchst du das?

Verfasst: 22.08.2007 15:23
von SteveHH
Ist doch logisch, wenn man sich seinen Thread GENAU durchliest ... er will verschiedene Gruppen einrichten und die User, die er bisher hat, in EINE Gruppe sowie neue User in ANDERE Gruppen packen ... so habe ich das zumindest verstanden .. :roll:

Gruß,

Steve

Verfasst: 22.08.2007 15:28
von Mahony
Hallo thorbytes
Schau dir mal den Auto Group MOD von Niels an. Eventuell wäre das ja das richtige für dich.
1. Full MOD description
## -----------
## This mod will make it posible to add member to a user group,
## depending on there post count. This makes it posible to make a
## group "Everyone" (0 posts) where all members are members by default
## or a group like "Posters" (1 posts) where all users witch have
## posted are a member.
## Now also support MAX post count, so the users will be removed
## if they have more posts than required
Damit kannst neue User automatisiert in eine Gruppe einfügen.



Grüße: Mahony

Verfasst: 22.08.2007 15:34
von Seimon
SteveHH hat geschrieben:Ist doch logisch, wenn man sich seinen Thread GENAU durchliest ... er will verschiedene Gruppen einrichten und die User, die er bisher hat, in EINE Gruppe sowie neue User in ANDERE Gruppen packen ... so habe ich das zumindest verstanden .. :roll:
Danke für den Hinweis :)
Ich hab das auch so verstanden, nur ist die vorgehensweise, jeden User in eine Gruppe zu werfen ziemlich aufwändig (siehe posting über mir)
Eventuell ist das was er haben will auch ohne Mods möglich, deswegen meine Nachfrage ;)

Verfasst: 22.08.2007 15:55
von thorbytes
SteveHH hat geschrieben:Ist doch logisch, wenn man sich seinen Thread GENAU durchliest ... er will verschiedene Gruppen einrichten und die User, die er bisher hat, in EINE Gruppe sowie neue User in ANDERE Gruppen packen
Genau so ist das gedacht ;-)
Bzw. möchte ich bei neuen Usern auswählen können, in welche Gruppe die dann kommen.

Ich glaube ich hab was gefunden:
Simple Auto Group

Der lässt sich dann nach diesem Vorgang leicht wieder entfernen.

---- EDIT ----
Der "Simple Auto Group" funktioniert leider nur bei neu registrierten Benutzern.

Verfasst: 28.08.2007 14:45
von thorbytes
So, ich habe nun einfach den Auto Group Mod hergenommen, ein wenig kopiert und verändert und schon hab ich das was ich brauche.

Wem's interessiert:

Code: Alles auswählen

## MOD Title: add_all_user_group.mod
## MOD Author: thorbytes 
## MOD Description: Adds or deletes all users to a selected group
## Installation Level: Easy
## Installation Time: 13 Minutes
## Files To Edit: admin/admin_groups.php
##                language/lang_english/lang_admin.php
##                templates/subSilver/admin/group_edit_body.tpl
## Included Files: n/a
## Generator: MOD eclipse
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes:
## This MOD is a workaround of some features from the Auto Group Mod
## <http://www.phpbbhacks.com/download/2203> from Niels.
##
## The idea is, that you only add all users to a specific group once.
##
## So the best usage is to install the MOD with EasyMod,
## add the users to the wanted group,
## and then deinstall the MOD again.
##############################################################
## MOD History:
##
##   2007-08-28 - Version 0.0.1
##      - Initial Release
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################


#
#-----[ OPEN ]------------------------------------------
#
admin/admin_groups.php


#
#-----[ FIND ]------------------------------------------
#
'GROUP_MODERATOR' => $group_moderator,


#
#-----[ AFTER, ADD ]------------------------------------------
#
'L_GROUP_COUNT_EXPLAIN' => $lang['group_count_explain'],
'L_GROUP_COUNT_UPDATE' => $lang['Group_count_update'],
'L_GROUP_COUNT_DELETE' => $lang['Group_count_delete'],


#
#-----[ FIND ]------------------------------------------
#
$delete_old_moderator = isset($HTTP_POST_VARS['delete_old_moderator']) ? true : false;


#
#-----[ AFTER, ADD ]------------------------------------------
#
$group_count_update = isset($HTTP_POST_VARS['group_count_update']) ? true : false;
$group_count_delete = isset($HTTP_POST_VARS['group_count_delete']) ? true : false;


#
#-----[ FIND ]------------------------------------------
#
# this line must be found rigth below the abouve find tag, as this line are pressent 2 places
message_die(GENERAL_ERROR, 'Could not update group', '', __LINE__, __FILE__, $sql);
}


#
#-----[ AFTER, ADD ]------------------------------------------
#
if ($group_count_delete)
			{
				//removing old users
				$sql = "DELETE FROM " . USER_GROUP_TABLE . "
					WHERE group_id=$group_id
					AND user_id NOT IN ('$group_moderator','".ANONYMOUS."')";
				if ( !$db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, 'Could not remove users, group count', '', __LINE__, __FILE__, $sql);
				}
				$group_count_remove=$db->sql_affectedrows();
			}
			if ( $group_count_update)
			{
				//finding new users
				$sql = "SELECT u.user_id FROM " . USERS_TABLE . " u
					LEFT JOIN " . USER_GROUP_TABLE ." ug ON u.user_id=ug.user_id AND ug.group_id='$group_id'
					WHERE ug.group_id is NULL
					AND u.user_id NOT IN ('$group_moderator','".ANONYMOUS."')";
				if ( !($result = $db->sql_query($sql)) )
				{
					message_die(GENERAL_ERROR, $sql.'Could not select new users, group count', '', __LINE__, __FILE__, $sql);
				}
				//inserting new users
				$group_count_added=0;
				while ( ($new_members = $db->sql_fetchrow($result)) )
				{
					$sql = "INSERT INTO " . USER_GROUP_TABLE . " (group_id, user_id, user_pending)
						VALUES ($group_id, " . $new_members['user_id'] . ", 0)";
					if ( !($result2 = $db->sql_query($sql)) )
					{
						message_die(GENERAL_ERROR, 'Error inserting user group, group count', '', __LINE__, __FILE__, $sql);
					}
					$group_count_added++;
				}
			}


#
#-----[ FIND ]------------------------------------------
#
$message = $lang['Updated_group'] . '<br />


#
#-----[ IN-LINE FIND ]------------------------------------------
#
$lang['Updated_group'] .


#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
'<br />'.sprintf($lang['group_count_updated'],$group_count_remove,$group_count_added).


#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/admin/group_edit_body.tpl


#
#-----[ FIND ]------------------------------------------
#
  {L_GROUP_HIDDEN}</td>
</tr>


#
#-----[ AFTER, ADD ]------------------------------------------
#
<tr>
  <td class="row1" width="38%"><span class="gensmall">{L_GROUP_COUNT_EXPLAIN}</span></td>
  <td class="row2" width="62%">
	<br/>&nbsp;&nbsp; <input type="checkbox" name="group_count_update" value="0"/>&nbsp;{L_GROUP_COUNT_UPDATE}
	<br/>&nbsp;&nbsp; <input type="checkbox" name="group_count_delete" value="0"/>&nbsp;{L_GROUP_COUNT_DELETE}
  </td>
</tr>


#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_admin.php


#
#-----[ FIND ]------------------------------------------
#
?>


#
#-----[ BEFORE, ADD ]------------------------------------------
#
// add all user to group mod
$lang['group_count_updated'] = '%d member(s) have been removed, %d members are added to this group';
$lang['Group_count_update'] = 'Add/Update new users';
$lang['Group_count_delete'] = 'Delete/Update old users';
$lang['group_count_explain'] = 'Action for all users in this forum.';


#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM