
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.