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);
        }
    }
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);
        }
    }
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 ) ; } }
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
Fetch the current combined document ready for state checking .