コード例 #1
0
 /**
  * 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 bool $attachments True if discussion contains attachments
  * @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
  * @param int $asmoderator values are ASMODERATOR_NO, ASMODERATOR_IDENTIFY or ASMODERATOR_ANON
  * @param array $tags array of tags to add to a discussion
  * @return array Array with 2 elements ($discussionid, $postid)
  */
 public function create_discussion($groupid, $subject, $message, $format, $attachments = false, $mailnow = false, $timestart = 0, $timeend = 0, $locked = false, $sticky = false, $userid = 0, $log = true, $asmoderator = self::ASMODERATOR_NO, $tags = null)
 {
     global $DB, $CFG;
     require_once $CFG->dirroot . '/tag/lib.php';
     $userid = mod_forumng_utils::get_real_userid($userid);
     // Prepare discussion object
     $discussionobj = new StdClass();
     $discussionobj->forumngid = $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
     $transaction = $DB->start_delegated_transaction();
     $discussionobj->id = $DB->insert_record('forumng_discussions', $discussionobj);
     $newdiscussion = new mod_forumng_discussion($this, $discussionobj, false, -1);
     // Create initial post.
     $postid = $newdiscussion->create_root_post($subject, $message, $format, $attachments, $mailnow, $userid, $asmoderator);
     // Update discussion so that it contains the post id
     $changes = new StdClass();
     $changes->id = $discussionobj->id;
     $changes->postid = $postid;
     $changes->lastpostid = $postid;
     $DB->update_record('forumng_discussions', $changes);
     $newdiscussion->log('add discussion');
     if (self::search_installed()) {
         mod_forumng_post::get_from_id($postid, $this->get_course_module_id())->search_update();
     }
     // If tags add to tag_instance records.
     if ($tags != null) {
         tag_set('forumng_discussions', $discussionobj->id, $tags, 'mod_forumng', $this->context->id);
     }
     $transaction->allow_commit();
     return array($newdiscussion->get_id(), $postid);
 }