set_field_select('interaction_forum_topic', 'sticky', 0, 'id IN (' . implode(',', $checked) . ')', array()); $SESSION->add_ok_msg(get_string('topicunstickysuccess', 'interaction.forum')); } else { if ($moderator && $type == 'closed') { set_field_select('interaction_forum_topic', 'closed', 1, 'id IN (' . implode(',', $checked) . ')', array()); $SESSION->add_ok_msg(get_string('topicclosedsuccess', 'interaction.forum')); } else { if ($moderator && $type == 'open') { set_field_select('interaction_forum_topic', 'closed', 0, 'id IN (' . implode(',', $checked) . ')', array()); $SESSION->add_ok_msg(get_string('topicopenedsuccess', 'interaction.forum')); } else { if ($type == 'subscribe' && !$forum->subscribed) { db_begin(); foreach ($checked as $key => $value) { if (!record_exists('interaction_forum_subscription_topic', 'user', $USER->get('id'), 'topic', $value)) { insert_record('interaction_forum_subscription_topic', (object) array('user' => $USER->get('id'), 'topic' => $value, 'key' => PluginInteractionForum::generate_unsubscribe_key())); } } db_commit(); $SESSION->add_ok_msg(get_string('topicsubscribesuccess', 'interaction.forum')); } else { if ($type == 'unsubscribe' && !$forum->subscribed) { delete_records_sql('DELETE FROM {interaction_forum_subscription_topic} WHERE topic IN (' . implode(',', $checked) . ') AND "user" = ?', array($USER->get('id'))); $SESSION->add_ok_msg(get_string('topicunsubscribesuccess', 'interaction.forum')); } } } } } }
function subscribe_topic_submit(Pieform $form, $values) { global $USER; if ($values['type'] == 'subscribe') { insert_record('interaction_forum_subscription_topic', (object) array('topic' => $values['topic'], 'user' => $USER->get('id'), 'key' => PluginInteractionForum::generate_unsubscribe_key())); } else { delete_records('interaction_forum_subscription_topic', 'topic', $values['topic'], 'user', $USER->get('id')); } redirect('/interaction/forum/topic.php?id=' . $values['topic']); }
/** * When a user joins a group, subscribe them automatically to all forums * that should be subscribable * * @param array $eventdata */ public static function user_joined_group($event, $gm) { if ($forumids = get_column_sql("\n SELECT ii.id\n FROM {group} g\n LEFT JOIN {interaction_instance} ii ON g.id = ii.group\n LEFT JOIN {interaction_forum_instance_config} ific ON ific.forum = ii.id\n WHERE \"group\" = ? AND ific.field = 'autosubscribe' and ific.value = '1'", array($gm['group']))) { db_begin(); foreach ($forumids as $forumid) { insert_record('interaction_forum_subscription_forum', (object) array('forum' => $forumid, 'user' => $gm['member'], 'key' => PluginInteractionForum::generate_unsubscribe_key())); } db_commit(); } }
function addtopic_submit(Pieform $form, $values) { global $USER, $SESSION; $forumid = param_integer('forum'); $groupid = get_field('interaction_instance', '"group"', 'id', $forumid); db_begin(); $topicid = insert_record('interaction_forum_topic', (object) array('forum' => $forumid, 'sticky' => isset($values['sticky']) && $values['sticky'] ? 1 : 0, 'closed' => isset($values['closed']) && $values['closed'] ? 1 : 0), 'id', true); $sendnow = isset($values['sendnow']) && $values['sendnow'] ? 1 : 0; $post = (object) array('topic' => $topicid, 'poster' => $USER->get('id'), 'subject' => $values['subject'], 'body' => $values['body'], 'ctime' => db_format_timestamp(time())); $postid = insert_record('interaction_forum_post', $post, 'id', true); set_field('interaction_forum_post', 'path', sprintf('%010d', $postid), 'id', $postid); // Rewrite the post id into links in the body $newbody = EmbeddedImage::prepare_embedded_images($post->body, 'topic', $topicid, $groupid); $newbody = PluginInteractionForum::prepare_post_body($newbody, $postid); if (!empty($newbody) && $newbody != $post->body) { set_field('interaction_forum_post', 'body', $newbody, 'id', $postid); } if (!record_exists('interaction_forum_subscription_forum', 'user', $USER->get('id'), 'forum', $forumid)) { insert_record('interaction_forum_subscription_topic', (object) array('user' => $USER->get('id'), 'topic' => $topicid, 'key' => PluginInteractionForum::generate_unsubscribe_key())); } db_commit(); if ($sendnow == 0) { $delay = get_config_plugin('interaction', 'forum', 'postdelay'); } else { $delay = 0; } if (!is_null($delay) && $delay == 0) { PluginInteractionForum::interaction_forum_new_post(array($postid)); } $SESSION->add_ok_msg(get_string('addtopicsuccess', 'interaction.forum')); redirect('/interaction/forum/topic.php?id=' . $topicid); }
function addtopic_submit(Pieform $form, $values) { global $USER, $SESSION; $forumid = param_integer('forum'); db_begin(); $topicid = insert_record('interaction_forum_topic', (object) array('forum' => $forumid, 'sticky' => isset($values['sticky']) && $values['sticky'] ? 1 : 0, 'closed' => isset($values['closed']) && $values['closed'] ? 1 : 0), 'id', true); $postid = insert_record('interaction_forum_post', (object) array('topic' => $topicid, 'poster' => $USER->get('id'), 'subject' => $values['subject'], 'body' => $values['body'], 'ctime' => db_format_timestamp(time())), 'id', true); if (!record_exists('interaction_forum_subscription_forum', 'user', $USER->get('id'), 'forum', $forumid)) { insert_record('interaction_forum_subscription_topic', (object) array('user' => $USER->get('id'), 'topic' => $topicid, 'key' => PluginInteractionForum::generate_unsubscribe_key())); } db_commit(); $delay = get_config_plugin('interaction', 'forum', 'postdelay'); if (!is_null($delay) && $delay == 0) { PluginInteractionForum::interaction_forum_new_post(array($postid)); } $SESSION->add_ok_msg(get_string('addtopicsuccess', 'interaction.forum')); redirect('/interaction/forum/topic.php?id=' . $topicid); }