original_string: public function get_widget($userid, $grade, $readonly) {
          $attempt = -1;
          if ($grade && isset($grade->attemptnumber)) {
              $attempt = $grade->attemptnumber;
          } else {
              $grade = $this->assignment->get_user_grade($userid, true);
          }
  
          $feedbackfile = document_services::get_feedback_document($this->assignment->get_instance()->id,
                                                                   $userid,
                                                                   $attempt);
  
          $stampfiles = array();
          $fs = get_file_storage();
          $syscontext = context_system::instance();
  
          // Copy any new stamps to this instance.
          if ($files = $fs->get_area_files($syscontext->id,
                                           'assignfeedback_editpdf',
                                           'stamps',
                                           0,
                                           "filename",
                                           false)) {
              foreach ($files as $file) {
                  $filename = $file->get_filename();
                  if ($filename !== '.') {
  
                      $existingfile = $fs->get_file($this->assignment->get_context()->id,
                                                    'assignfeedback_editpdf',
                                                    'stamps',
                                                    $grade->id,
                                                    '/',
                                                    $file->get_filename());
                      if (!$existingfile) {
                          $newrecord = new stdClass();
                          $newrecord->contextid = $this->assignment->get_context()->id;
                          $newrecord->itemid = $grade->id;
                          $fs->create_file_from_storedfile($newrecord, $file);
                      }
                  }
              }
          }
  
          // Now get the full list of stamp files for this instance.
          if ($files = $fs->get_area_files($this->assignment->get_context()->id,
                                           'assignfeedback_editpdf',
                                           'stamps',
                                           $grade->id,
                                           "filename",
                                           false)) {
              foreach ($files as $file) {
                  $filename = $file->get_filename();
                  if ($filename !== '.') {
                      $url = moodle_url::make_pluginfile_url($this->assignment->get_context()->id,
                                                     'assignfeedback_editpdf',
                                                     'stamps',
                                                     $grade->id,
                                                     '/',
                                                     $file->get_filename(),
                                                     false);
                      array_push($stampfiles, $url->out());
                  }
              }
          }
  
          $url = false;
          $filename = '';
          if ($feedbackfile) {
              $url = moodle_url::make_pluginfile_url($this->assignment->get_context()->id,
                                                     'assignfeedback_editpdf',
                                                     document_services::FINAL_PDF_FILEAREA,
                                                     $grade->id,
                                                     '/',
                                                     $feedbackfile->get_filename(),
                                                     false);
             $filename = $feedbackfile->get_filename();
          }
  
          $widget = new assignfeedback_editpdf_widget($this->assignment->get_instance()->id,
                                                      $userid,
                                                      $attempt,
                                                      $url,
                                                      $filename,
                                                      $stampfiles,
                                                      $readonly
                                                  );
          return $widget;
      }
code: public function get_widget($userid, $grade, $readonly) {
          $attempt = -1;
          if ($grade && isset($grade->attemptnumber)) {
              $attempt = $grade->attemptnumber;
          } else {
              $grade = $this->assignment->get_user_grade($userid, true);
          }
  
          $feedbackfile = document_services::get_feedback_document($this->assignment->get_instance()->id,
                                                                   $userid,
                                                                   $attempt);
  
          $stampfiles = array();
          $fs = get_file_storage();
          $syscontext = context_system::instance();
  
          // Copy any new stamps to this instance.
          if ($files = $fs->get_area_files($syscontext->id,
                                           'assignfeedback_editpdf',
                                           'stamps',
                                           0,
                                           "filename",
                                           false)) {
              foreach ($files as $file) {
                  $filename = $file->get_filename();
                  if ($filename !== '.') {
  
                      $existingfile = $fs->get_file($this->assignment->get_context()->id,
                                                    'assignfeedback_editpdf',
                                                    'stamps',
                                                    $grade->id,
                                                    '/',
                                                    $file->get_filename());
                      if (!$existingfile) {
                          $newrecord = new stdClass();
                          $newrecord->contextid = $this->assignment->get_context()->id;
                          $newrecord->itemid = $grade->id;
                          $fs->create_file_from_storedfile($newrecord, $file);
                      }
                  }
              }
          }
  
          // Now get the full list of stamp files for this instance.
          if ($files = $fs->get_area_files($this->assignment->get_context()->id,
                                           'assignfeedback_editpdf',
                                           'stamps',
                                           $grade->id,
                                           "filename",
                                           false)) {
              foreach ($files as $file) {
                  $filename = $file->get_filename();
                  if ($filename !== '.') {
                      $url = moodle_url::make_pluginfile_url($this->assignment->get_context()->id,
                                                     'assignfeedback_editpdf',
                                                     'stamps',
                                                     $grade->id,
                                                     '/',
                                                     $file->get_filename(),
                                                     false);
                      array_push($stampfiles, $url->out());
                  }
              }
          }
  
          $url = false;
          $filename = '';
          if ($feedbackfile) {
              $url = moodle_url::make_pluginfile_url($this->assignment->get_context()->id,
                                                     'assignfeedback_editpdf',
                                                     document_services::FINAL_PDF_FILEAREA,
                                                     $grade->id,
                                                     '/',
                                                     $feedbackfile->get_filename(),
                                                     false);
             $filename = $feedbackfile->get_filename();
          }
  
          $widget = new assignfeedback_editpdf_widget($this->assignment->get_instance()->id,
                                                      $userid,
                                                      $attempt,
                                                      $url,
                                                      $filename,
                                                      $stampfiles,
                                                      $readonly
                                                  );
          return $widget;
      }
