original_string: protected function handle_file_upload() {
          global $CFG;
  
          // Add the file to a draft file area.
          $draftitemid = file_get_unused_draft_itemid();
          $maxbytes = get_user_max_upload_file_size($this->context, $CFG->maxbytes, $this->course->maxbytes);
          $types = $this->dnduploadhandler->get_handled_file_types($this->module->name);
          $repo = repository::get_instances(array('type' => 'upload', 'currentcontext' => $this->context));
          if (empty($repo)) {
              throw new moodle_exception('errornouploadrepo', 'moodle');
          }
          $repo = reset($repo); // Get the first (and only) upload repo.
          $details = $repo->process_upload(null, $maxbytes, $types, '/', $draftitemid);
          if (empty($this->displayname)) {
              $this->displayname = $this->display_name_from_file($details['file']);
          }
  
          // Create a course module to hold the new instance.
          $this->create_course_module();
  
          // Ask the module to set itself up.
          $moduledata = $this->prepare_module_data($draftitemid);
          $instanceid = plugin_callback('mod', $this->module->name, 'dndupload', 'handle', array($moduledata), 'invalidfunction');
          if ($instanceid === 'invalidfunction') {
              throw new coding_exception("{$this->module->name} does not support drag and drop upload (missing {$this->module->name}_dndupload_handle function");
          }
  
          // Finish setting up the course module.
          $this->finish_setup_course_module($instanceid);
      }
code: protected function handle_file_upload() {
          global $CFG;
  
          // Add the file to a draft file area.
          $draftitemid = file_get_unused_draft_itemid();
          $maxbytes = get_user_max_upload_file_size($this->context, $CFG->maxbytes, $this->course->maxbytes);
          $types = $this->dnduploadhandler->get_handled_file_types($this->module->name);
          $repo = repository::get_instances(array('type' => 'upload', 'currentcontext' => $this->context));
          if (empty($repo)) {
              throw new moodle_exception('errornouploadrepo', 'moodle');
          }
          $repo = reset($repo); // Get the first (and only) upload repo.
          $details = $repo->process_upload(null, $maxbytes, $types, '/', $draftitemid);
          if (empty($this->displayname)) {
              $this->displayname = $this->display_name_from_file($details['file']);
          }
  
          // Create a course module to hold the new instance.
          $this->create_course_module();
  
          // Ask the module to set itself up.
          $moduledata = $this->prepare_module_data($draftitemid);
          $instanceid = plugin_callback('mod', $this->module->name, 'dndupload', 'handle', array($moduledata), 'invalidfunction');
          if ($instanceid === 'invalidfunction') {
              throw new coding_exception("{$this->module->name} does not support drag and drop upload (missing {$this->module->name}_dndupload_handle function");
          }
  
          // Finish setting up the course module.
          $this->finish_setup_course_module($instanceid);
      }
code_tokens: protected function handle_file_upload ( ) { global $ CFG ; // Add the file to a draft file area. $ draftitemid = file_get_unused_draft_itemid ( ) ; $ maxbytes = get_user_max_upload_file_size ( $ this -> context , $ CFG -> maxbytes , $ this -> course -> maxbytes ) ; $ types = $ this -> dnduploadhandler -> get_handled_file_types ( $ this -> module -> name ) ; $ repo = repository :: get_instances ( array ( 'type' => 'upload' , 'currentcontext' => $ this -> context ) ) ; if ( empty ( $ repo ) ) { throw new moodle_exception ( 'errornouploadrepo' , 'moodle' ) ; } $ repo = reset ( $ repo ) ; // Get the first (and only) upload repo. $ details = $ repo -> process_upload ( null , $ maxbytes , $ types , '/' , $ draftitemid ) ; if ( empty ( $ this -> displayname ) ) { $ this -> displayname = $ this -> display_name_from_file ( $ details [ 'file' ] ) ; } // Create a course module to hold the new instance. $ this -> create_course_module ( ) ; // Ask the module to set itself up. $ moduledata = $ this -> prepare_module_data ( $ draftitemid ) ; $ instanceid = plugin_callback ( 'mod' , $ this -> module -> name , 'dndupload' , 'handle' , array ( $ moduledata ) , 'invalidfunction' ) ; if ( $ instanceid === 'invalidfunction' ) { throw new coding_exception ( "{$this->module->name} does not support drag and drop upload (missing {$this->module->name}_dndupload_handle function" ) ; } // Finish setting up the course module. $ this -> finish_setup_course_module ( $ instanceid ) ; }
docstring: Handle uploads containing files - create the course module, ask the upload repository
  to process the file, ask the mod to set itself up, then return the result to the browser
docstring_tokens: Handle uploads containing files - create the course module ask the upload repository to process the file ask the mod to set itself up then return the result to the browser