function ouwiki_update_instance($ouwiki)
{
    global $CFG;
    $ok = true;
    $ouwiki->id = $ouwiki->instance;
    // Set up null values
    $nullvalues = array('editbegin', 'editend', 'timeout');
    foreach ($nullvalues as $nullvalue) {
        if (empty($ouwiki->{$nullvalue})) {
            unset($ouwiki->{$nullvalue});
            $ok &= execute_sql("UPDATE {$CFG->prefix}ouwiki SET {$nullvalue}=NULL WHERE id={$ouwiki->id}", false);
        }
    }
    if (strlen(preg_replace('/(<.*?>)|(&.*?;)|\\s/', '', $ouwiki->summary)) == 0) {
        unset($ouwiki->summary);
        $ok &= execute_sql("UPDATE {$CFG->prefix}ouwiki SET summary=NULL WHERE id={$ouwiki->id}", false);
    }
    ouwiki_check_groups($ouwiki);
    // insitu editing
    if (class_exists('ouflags') && has_capability('local/course:revisioneditor', get_context_instance(CONTEXT_COURSE, $ouwiki->course), null, false)) {
        include_once $CFG->dirroot . '/local/insitu/lib.php';
        return oci_mod_make_backup_and_save_instance($ouwiki);
    }
    // Update main record
    $ok &= update_record("ouwiki", $ouwiki);
    return $ok;
}
function forumng_update_instance($forumng)
{
    require_once dirname(__FILE__) . '/forum.php';
    $forumng->id = $forumng->instance;
    $previous = get_record('forumng', 'id', $forumng->id);
    if (class_exists('ouflags') && has_capability('local/course:revisioneditor', get_context_instance(CONTEXT_COURSE, $forumng->course), null, false)) {
        global $CFG;
        //  handle insitu editing updates
        include_once $CFG->dirroot . '/local/insitu/lib.php';
        oci_mod_make_backup_and_save_instance($forumng);
    } else {
        if (!update_record('forumng', $forumng)) {
            return false;
        }
    }
    try {
        $forum = forum::get_from_id($forumng->id, forum::CLONE_DIRECT);
        $forum->updated($previous);
    } catch (Exception $e) {
        return false;
    }
    return true;
}