User per SQL Gruppen zuteilen

Fragen zur Bedienung von phpBB 3.0.x, Probleme bei der Benutzung und alle weiteren Fragen inkl. Update auf die neuste phpBB 3.0.14 Version
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Topper Harley
Mitglied
Beiträge: 95
Registriert: 29.03.2006 03:49

User per SQL Gruppen zuteilen

Beitrag von Topper Harley »

Ich möchte gerne eine Massen PN an alle registrierten User versenden. Da dies aber über 8.500 sind, kommt es beim Versand an die Gruppe "Registrierte User" immer zu Problemen.
Deshalb möchte ich gerne 1000er Gruppen anlegen, damit die PN in kleineren Happen verschickt werden kann.
D.h. in Gruppe 1 kommen die User mit den IDs 1-1000, in Gruppe 2 die User 1001-2000 etc.

Wie würde der SQL Befehl dazu lauten?

Bin für jede Hilfe dankbar! :P
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: User per SQL Gruppen zuteilen

Beitrag von gn#36 »

Was für ein Fehler tritt denn auf? Gibt's eine Fehlermeldung? Grundsätzlich sollte die PN Funktion auch an große Gruppen versenden können, alles andere wäre in meinen Augen ein Fall für den Bug Tracker auf phpBB.com.

Ich würde das ansonsten mit einem Skript erledigen, nicht mit einem reinen SQL Befehl, denn das Aufteilen in mehrere Gruppen wäre da nicht so ganz so einfach. Zumal es dafür auch eine schöne, vorgefertigte Funktion gibt: group_user_add.


Das ginge dann grob irgendwie so (ungetestet, also nicht direkt auf das Forum loslassen sondern erst am Backup testen!):

1. So viele Gruppen anlegen wie benötigt und niedrigste Group ID merken und im folgenden Skript eintragen:

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = 'php';
$group_id = {id hier rein und dann die {} weg};
include("{$phpbb_root_path}common.$phpEx");
include("{$phpbb_root_path}includes/functions_user.$phpEx");

$sql = "SELECT user_id FROM " . USERS_TABLE . " WHERE user_type IN (0,3) ";
$result = $db->sql_query($sql);
$count = 0;
$group_array = array();
while($row = $db->fetchrow($result))
{
if($count <= 1000)
{
$group_array[] = $row['user_id'];
$count++;
}
else
{
group_user_add($group_id, $group_array);
$group_array = array();
$count = 1;
$group_array[] = $row['user_id'];
$group_id++;
}
}
//Falls noch wer übrig ist:
if($group_array)
{
$group_user_add($group_id, $group_array);
}
trigger_error('Fertig!');
 
2. Das Skript ausführen.

Das ganze kann nur klappen, wenn du alle Gruppen direkt hintereinander anlegst, so dass die Gruppen IDs aufsteigend sind (also z.B. die erste Gruppe die ID 20, die zweite dann 21 usw. hat). Es wird nicht geprüft ob es die Gruppe gibt, das könnte zu seltsamen Ergebnissen führen wenn du nicht genügend Gruppen angelegt hast. Wie gesagt vorher am Backup testen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Topper Harley
Mitglied
Beiträge: 95
Registriert: 29.03.2006 03:49

Re: User per SQL Gruppen zuteilen

Beitrag von Topper Harley »

Fehlermeldung lautet auf zu wenig Arbeitsspeicher. Hab 40 MB, mehr gibts nicht da 1und1 (bitte nicht hauen) webspace Paket.
Den code schnipsel also so in eine leere Datei, dann als .php speichern und im rootverzeichnis des forums aufrufen?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: User per SQL Gruppen zuteilen

Beitrag von gn#36 »

Nein. erst ein Backup machen, genügend Gruppen anlegen und dann das skript mit angepasster id in eine Datei und ausführen. wenn die Gruppen noch kleiner werden müssen, dann pass' die 1000 entsprechend an.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „[3.0.x] Administration, Benutzung und Betrieb“