User soll Gruppe und Forum erstellen dürfen
Verfasst: 14.02.2018 18:25
Moin 
ich versuche den ganzen Tag schon etwas zu basteln. Auf unserer Seite gibt es eine Benutzergruppe, die nennt sich Dozenten.
Diese Dozenten sollen Benutzergruppen erstellen dürfen und gleichzeitig ein Forum.
Es handelt sich um Ausbildungsforen. Jeder Kurs soll also eine eigene Gruppe mit dazugehörigem Forum erhalten. Gruppenleiter ist immer der Dozent, der diese Gruppe erstellt hat.
Das mit den Gruppen habe bereits hinbekommen, auch wenn mir einige Dinge in der SQL unklar waren. Im ACP bekomme ich die Gruppen jedenfalls angezeigt.
Wo ich jetzt aber total verzweifel, ist die Sache mit dem Forum. Ich habe es hinbekommen, dass im ACP ein Forum angezeigt wird, aber nur, wenn ich es direkt anwähle. Möchte ich die Berechtigungen ändern, sehe ich nichts... Also habe ich irgendwo einen Bock drinnen...
Zunächst habe ich keine Ahnung, wofür die phpbb_acl_groups überhaupt da ist. Uber den Rest meines codierten Meisterwerkes möchte ich garnicht erst reden... 
Es gibt mit Sicherheit eine bessere Lösung. Aber Google versteht mich nicht so recht...
Ich suche nach einer einfacheren Art ein Forum zu erstellen... Die Suchergebnisse gehen erwartungsgemäß in eine ganz andere Richtung...
Ein kleiner Wink in die richtíge Richtung würde mir schon helfen. Ich würde das auch gerne direkt in phpBB realisieren und nicht mit den extra erstellten php-Dateien. Allerdings bin ich in dem Bereich noch nicht fit genug
Aber lernfähig 
Edit: Das mit den Berechtigungen für einzelne User kenne ich. Dieser Weg ist denkbar einfach. Allerdings muss ich den Dozenten dann ins ACP schicken. Das möchte ich verhindern.

ich versuche den ganzen Tag schon etwas zu basteln. Auf unserer Seite gibt es eine Benutzergruppe, die nennt sich Dozenten.
Diese Dozenten sollen Benutzergruppen erstellen dürfen und gleichzeitig ein Forum.
Es handelt sich um Ausbildungsforen. Jeder Kurs soll also eine eigene Gruppe mit dazugehörigem Forum erhalten. Gruppenleiter ist immer der Dozent, der diese Gruppe erstellt hat.
Das mit den Gruppen habe bereits hinbekommen, auch wenn mir einige Dinge in der SQL unklar waren. Im ACP bekomme ich die Gruppen jedenfalls angezeigt.
Code: Alles auswählen
$sql = "SELECT * FROM phpbb_groups ORDER BY group_id DESC LIMIT 1";
foreach ($pdo->query($sql) as $row) {
$letzte_group_id = $row['group_id'];
}
$group_id = $letzte_group_id + 1;
// Die neue Benutzergruppe wird erstellt.
$statement = $pdo->prepare("INSERT INTO phpbb_groups (group_id, group_type, group_founder_manage, group_skip_auth, group_name, group_desc, group_desc_bitfield, group_desc_options, group_desc_uid, group_display, group_avatar, group_avatar_type, group_avatar_width, group_avatar_height, group_rank, group_colour, group_sig_chars, group_receive_pm, group_message_limit, group_legend, group_max_recipients) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$statement->execute(array($group_id, '1', '0', '0', $gruppenname, '', '', '7', '', '0', '', '', '0', '0', '0', '', '0', '1', '0', '0', '0'));
// Gruppenleiter festlegen.
$statement = $pdo->prepare("INSERT INTO phpbb_user_group (group_id, user_id, group_leader, user_pending) VALUES (?, ?, ?, ?)");
$statement->execute(array($group_id, $userid, '1', '0'));
Code: Alles auswählen
$sql = "SELECT * FROM phpbb_forums ORDER BY forum_id DESC LIMIT 1";
foreach ($pdo->query($sql) as $row) {
$letzte_forum_id = $row['forum_id'];
$letzte_left_id = $row['left_id'];
$letzte_right_id = $row['right_id'];
}
$forum_id = $letzte_forum_id + 1;
$left_id = $letzte_left_id + 2;
$right_id = $letzte_right_id + 2;
// Das neue Gruppenforum wird erstellt.
$statement = $pdo->prepare("INSERT INTO phpbb_forums (forum_id, parent_id, left_id, right_id, forum_parents, forum_name, forum_desc, forum_desc_bitfield, forum_desc_options, forum_desc_uid, forum_link, forum_password, forum_style, forum_image, forum_rules, forum_rules_link, forum_rules_bitfield, forum_rules_options, forum_rules_uid, forum_topics_per_page, forum_type, forum_status, forum_last_post_id, forum_last_poster_id, forum_last_post_subject, forum_last_post_time, forum_last_poster_name, forum_last_poster_colour, forum_flags, display_on_index, enable_indexing, enable_icons, enable_prune, prune_next, prune_days, prune_viewed, prune_freq, display_subforum_list, forum_options, forum_posts_approved, forum_posts_unapproved, forum_posts_softdeleted, forum_topics_approved, forum_topics_unapproved, forum_topics_softdeleted, enable_shadow_prune, prune_shadow_days, prune_shadow_freq, prune_shadow_next) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$statement->execute(array($forum_id, '114', $left_id, $right_id, '0', $gruppenname, $group_id, '', '7', '', '', '', '0', '', '', '', '', '7', '', '0', '1', '0', '0', '0', '', '0', '', '', '48', '0', '1', '0', '0', '0', '7', '7', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '7', '1', '0'));
// Berechtigungen festlegen
// Gruppenmitglieder
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array($group_id, $forum_id, '0', '14', '0'));
// Moderatoren
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('4', $forum_id, '0', '14', '0'));
// Administratoren
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '0', '14', '0'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '1', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '2', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '3', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '4', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '5', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '6', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '7', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '8', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '9', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '10', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '11', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '12', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '13', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '14', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '15', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '16', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '17', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '18', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '19', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '20', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '21', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '22', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '23', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '24', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '25', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '26', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '27', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '28', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '29', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '30', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '31', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '32', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '164', '0', '1'));
$statement = $pdo->prepare("INSERT INTO phpbb_acl_groups (group_id, forum_id, auth_option_id, auth_role_id, auth_setting) VALUES (?, ?, ?, ?, ?)");
$statement->execute(array('5', $forum_id, '191', '0', '1'));

Es gibt mit Sicherheit eine bessere Lösung. Aber Google versteht mich nicht so recht...


Ein kleiner Wink in die richtíge Richtung würde mir schon helfen. Ich würde das auch gerne direkt in phpBB realisieren und nicht mit den extra erstellten php-Dateien. Allerdings bin ich in dem Bereich noch nicht fit genug


Edit: Das mit den Berechtigungen für einzelne User kenne ich. Dieser Weg ist denkbar einfach. Allerdings muss ich den Dozenten dann ins ACP schicken. Das möchte ich verhindern.