Example #1
0
 /**
  * Copy all the files from one file area to another.
  *
  * @param file_storage $fs - The source context id
  * @param int $fromcontextid - The source context id
  * @param string $fromcomponent - The source component
  * @param string $fromfilearea - The source filearea
  * @param int $fromitemid - The source item id
  * @param int $tocontextid - The destination context id
  * @param string $tocomponent - The destination component
  * @param string $tofilearea - The destination filearea
  * @param int $toitemid - The destination item id
  * @return boolean
  */
 private function copy_area_files(file_storage $fs, $fromcontextid, $fromcomponent, $fromfilearea, $fromitemid, $tocontextid, $tocomponent, $tofilearea, $toitemid)
 {
     $newfilerecord = new stdClass();
     $newfilerecord->contextid = $tocontextid;
     $newfilerecord->component = $tocomponent;
     $newfilerecord->filearea = $tofilearea;
     $newfilerecord->itemid = $toitemid;
     if ($files = $fs->get_area_files($fromcontextid, $fromcomponent, $fromfilearea, $fromitemid)) {
         foreach ($files as $file) {
             if ($file->is_directory() and $file->get_filepath() === '/') {
                 // We need a way to mark the age of each draft area.
                 // By not copying the root dir we force it to be created
                 // automatically with current timestamp.
                 continue;
             }
             $newfile = $fs->create_file_from_storedfile($newfilerecord, $file);
         }
     }
     return true;
 }
Example #2
0
 /**
  * Replace the area files in the specified area with those in the source item id.
  *
  * @param \file_storage $fs The file storage class
  * @param int $contextid The ID of the context for the setaskment.
  * @param int $sourceitemid The itemid to copy from - typically the source grade id.
  * @param int $itemid The itemid to copy to - typically the target grade id.
  * @param string $area The file storage area.
  * @param bool $includesubdirs Whether to copy the content of sub-directories too.
  */
 public static function replace_files_from_to($fs, $contextid, $sourceitemid, $itemid, $area, $includesubdirs = false)
 {
     $component = 'setaskfeedback_editpdf';
     // Remove the existing files within this area.
     $fs->delete_area_files($contextid, $component, $area, $itemid);
     // Copy the files from the source area.
     if ($files = $fs->get_area_files($contextid, $component, $area, $sourceitemid, "filename", $includesubdirs)) {
         foreach ($files as $file) {
             $newrecord = new \stdClass();
             $newrecord->contextid = $contextid;
             $newrecord->itemid = $itemid;
             $fs->create_file_from_storedfile($newrecord, $file);
         }
     }
 }