/**
  * Creates a new discussion in this forum.
  * @param int $groupid Group ID for the discussion or null if it should show
  *   to all groups
  * @param string $subject Subject of message
  * @param string $message Message content
  * @param int $format Format of message content
  * @param array $attachments Array of attachment files. These should have
  *   already been checked and renamed etc by a Moodle upload manager.
  * @param bool $mailnow True to mail ASAP, else false
  * @param int $timestart Visibility time of discussion (seconds since epoch) or null
  * @param int $timeend Time at which discussion disappears (seconds since epoch) or null
  * @param bool $locked True if discussion should be locked
  * @param bool $sticky True if discussion should be sticky
  * @param int $userid User ID or 0 for current user
  * @param bool $log True to log this
  * @return array Array with 2 elements ($discussionid, $postid)
  */
 public function create_discussion($groupid, $subject, $message, $format, $attachments = array(), $mailnow = false, $timestart = 0, $timeend = 0, $locked = false, $sticky = false, $userid = 0, $log = true)
 {
     $userid = forum_utils::get_real_userid($userid);
     // Prepare discussion object
     $discussionobj = new StdClass();
     $discussionobj->forumid = $this->forumfields->id;
     $discussionobj->groupid = $groupid == self::ALL_GROUPS || $groupid == self::NO_GROUPS ? null : $groupid;
     $discussionobj->postid = null;
     // Temporary until we create that first post
     $discussionobj->lastpostid = null;
     $discussionobj->timestart = $timestart;
     $discussionobj->timeend = $timeend;
     $discussionobj->deleted = 0;
     $discussionobj->locked = $locked ? 1 : 0;
     $discussionobj->sticky = $sticky ? 1 : 0;
     // Create discussion
     forum_utils::start_transaction();
     $discussionobj->id = forum_utils::insert_record('forumng_discussions', $discussionobj);
     $newdiscussion = new forum_discussion($this, $discussionobj, false, -1);
     // Create initial post
     $postid = $newdiscussion->create_root_post($subject, $message, $format, $attachments, $mailnow, $userid);
     // Update discussion so that it contains the post id
     $changes = new StdClass();
     $changes->id = $discussionobj->id;
     $changes->postid = $postid;
     $changes->lastpostid = $postid;
     forum_utils::update_record('forumng_discussions', $changes);
     $newdiscussion->log('add discussion');
     if (forum::search_installed()) {
         forum_post::get_from_id($postid, $this->get_course_module_id())->search_update();
     }
     forum_utils::finish_transaction();
     return array($newdiscussion->get_id(), $postid);
 }