public static function overwrite_existing_draftfile($itemid, $filepath, $filename, $newfilepath, $newfilename) {
        global $USER;
        $fs = get_file_storage();
        $user_context = context_user::instance($USER->id);
        if ($file = $fs->get_file($user_context->id, 'user', 'draft', $itemid, $filepath, $filename)) {
            if ($tempfile = $fs->get_file($user_context->id, 'user', 'draft', $itemid, $newfilepath, $newfilename)) {
                // Remember original file source field.
                $source = @unserialize($file->get_source());
                // Remember the original sortorder.
                $sortorder = $file->get_sortorder();
                if ($tempfile->is_external_file()) {
                    // New file is a reference. Check that existing file does not have any other files referencing to it
                    if (isset($source->original) && $fs->search_references_count($source->original)) {
                        return (object)array('error' => get_string('errordoublereference', 'repository'));
                    }
                }
                // delete existing file to release filename
                $file->delete();
                // create new file
                $newfile = $fs->create_file_from_storedfile(array('filepath'=>$filepath, 'filename'=>$filename), $tempfile);
                // Preserve original file location (stored in source field) for handling references
                if (isset($source->original)) {
                    if (!($newfilesource = @unserialize($newfile->get_source()))) {
                        $newfilesource = new stdClass();
                    }
                    $newfilesource->original = $source->original;
                    $newfile->set_source(serialize($newfilesource));
                }
                $newfile->set_sortorder($sortorder);
                // remove temp file
                $tempfile->delete();
                return true;
            }
        }
        return false;
    }
public static function overwrite_existing_draftfile($itemid, $filepath, $filename, $newfilepath, $newfilename) {
        global $USER;
        $fs = get_file_storage();
        $user_context = context_user::instance($USER->id);
        if ($file = $fs->get_file($user_context->id, 'user', 'draft', $itemid, $filepath, $filename)) {
            if ($tempfile = $fs->get_file($user_context->id, 'user', 'draft', $itemid, $newfilepath, $newfilename)) {
                // Remember original file source field.
                $source = @unserialize($file->get_source());
                // Remember the original sortorder.
                $sortorder = $file->get_sortorder();
                if ($tempfile->is_external_file()) {
                    // New file is a reference. Check that existing file does not have any other files referencing to it
                    if (isset($source->original) && $fs->search_references_count($source->original)) {
                        return (object)array('error' => get_string('errordoublereference', 'repository'));
                    }
                }
                // delete existing file to release filename
                $file->delete();
                // create new file
                $newfile = $fs->create_file_from_storedfile(array('filepath'=>$filepath, 'filename'=>$filename), $tempfile);
                // Preserve original file location (stored in source field) for handling references
                if (isset($source->original)) {
                    if (!($newfilesource = @unserialize($newfile->get_source()))) {
                        $newfilesource = new stdClass();
                    }
                    $newfilesource->original = $source->original;
                    $newfile->set_source(serialize($newfilesource));
                }
                $newfile->set_sortorder($sortorder);
                // remove temp file
                $tempfile->delete();
                return true;
            }
        }
        return false;
    }
public static function overwrite_existing_draftfile ( $ itemid , $ filepath , $ filename , $ newfilepath , $ newfilename ) { global $ USER ; $ fs = get_file_storage ( ) ; $ user_context = context_user :: instance ( $ USER -> id ) ; if ( $ file = $ fs -> get_file ( $ user_context -> id , 'user' , 'draft' , $ itemid , $ filepath , $ filename ) ) { if ( $ tempfile = $ fs -> get_file ( $ user_context -> id , 'user' , 'draft' , $ itemid , $ newfilepath , $ newfilename ) ) { // Remember original file source field. $ source = @ unserialize ( $ file -> get_source ( ) ) ; // Remember the original sortorder. $ sortorder = $ file -> get_sortorder ( ) ; if ( $ tempfile -> is_external_file ( ) ) { // New file is a reference. Check that existing file does not have any other files referencing to it if ( isset ( $ source -> original ) && $ fs -> search_references_count ( $ source -> original ) ) { return ( object ) array ( 'error' => get_string ( 'errordoublereference' , 'repository' ) ) ; } } // delete existing file to release filename $ file -> delete ( ) ; // create new file $ newfile = $ fs -> create_file_from_storedfile ( array ( 'filepath' => $ filepath , 'filename' => $ filename ) , $ tempfile ) ; // Preserve original file location (stored in source field) for handling references if ( isset ( $ source -> original ) ) { if ( ! ( $ newfilesource = @ unserialize ( $ newfile -> get_source ( ) ) ) ) { $ newfilesource = new stdClass ( ) ; } $ newfilesource -> original = $ source -> original ; $ newfile -> set_source ( serialize ( $ newfilesource ) ) ; } $ newfile -> set_sortorder ( $ sortorder ) ; // remove temp file $ tempfile -> delete ( ) ; return true ; } } return false ; }
Overwrite an existing file

@param int $itemid
@param string $filepath
@param string $filename
@param string $newfilepath
@param string $newfilename
@return bool
Overwrite an existing file