original_string: public static function get_combined_document_for_attempt($assignment, $userid, $attemptnumber) {
          global $USER, $DB;
  
          $assignment = self::get_assignment_from_param($assignment);
  
          // Capability checks.
          if (!$assignment->can_view_submission($userid)) {
              print_error('nopermission');
          }
  
          $grade = $assignment->get_user_grade($userid, true, $attemptnumber);
          if ($assignment->get_instance()->teamsubmission) {
              $submission = $assignment->get_group_submission($userid, 0, false, $attemptnumber);
          } else {
              $submission = $assignment->get_user_submission($userid, false, $attemptnumber);
          }
  
          $contextid = $assignment->get_context()->id;
          $component = 'assignfeedback_editpdf';
          $filearea = self::COMBINED_PDF_FILEAREA;
          $partialfilearea = self::PARTIAL_PDF_FILEAREA;
          $itemid = $grade->id;
          $filepath = '/';
          $filename = self::COMBINED_PDF_FILENAME;
          $fs = get_file_storage();
  
          $partialpdf = $fs->get_file($contextid, $component, $partialfilearea, $itemid, $filepath, $filename);
          if (!empty($partialpdf)) {
              $combinedpdf = $partialpdf;
          } else {
              $combinedpdf = $fs->get_file($contextid, $component, $filearea, $itemid, $filepath, $filename);
          }
  
          if ($combinedpdf && $submission) {
              if ($combinedpdf->get_timemodified() < $submission->timemodified) {
                  // The submission has been updated since the PDF was generated.
                  $combinedpdf = false;
              } else if ($combinedpdf->get_contenthash() == self::BLANK_PDF_HASH) {
                  // The PDF is for a blank page.
                  $combinedpdf = false;
              }
          }
  
          if (empty($combinedpdf)) {
              // The combined PDF does not exist yet. Return the list of files to be combined.
              return self::list_compatible_submission_files_for_attempt($assignment, $userid, $attemptnumber);
          } else {
              // The combined PDF aleady exists. Return it in a new combined_document object.
              $combineddocument = new combined_document();
              return $combineddocument->set_combined_file($combinedpdf);
          }
      }
code: public static function get_combined_document_for_attempt($assignment, $userid, $attemptnumber) {
          global $USER, $DB;
  
          $assignment = self::get_assignment_from_param($assignment);
  
          // Capability checks.
          if (!$assignment->can_view_submission($userid)) {
              print_error('nopermission');
          }
  
          $grade = $assignment->get_user_grade($userid, true, $attemptnumber);
          if ($assignment->get_instance()->teamsubmission) {
              $submission = $assignment->get_group_submission($userid, 0, false, $attemptnumber);
          } else {
              $submission = $assignment->get_user_submission($userid, false, $attemptnumber);
          }
  
          $contextid = $assignment->get_context()->id;
          $component = 'assignfeedback_editpdf';
          $filearea = self::COMBINED_PDF_FILEAREA;
          $partialfilearea = self::PARTIAL_PDF_FILEAREA;
          $itemid = $grade->id;
          $filepath = '/';
          $filename = self::COMBINED_PDF_FILENAME;
          $fs = get_file_storage();
  
          $partialpdf = $fs->get_file($contextid, $component, $partialfilearea, $itemid, $filepath, $filename);
          if (!empty($partialpdf)) {
              $combinedpdf = $partialpdf;
          } else {
              $combinedpdf = $fs->get_file($contextid, $component, $filearea, $itemid, $filepath, $filename);
          }
  
          if ($combinedpdf && $submission) {
              if ($combinedpdf->get_timemodified() < $submission->timemodified) {
                  // The submission has been updated since the PDF was generated.
                  $combinedpdf = false;
              } else if ($combinedpdf->get_contenthash() == self::BLANK_PDF_HASH) {
                  // The PDF is for a blank page.
                  $combinedpdf = false;
              }
          }
  
          if (empty($combinedpdf)) {
              // The combined PDF does not exist yet. Return the list of files to be combined.
              return self::list_compatible_submission_files_for_attempt($assignment, $userid, $attemptnumber);
          } else {
              // The combined PDF aleady exists. Return it in a new combined_document object.
              $combineddocument = new combined_document();
              return $combineddocument->set_combined_file($combinedpdf);
          }
      }
code_tokens: public static function get_combined_document_for_attempt ( $ assignment , $ userid , $ attemptnumber ) { global $ USER , $ DB ; $ assignment = self :: get_assignment_from_param ( $ assignment ) ; // Capability checks. if ( ! $ assignment -> can_view_submission ( $ userid ) ) { print_error ( 'nopermission' ) ; } $ grade = $ assignment -> get_user_grade ( $ userid , true , $ attemptnumber ) ; if ( $ assignment -> get_instance ( ) -> teamsubmission ) { $ submission = $ assignment -> get_group_submission ( $ userid , 0 , false , $ attemptnumber ) ; } else { $ submission = $ assignment -> get_user_submission ( $ userid , false , $ attemptnumber ) ; } $ contextid = $ assignment -> get_context ( ) -> id ; $ component = 'assignfeedback_editpdf' ; $ filearea = self :: COMBINED_PDF_FILEAREA ; $ partialfilearea = self :: PARTIAL_PDF_FILEAREA ; $ itemid = $ grade -> id ; $ filepath = '/' ; $ filename = self :: COMBINED_PDF_FILENAME ; $ fs = get_file_storage ( ) ; $ partialpdf = $ fs -> get_file ( $ contextid , $ component , $ partialfilearea , $ itemid , $ filepath , $ filename ) ; if ( ! empty ( $ partialpdf ) ) { $ combinedpdf = $ partialpdf ; } else { $ combinedpdf = $ fs -> get_file ( $ contextid , $ component , $ filearea , $ itemid , $ filepath , $ filename ) ; } if ( $ combinedpdf && $ submission ) { if ( $ combinedpdf -> get_timemodified ( ) < $ submission -> timemodified ) { // The submission has been updated since the PDF was generated. $ combinedpdf = false ; } else if ( $ combinedpdf -> get_contenthash ( ) == self :: BLANK_PDF_HASH ) { // The PDF is for a blank page. $ combinedpdf = false ; } } if ( empty ( $ combinedpdf ) ) { // The combined PDF does not exist yet. Return the list of files to be combined. return self :: list_compatible_submission_files_for_attempt ( $ assignment , $ userid , $ attemptnumber ) ; } else { // The combined PDF aleady exists. Return it in a new combined_document object. $ combineddocument = new combined_document ( ) ; return $ combineddocument -> set_combined_file ( $ combinedpdf ) ; } }
docstring: Fetch the current combined document ready for state checking.
  
  @param int|\assign $assignment
  @param int $userid
  @param int $attemptnumber (-1 means latest attempt)
  @return combined_document
docstring_tokens: Fetch the current combined document ready for state checking .