public static function create($userid, $courseid, $time = false)
 {
     global $DB;
     $transaction = $DB->start_delegated_transaction();
     $message = new self();
     $message->course = self::fetch_course($courseid);
     $message->users[$userid] = self::fetch_user($userid);
     $record = new stdClass();
     $record->courseid = $message->course->id;
     $record->subject = $message->subject = '';
     $record->content = $message->content = '';
     $record->format = $message->format = -1;
     $record->draft = $message->draft = true;
     $record->time = $message->time = $time ?: time();
     $message->id = $DB->insert_record('local_mail_messages', $record);
     $record = new stdClass();
     $record->messageid = $message->id;
     $record->userid = $userid;
     $record->role = $message->role[$userid] = 'from';
     $record->unread = $message->unread[$userid] = false;
     $record->starred = $message->starred[$userid] = false;
     $record->deleted = $message->deleted[$userid] = false;
     $DB->insert_record('local_mail_message_users', $record);
     $message->create_index($userid, 'drafts');
     $message->create_index($userid, 'course', $courseid);
     $message->create_index($userid, 'attachment', false);
     $transaction->allow_commit();
     return $message;
 }