original_string: 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;
      }
code: 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;
      }
code_tokens: 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 ; }
docstring: Overwrite an existing file
  
  @param int $itemid
  @param string $filepath
  @param string $filename
  @param string $newfilepath
  @param string $newfilename
  @return bool
docstring_tokens: Overwrite an existing file