code_tokens: public function get_widget ( $ userid , $ grade , $ readonly ) { $ attempt = - 1 ; if ( $ grade && isset ( $ grade -> attemptnumber ) ) { $ attempt = $ grade -> attemptnumber ; } else { $ grade = $ this -> assignment -> get_user_grade ( $ userid , true ) ; } $ feedbackfile = document_services :: get_feedback_document ( $ this -> assignment -> get_instance ( ) -> id , $ userid , $ attempt ) ; $ stampfiles = array ( ) ; $ fs = get_file_storage ( ) ; $ syscontext = context_system :: instance ( ) ; // Copy any new stamps to this instance. if ( $ files = $ fs -> get_area_files ( $ syscontext -> id , 'assignfeedback_editpdf' , 'stamps' , 0 , "filename" , false ) ) { foreach ( $ files as $ file ) { $ filename = $ file -> get_filename ( ) ; if ( $ filename !== '.' ) { $ existingfile = $ fs -> get_file ( $ this -> assignment -> get_context ( ) -> id , 'assignfeedback_editpdf' , 'stamps' , $ grade -> id , '/' , $ file -> get_filename ( ) ) ; if ( ! $ existingfile ) { $ newrecord = new stdClass ( ) ; $ newrecord -> contextid = $ this -> assignment -> get_context ( ) -> id ; $ newrecord -> itemid = $ grade -> id ; $ fs -> create_file_from_storedfile ( $ newrecord , $ file ) ; } } } } // Now get the full list of stamp files for this instance. if ( $ files = $ fs -> get_area_files ( $ this -> assignment -> get_context ( ) -> id , 'assignfeedback_editpdf' , 'stamps' , $ grade -> id , "filename" , false ) ) { foreach ( $ files as $ file ) { $ filename = $ file -> get_filename ( ) ; if ( $ filename !== '.' ) { $ url = moodle_url :: make_pluginfile_url ( $ this -> assignment -> get_context ( ) -> id , 'assignfeedback_editpdf' , 'stamps' , $ grade -> id , '/' , $ file -> get_filename ( ) , false ) ; array_push ( $ stampfiles , $ url -> out ( ) ) ; } } } $ url = false ; $ filename = '' ; if ( $ feedbackfile ) { $ url = moodle_url :: make_pluginfile_url ( $ this -> assignment -> get_context ( ) -> id , 'assignfeedback_editpdf' , document_services :: FINAL_PDF_FILEAREA , $ grade -> id , '/' , $ feedbackfile -> get_filename ( ) , false ) ; $ filename = $ feedbackfile -> get_filename ( ) ; } $ widget = new assignfeedback_editpdf_widget ( $ this -> assignment -> get_instance ( ) -> id , $ userid , $ attempt , $ url , $ filename , $ stampfiles , $ readonly ) ; return $ widget ; }
docstring: Create a widget for rendering the editor.
  
  @param int $userid
  @param stdClass $grade
  @param bool $readonly
  @return assignfeedback_editpdf_widget
docstring_tokens: Create a widget for rendering the editor .