Exemple #1
0
 /**
  * Create a widget for rendering the editor.
  *
  * @param int $userid
  * @param stdClass $grade
  * @param bool $readonly
  * @return setaskfeedback_editpdf_widget
  */
 public function get_widget($userid, $grade, $readonly)
 {
     $attempt = -1;
     if ($grade && $grade->attemptnumber) {
         $attempt = $grade->attemptnumber;
     } else {
         $grade = $this->setaskment->get_user_grade($userid, true);
     }
     $feedbackfile = document_services::get_feedback_document($this->setaskment->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, 'setaskfeedback_editpdf', 'stamps', 0, "filename", false)) {
         foreach ($files as $file) {
             $filename = $file->get_filename();
             if ($filename !== '.') {
                 $existingfile = $fs->get_file($this->setaskment->get_context()->id, 'setaskfeedback_editpdf', 'stamps', $grade->id, '/', $file->get_filename());
                 if (!$existingfile) {
                     $newrecord = new stdClass();
                     $newrecord->contextid = $this->setaskment->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->setaskment->get_context()->id, 'setaskfeedback_editpdf', 'stamps', $grade->id, "filename", false)) {
         foreach ($files as $file) {
             $filename = $file->get_filename();
             if ($filename !== '.') {
                 $url = moodle_url::make_pluginfile_url($this->setaskment->get_context()->id, 'setaskfeedback_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->setaskment->get_context()->id, 'setaskfeedback_editpdf', document_services::FINAL_PDF_FILEAREA, $grade->id, '/', $feedbackfile->get_filename(), false);
         $filename = $feedbackfile->get_filename();
     }
     // Retrieve total number of pages.
     $pagetotal = document_services::page_number_for_attempt($this->setaskment->get_instance()->id, $userid, $attempt, $readonly);
     $widget = new setaskfeedback_editpdf_widget($this->setaskment->get_instance()->id, $userid, $attempt, $url, $filename, $stampfiles, $readonly, $pagetotal);
     return $widget;
 }