/**
 * Add a new blog post
 *
 * @param mixed $post An object containing all required post fields
 * @param object $cm Course-module for blog
 * @return mixed PostID on success or false
 */
function oublog_add_post($post, $cm, $oublog, $course)
{
    global $DB, $CFG;
    require_once $CFG->libdir . '/completionlib.php';
    $post->itemid = $post->message['itemid'];
    $post->message = $post->message['text'];
    $modcontext = context_module::instance($cm->id);
    if (!isset($post->oubloginstancesid)) {
        if (!($post->oubloginstancesid = $DB->get_field('oublog_instances', 'id', array('oublogid' => $post->oublogid, 'userid' => $post->userid)))) {
            if (!($post->oubloginstancesid = oublog_add_bloginstance($post->oublogid, $post->userid))) {
                return false;
            }
        }
    }
    if (!isset($post->timeposted)) {
        $post->timeposted = time();
    }
    // Begin transaction
    $tw = $DB->start_delegated_transaction();
    if (!($postid = $DB->insert_record('oublog_posts', $post))) {
        return false;
    }
    // Now do filestuff.
    if ($post->attachments) {
        file_save_draft_area_files($post->attachments, $modcontext->id, 'mod_oublog', 'attachment', $postid, array('subdirs' => 0));
    }
    $post->message = file_save_draft_area_files($post->itemid, $modcontext->id, 'mod_oublog', 'message', $postid, array('subdirs' => 0), $post->message);
    $DB->set_field('oublog_posts', 'message', $post->message, array('id' => $postid));
    if (isset($post->tags)) {
        oublog_update_item_tags($post->oubloginstancesid, $postid, $post->tags, $post->visibility);
    }
    $post->id = $postid;
    // Needed by the below
    if (!oublog_search_update($post, $cm)) {
        return false;
    }
    // Inform completion system, if available
    $completion = new completion_info($course);
    if ($completion->is_enabled($cm) && $oublog->completionposts) {
        $completion->update_state($cm, COMPLETION_COMPLETE);
    }
    $tw->allow_commit();
    return $postid;
}
     exit;
 }
 if ($remote) {
     $posts = oublog_import_remote_call('mod_oublog_get_blog_posts', array('username' => $USER->username, 'blogid' => $boublogid, 'selected' => implode(',', $selected), 'inccomments' => $oublog->allowcomments != OUBLOG_COMMENTS_PREVENT, 'bcontextid' => $bcontextid));
 } else {
     $posts = oublog_import_getposts($boublogid, $bcontextid, $selected, $oublog->allowcomments != OUBLOG_COMMENTS_PREVENT, $USER->id);
 }
 if (empty($posts)) {
     print_error('import_step2_none', 'oublog');
 }
 // Get/create user blog instance for this activity.
 if ($oublog->global) {
     list($notused, $oubloginstance) = oublog_get_personal_blog($USER->id);
 } else {
     if (!($oubloginstance = $DB->get_record('oublog_instances', array('oublogid' => $oublog->id, 'userid' => $USER->id)))) {
         if (!($oubloginstance = oublog_add_bloginstance($oublog->id, $USER->id))) {
             print_error('Failed to create blog instance');
         }
         $oubloginstance = (object) array('id' => $oubloginstance);
     }
 }
 // Copy all posts (updating group), checking for conflicts first.
 $bar = new progress_bar('oublog_import_step2_prog', 500, true);
 $conflicts = array();
 $ignoreconflicts = optional_param('ignoreconflicts', false, PARAM_BOOL);
 $cur = 0;
 $files = get_file_storage();
 foreach ($posts as $post) {
     $cur++;
     // Is there a conflict, if so add to our list so we can re-do these later.
     if (!$ignoreconflicts && $DB->get_records('oublog_posts', array('title' => $post->title, 'timeposted' => $post->timeposted, 'oubloginstancesid' => $oubloginstance->id))) {
/**
 * Add a new blog post
 *
 * @param mixed $post An object containing all required post fields
 * @param object $cm Course-module for blog
 * @return mixed PostID on success or false
 */
function oublog_add_post($post, $cm, $oublog, $course)
{
    global $CFG;
    if (!isset($post->oubloginstancesid)) {
        if (!($post->oubloginstancesid = get_field('oublog_instances', 'id', 'oublogid', $post->oublogid, 'userid', $post->userid))) {
            if (!($post->oubloginstancesid = oublog_add_bloginstance($post->oublogid, $post->userid))) {
                return false;
            }
        }
    }
    if (!isset($post->timeposted)) {
        $post->timeposted = time();
    }
    // Begin transaction
    $tw = new transaction_wrapper();
    if (!($postid = insert_record('oublog_posts', $post))) {
        $tw->rollback();
        return false;
    }
    if (isset($post->tags)) {
        oublog_update_item_tags($post->oubloginstancesid, $postid, $post->tags, $post->visibility);
    }
    $post->id = $postid;
    // Needed by the below
    if (!oublog_search_update($post, $cm)) {
        $tw->rollback();
        return false;
    }
    // Inform completion system, if available
    if (class_exists('ouflags')) {
        if (completion_is_enabled($course, $cm) && $oublog->completionposts) {
            completion_update_state($course, $cm, COMPLETION_COMPLETE);
        }
    }
    $tw->commit();
    return $postid;
}