ILIAS  trunk Revision v12.0_alpha-439-g30457d6d0bc
ilAssQuestionFeedback Class Reference
+ Inheritance diagram for ilAssQuestionFeedback:
+ Collaboration diagram for ilAssQuestionFeedback:

Public Member Functions

 __construct (assQuestion $questionOBJ, ilCtrl $ctrl, ilDBInterface $db, ilLanguage $lng)
 constructor More...
 
 getGenericFeedbackTestPresentation (int $question_id, bool $solution_completed)
 returns the html of GENERIC feedback for the given question id for test presentation (either for the complete solution or for the incomplete solution) More...
 
 getSpecificAnswerFeedbackTestPresentation (int $question_id, int $question_index, int $answer_index)
 returns the html of SPECIFIC feedback for the given question id and answer index for test presentation More...
 
 completeGenericFormProperties (ilPropertyFormGUI $form)
 completes a given form object with the GENERIC form properties required by all question types More...
 
 completeSpecificFormProperties (ilPropertyFormGUI $form)
 completes a given form object with the SPECIFIC form properties required by this question type More...
 
 initGenericFormProperties (ilPropertyFormGUI $form)
 initialises a given form object's GENERIC form properties relating to all question types More...
 
 initSpecificFormProperties (ilPropertyFormGUI $form)
 initialises a given form object's SPECIFIC form properties relating to this question type More...
 
 saveGenericFormProperties (ilPropertyFormGUI $form)
 saves a given form object's GENERIC form properties relating to all question types More...
 
 saveSpecificFormProperties (ilPropertyFormGUI $form)
 saves a given form object's SPECIFIC form properties relating to this question type More...
 
 isSaveableInPageObjectEditingMode ()
 returns the fact wether the feedback editing form is saveable in page object editing or not. More...
 
 getGenericFeedbackContent (int $question_id, bool $solution_completed)
 returns the GENERIC feedback content for a given question state. More...
 
 getSpecificAnswerFeedbackContent (int $question_id, int $question_index, int $answer_index)
 
 getAllSpecificAnswerFeedbackContents (int $question_id)
 
 isSpecificAnswerFeedbackAvailable (int $question_id)
 
 saveGenericFeedbackContent (int $question_id, bool $solution_completed, string $feedback_content)
 saves GENERIC feedback content for the given question id to the database. More...
 
 saveSpecificAnswerFeedbackContent (int $question_id, int $question_index, int $answer_index, string $feedback_content)
 
 deleteGenericFeedbacks (int $question_id, bool $isAdditionalContentEditingModePageObject)
 deletes all GENERIC feedback contents (and page objects if required) for the given question id More...
 
 deleteSpecificAnswerFeedbacks (int $question_id, bool $isAdditionalContentEditingModePageObject)
 
 duplicateFeedback (int $originalQuestionId, int $duplicateQuestionId)
 duplicates the feedback relating to the given original question id and saves it for the given duplicate question id More...
 
 cloneFeedback (int $original_question_id, int $duplicate_question_id)
 syncs the feedback from a duplicated question back to the original question More...
 
 checkFeedbackParent (int $feedbackId)
 
 getClassNameByType (string $a_type, bool $a_gui=false)
 
 setPageObjectOutputMode (string $page_obj_output_mode)
 
 getPageObjectOutputMode ()
 
 getGenericFeedbackExportPresentation (int $question_id, bool $solution_completed)
 returns the generic feedback export presentation for given question id either for solution completed or incompleted More...
 
 getSpecificAnswerFeedbackExportPresentation (int $question_id, int $question_index, int $answer_index)
 returns the generic feedback export presentation for given question id either for solution completed or incompleted More...
 
 importGenericFeedback (int $question_id, bool $solution_completed, string $feedback_content)
 imports the given feedback content as generic feedback for the given question id for either the complete or incomplete solution More...
 
 importSpecificAnswerFeedback (int $question_id, int $question_index, int $answer_index, string $feedback_content)
 
 migrateContentForLearningModule (ilAssSelfAssessmentMigrator $migrator, int $question_id)
 
 createFeedbackPages (string $mode)
 

Static Public Member Functions

static isValidFeedbackPageObjectType (string $feedbackPageObjectType)
 returns the fact whether the given page object type relates to generic or specific feedback page objects More...
 

Data Fields

const CSS_CLASS_FEEDBACK_CORRECT = 'ilc_qfeedr_FeedbackRight'
 
const CSS_CLASS_FEEDBACK_WRONG = 'ilc_qfeedw_FeedbackWrong'
 
const PAGE_OBJECT_TYPE_GENERIC_FEEDBACK = 'qfbg'
 type for generic feedback page objects More...
 
const PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK = 'qfbs'
 type for specific feedback page objects More...
 
const FEEDBACK_SOLUTION_INCOMPLETE_PAGE_OBJECT_ID = 1
 id for page object relating to generic incomplete solution feedback More...
 
const FEEDBACK_SOLUTION_COMPLETE_PAGE_OBJECT_ID = 2
 id for page object relating to generic complete solution feedback More...
 
const TABLE_NAME_GENERIC_FEEDBACK = 'qpl_fb_generic'
 

Protected Member Functions

 buildFeedbackContentFormProperty (string $label, string $post_var, bool $as_non_editable)
 builds and returns a form property gui object with the given label and postvar that is addable to property forms depending on the given flag "asNonEditable" it returns a ... More...
 
 cloneSpecificFeedback (int $source_question_id, int $target_question_id)
 duplicates the SPECIFIC feedback relating to the given original question id and saves it for the given duplicate question id More...
 
 deleteFeedbackOfOriginalQuestion (string $table_name, int $original_question_id, string $page_object_type)
 
 getGenericFeedbackId (int $question_id, bool $solution_completed)
 returns the SPECIFIC answer feedback ID for a given question id and answer index. More...
 
 isGenericFeedbackId (int $feedbackId)
 
 isSpecificAnswerFeedbackId (int $feedbackId)
 
 getGenericFeedbackTableName ()
 
 getPageObjectNonEditableValueHTML (string $page_object_type, int $page_object_id)
 returns html content to be used as value for non editable value form properties in feedback editing form More...
 
 getPageObjectXML (string $page_object_type, int $page_object_id)
 
 createPageObject (string $page_object_type, int $page_object_id, string $page_object_content)
 
 clonePageObject (string $page_object_type, int $source_page_object_id, int $target_page_object_id, int $target_page_object_parent_id)
 
 ensurePageObjectDeleted (string $page_object_type, int $page_object_id)
 
 getGenericFeedbackPageObjectType ()
 
 getSpecificAnswerFeedbackPageObjectType ()
 
 getGenericFeedbackPageObjectId (int $question_id, bool $solution_completed)
 returns a useable page object id for generic feedback page objects for the given question id for either the complete or incomplete solution (using the id sequence of non page object generic feedback) More...
 
 cleanupPageContent (string $content)
 

Protected Attributes

assQuestion $questionOBJ
 
ilCtrl $ctrl
 
ilDBInterface $db
 
ilLanguage $lng
 
string $page_obj_output_mode = "presentation"
 

Private Member Functions

 duplicateGenericFeedback (int $originalQuestionId, int $duplicateQuestionId)
 duplicates the GENERIC feedback relating to the given original question id and saves it for the given duplicate question id More...
 
 cloneGenericFeedback (int $original_question_id, int $duplicate_question_id)
 syncs the GENERIC feedback from a duplicated question back to the original question More...
 
 getPageObjectEditingLink (string $page_object_type, int $page_object_id)
 
 ensurePageObjectExists (string $page_object_type, int $page_object_id)
 

Detailed Description

Definition at line 29 of file class.ilAssQuestionFeedback.php.

Constructor & Destructor Documentation

◆ __construct()

ilAssQuestionFeedback::__construct ( assQuestion  $questionOBJ,
ilCtrl  $ctrl,
ilDBInterface  $db,
ilLanguage  $lng 
)
final

constructor

@final @access public

Parameters
assQuestion$questionOBJ
ilCtrl$ctrl
ilDBInterface$db
ilLanguage$lng

Definition at line 76 of file class.ilAssQuestionFeedback.php.

References $ctrl, $db, $lng, $questionOBJ, ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

Member Function Documentation

◆ buildFeedbackContentFormProperty()

ilAssQuestionFeedback::buildFeedbackContentFormProperty ( string  $label,
string  $post_var,
bool  $as_non_editable 
)
finalprotected

builds and returns a form property gui object with the given label and postvar that is addable to property forms depending on the given flag "asNonEditable" it returns a ...

  • non editable gui
  • textarea input gui
    Returns
    ilTextAreaInputGUI|ilNonEditableValueGUI

Definition at line 244 of file class.ilAssQuestionFeedback.php.

245 {
246 if ($as_non_editable) {
247 $property = new ilNonEditableValueGUI($label, $post_var, true);
248 } else {
249 $property = new ilTextAreaInputGUI($label, $post_var);
250 $property->setRequired(false);
251 $property->setRows(10);
252 $property->setCols(80);
253
254 if (!$this->questionOBJ->getPreventRteUsage()) {
255 $property->setUseRte(true);
256 $property->setRteTags(ilRTESettings::_getUsedHTMLTags("assessment"));
257 $property->setRTESupport($this->questionOBJ->getId(), "qpl", "assessment");
258 } else {
260 $property->setUseTagsForRteOnly(false);
261 }
262 $property->setInfo($this->lng->txt('latex_edit_info'));
263
264 $property->setRTESupport($this->questionOBJ->getId(), "qpl", "assessment");
265 }
266
267 return $property;
268 }
static getSelfAssessmentTags()
Get tags allowed in question tags in self assessment mode.
This class represents a non editable value in a property form.
static _getUsedHTMLTags(string $module='')
This class represents a property that may include a sub form.
This class represents a text area property in a property form.

References ilRTESettings\_getUsedHTMLTags(), ilAssSelfAssessmentQuestionFormatter\getSelfAssessmentTags(), and ILIAS\Repository\lng().

Referenced by ilAssClozeTestFeedback\completeFbPropsForNumericGap(), ilAssClozeTestFeedback\completeFbPropsForSelectGap(), ilAssClozeTestFeedback\completeFbPropsForTextGap(), ilAssClozeTestFeedback\completeFormPropsForFeedbackModeGapQuestion(), completeGenericFormProperties(), ilAssConfigurableMultiOptionQuestionFeedback\completeSpecificFormProperties(), and ilAssMultiOptionQuestionFeedback\completeSpecificFormProperties().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkFeedbackParent()

ilAssQuestionFeedback::checkFeedbackParent ( int  $feedbackId)
final

Definition at line 545 of file class.ilAssQuestionFeedback.php.

545 : bool
546 {
547 if ($this->isGenericFeedbackId($feedbackId)) {
548 return true;
549 }
550
551 if ($this->isSpecificAnswerFeedbackId($feedbackId)) {
552 return true;
553 }
554
555 return false;
556 }
isSpecificAnswerFeedbackId(int $feedbackId)

◆ cleanupPageContent()

ilAssQuestionFeedback::cleanupPageContent ( string  $content)
protected

Definition at line 784 of file class.ilAssQuestionFeedback.php.

784 : string
785 {
786 $doc = new DOMDocument('1.0', 'UTF-8');
787 if (@$doc->loadHTML('<html><body>' . $content . '</body></html>')) {
788 $xpath = new DOMXPath($doc);
789 $nodes_after_comments = $xpath->query('//comment()/following-sibling::*[1]');
790 foreach ($nodes_after_comments as $node_after_comments) {
791 if (trim($node_after_comments->nodeValue) === ''
792 && $node_after_comments->childElementCount === 0) {
793 return '';
794 }
795 }
796 }
797 return $content;
798 }

Referenced by ilAssMultiOptionQuestionFeedback\getAllSpecificAnswerPageEditorFeedbackContents(), getGenericFeedbackTestPresentation(), and ilAssMultiOptionQuestionFeedback\getSpecificAnswerFeedbackTestPresentation().

+ Here is the caller graph for this function:

◆ cloneFeedback()

ilAssQuestionFeedback::cloneFeedback ( int  $original_question_id,
int  $duplicate_question_id 
)
final

syncs the feedback from a duplicated question back to the original question

Definition at line 441 of file class.ilAssQuestionFeedback.php.

441 : void
442 {
443 $this->cloneGenericFeedback($original_question_id, $duplicate_question_id);
444 $this->cloneSpecificFeedback($duplicate_question_id, $original_question_id);
445 }
cloneGenericFeedback(int $original_question_id, int $duplicate_question_id)
syncs the GENERIC feedback from a duplicated question back to the original question
cloneSpecificFeedback(int $source_question_id, int $target_question_id)
duplicates the SPECIFIC feedback relating to the given original question id and saves it for the give...

References cloneGenericFeedback(), and cloneSpecificFeedback().

+ Here is the call graph for this function:

◆ cloneGenericFeedback()

ilAssQuestionFeedback::cloneGenericFeedback ( int  $original_question_id,
int  $duplicate_question_id 
)
private

syncs the GENERIC feedback from a duplicated question back to the original question

Definition at line 450 of file class.ilAssQuestionFeedback.php.

450 : void
451 {
454 $original_question_id,
456 );
457
458 // get generic feedback of the actual (duplicated) question
459 $result = $this->db->queryF(
460 "SELECT * FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s",
462 [$duplicate_question_id]
463 );
464
465 // save generic feedback to the original question
466 while ($row = $this->db->fetchAssoc($result)) {
467 $next_id = $this->db->nextId($this->getGenericFeedbackTableName());
468
469 $this->db->insert($this->getGenericFeedbackTableName(), [
470 'feedback_id' => [ilDBConstants::T_INTEGER, $next_id],
471 'question_fi' => [ilDBConstants::T_INTEGER, $original_question_id],
472 'correctness' => [ilDBConstants::T_TEXT, $row['correctness']],
473 'feedback' => [ilDBConstants::T_CLOB, $row['feedback']],
474 'tstamp' => [ilDBConstants::T_INTEGER, time()]
475 ]);
476
477 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
478 $page_object_type = $this->getGenericFeedbackPageObjectType();
479 $this->clonePageObject($page_object_type, $row['feedback_id'], $next_id, $original_question_id);
480 }
481 }
482 }
clonePageObject(string $page_object_type, int $source_page_object_id, int $target_page_object_id, int $target_page_object_parent_id)
deleteFeedbackOfOriginalQuestion(string $table_name, int $original_question_id, string $page_object_type)

References clonePageObject(), deleteFeedbackOfOriginalQuestion(), getGenericFeedbackPageObjectType(), getGenericFeedbackTableName(), ilDBConstants\T_CLOB, ilDBConstants\T_INTEGER, and ilDBConstants\T_TEXT.

Referenced by cloneFeedback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ clonePageObject()

ilAssQuestionFeedback::clonePageObject ( string  $page_object_type,
int  $source_page_object_id,
int  $target_page_object_id,
int  $target_page_object_parent_id 
)
finalprotected

Definition at line 662 of file class.ilAssQuestionFeedback.php.

667 : void {
668 $this->ensurePageObjectExists($page_object_type, $source_page_object_id);
669 $this->ensurePageObjectExists($page_object_type, $target_page_object_id);
670
671 $cl = $this->getClassNameByType($page_object_type);
672
673 $pageObject = new $cl($source_page_object_id);
674 $pageObject->setParentId($target_page_object_parent_id);
675 $pageObject->setId($target_page_object_id);
676 $pageObject->updateFromXML();
677 }
getClassNameByType(string $a_type, bool $a_gui=false)
ensurePageObjectExists(string $page_object_type, int $page_object_id)

Referenced by cloneGenericFeedback(), ilAssMultiOptionQuestionFeedback\cloneSpecificFeedback(), and duplicateGenericFeedback().

+ Here is the caller graph for this function:

◆ cloneSpecificFeedback()

ilAssQuestionFeedback::cloneSpecificFeedback ( int  $source_question_id,
int  $target_question_id 
)
abstractprotected

duplicates the SPECIFIC feedback relating to the given original question id and saves it for the given duplicate question id

Reimplemented in ilAssClozeTestFeedback, ilAssConfigurableMultiOptionQuestionFeedback, ilAssMultiOptionQuestionFeedback, and ilAssSingleOptionQuestionFeedback.

Referenced by cloneFeedback(), and duplicateFeedback().

+ Here is the caller graph for this function:

◆ completeGenericFormProperties()

ilAssQuestionFeedback::completeGenericFormProperties ( ilPropertyFormGUI  $form)
final

completes a given form object with the GENERIC form properties required by all question types

Definition at line 121 of file class.ilAssQuestionFeedback.php.

121 : void
122 {
124 $this->lng->txt('feedback_complete_solution'),
125 'feedback_complete',
126 $this->questionOBJ->isAdditionalContentEditingModePageObject()
127 ));
128
130 $this->lng->txt('feedback_incomplete_solution'),
131 'feedback_incomplete',
132 $this->questionOBJ->isAdditionalContentEditingModePageObject()
133 ));
134 }
buildFeedbackContentFormProperty(string $label, string $post_var, bool $as_non_editable)
builds and returns a form property gui object with the given label and postvar that is addable to pro...

References ilPropertyFormGUI\addItem(), buildFeedbackContentFormProperty(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ completeSpecificFormProperties()

ilAssQuestionFeedback::completeSpecificFormProperties ( ilPropertyFormGUI  $form)
abstract

completes a given form object with the SPECIFIC form properties required by this question type

@abstract @access public

Parameters
ilPropertyFormGUI$form

Reimplemented in ilAssClozeTestFeedback, ilAssConfigurableMultiOptionQuestionFeedback, ilAssMultiOptionQuestionFeedback, and ilAssSingleOptionQuestionFeedback.

◆ createFeedbackPages()

ilAssQuestionFeedback::createFeedbackPages ( string  $mode)

Definition at line 800 of file class.ilAssQuestionFeedback.php.

800 : string
801 {
803 $page_object_id_complete = $this->saveGenericFeedbackContent(
804 $this->questionOBJ->getId(),
805 true,
806 ''
807 );
808 $this->ensurePageObjectExists($page_object_type, $page_object_id_complete);
809
810 $page_object_id_incomplete = $this->saveGenericFeedbackContent(
811 $this->questionOBJ->getId(),
812 false,
813 ''
814 );
815 $this->ensurePageObjectExists($page_object_type, $page_object_id_incomplete);
816
817 $page_object_id = ($mode === 'complete') ? $page_object_id_complete : $page_object_id_incomplete;
818 return $this->getPageObjectEditingLink(
819 $page_object_type,
820 $page_object_id
821 );
822 }
const PAGE_OBJECT_TYPE_GENERIC_FEEDBACK
type for generic feedback page objects
getPageObjectEditingLink(string $page_object_type, int $page_object_id)
saveGenericFeedbackContent(int $question_id, bool $solution_completed, string $feedback_content)
saves GENERIC feedback content for the given question id to the database.

References PAGE_OBJECT_TYPE_GENERIC_FEEDBACK.

◆ createPageObject()

ilAssQuestionFeedback::createPageObject ( string  $page_object_type,
int  $page_object_id,
string  $page_object_content 
)
finalprotected

Definition at line 651 of file class.ilAssQuestionFeedback.php.

651 : void
652 {
653 $cl = $this->getClassNameByType($page_object_type);
654
655 $pageObject = new $cl();
656 $pageObject->setParentId($this->questionOBJ->getId());
657 $pageObject->setId($page_object_id);
658 $pageObject->setXMLContent($page_object_content);
659 $pageObject->createFromXML();
660 }

Referenced by ilAssMultiOptionQuestionFeedback\importSpecificAnswerFeedback().

+ Here is the caller graph for this function:

◆ deleteFeedbackOfOriginalQuestion()

ilAssQuestionFeedback::deleteFeedbackOfOriginalQuestion ( string  $table_name,
int  $original_question_id,
string  $page_object_type 
)
protected

Definition at line 484 of file class.ilAssQuestionFeedback.php.

488 : void {
489 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
490 $original_result = $this->db->queryF(
491 "SELECT feedback_id FROM {$table_name} WHERE question_fi = %s",
493 [$original_question_id]
494 );
495 while ($original_row = $this->db->fetchAssoc($original_result)) {
497 $page_object_type,
498 (int) $original_row['feedback_id']
499 );
500 }
501 }
502
503 $this->db->manipulateF(
504 "DELETE FROM {$table_name} WHERE question_fi = %s",
506 [$original_question_id]
507 );
508 }
ensurePageObjectDeleted(string $page_object_type, int $page_object_id)

References ensurePageObjectDeleted(), and ilDBConstants\T_INTEGER.

Referenced by cloneGenericFeedback(), and ilAssMultiOptionQuestionFeedback\cloneSpecificFeedback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteGenericFeedbacks()

ilAssQuestionFeedback::deleteGenericFeedbacks ( int  $question_id,
bool  $isAdditionalContentEditingModePageObject 
)
final

deletes all GENERIC feedback contents (and page objects if required) for the given question id

Definition at line 366 of file class.ilAssQuestionFeedback.php.

366 : void
367 {
368 if ($page_object_id === -1) {
369 return;
370 }
371 if ($isAdditionalContentEditingModePageObject) {
374 $this->getGenericFeedbackPageObjectId($question_id, true)
375 );
376
379 $this->getGenericFeedbackPageObjectId($question_id, false)
380 );
381 }
382
383 $this->db->manipulateF(
384 "DELETE FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s",
385 ['integer'],
386 [$question_id]
387 );
388 }
getGenericFeedbackPageObjectId(int $question_id, bool $solution_completed)
returns a useable page object id for generic feedback page objects for the given question id for eith...

References ensurePageObjectDeleted(), getGenericFeedbackPageObjectId(), and getGenericFeedbackPageObjectType().

+ Here is the call graph for this function:

◆ deleteSpecificAnswerFeedbacks()

ilAssQuestionFeedback::deleteSpecificAnswerFeedbacks ( int  $question_id,
bool  $isAdditionalContentEditingModePageObject 
)
abstract

◆ duplicateFeedback()

ilAssQuestionFeedback::duplicateFeedback ( int  $originalQuestionId,
int  $duplicateQuestionId 
)
final

duplicates the feedback relating to the given original question id and saves it for the given duplicate question id

Definition at line 396 of file class.ilAssQuestionFeedback.php.

396 : void
397 {
398 $this->duplicateGenericFeedback($originalQuestionId, $duplicateQuestionId);
399 $this->cloneSpecificFeedback($originalQuestionId, $duplicateQuestionId);
400 }
duplicateGenericFeedback(int $originalQuestionId, int $duplicateQuestionId)
duplicates the GENERIC feedback relating to the given original question id and saves it for the given...

References cloneSpecificFeedback(), and duplicateGenericFeedback().

+ Here is the call graph for this function:

◆ duplicateGenericFeedback()

ilAssQuestionFeedback::duplicateGenericFeedback ( int  $originalQuestionId,
int  $duplicateQuestionId 
)
private

duplicates the GENERIC feedback relating to the given original question id and saves it for the given duplicate question id

Definition at line 406 of file class.ilAssQuestionFeedback.php.

406 : void
407 {
408 $res = $this->db->queryF(
409 "SELECT * FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s",
410 ['integer'],
411 [$originalQuestionId]
412 );
413
414 while ($row = $this->db->fetchAssoc($res)) {
415 $feedbackId = $this->db->nextId($this->getGenericFeedbackTableName());
416
417 $this->db->insert($this->getGenericFeedbackTableName(), [
418 'feedback_id' => ['integer', $feedbackId],
419 'question_fi' => ['integer', $duplicateQuestionId],
420 'correctness' => ['text', $row['correctness']],
421 'feedback' => ['clob', $row['feedback']],
422 'tstamp' => ['integer', time()]
423 ]);
424
425 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
426 $page_object_type = $this->getGenericFeedbackPageObjectType();
427 $this->clonePageObject($page_object_type, $row['feedback_id'], $feedbackId, $duplicateQuestionId);
428 }
429 }
430 }
$res
Definition: ltiservices.php:69

References $res, clonePageObject(), getGenericFeedbackPageObjectType(), and getGenericFeedbackTableName().

Referenced by duplicateFeedback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ensurePageObjectDeleted()

ilAssQuestionFeedback::ensurePageObjectDeleted ( string  $page_object_type,
int  $page_object_id 
)
finalprotected

Definition at line 679 of file class.ilAssQuestionFeedback.php.

679 : void
680 {
682 if (ilAssGenFeedbackPage::_exists($page_object_type, $page_object_id)) {
683 $pageObject = new ilAssGenFeedbackPage($page_object_id);
684 $pageObject->delete();
685 }
686 }
688 if (ilAssSpecFeedbackPage::_exists($page_object_type, $page_object_id)) {
689 $pageObject = new ilAssSpecFeedbackPage($page_object_id);
690 $pageObject->delete();
691 }
692 }
693 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK
type for specific feedback page objects
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.

References ilPageObject\_exists(), PAGE_OBJECT_TYPE_GENERIC_FEEDBACK, and PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK.

Referenced by deleteFeedbackOfOriginalQuestion(), deleteGenericFeedbacks(), and ilAssMultiOptionQuestionFeedback\deleteSpecificAnswerFeedbacks().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ensurePageObjectExists()

ilAssQuestionFeedback::ensurePageObjectExists ( string  $page_object_type,
int  $page_object_id 
)
private

Definition at line 633 of file class.ilAssQuestionFeedback.php.

633 : void
634 {
636 && !ilAssGenFeedbackPage::_exists($page_object_type, $page_object_id, '', true)) {
637 $pageObject = new ilAssGenFeedbackPage();
638 $pageObject->setParentId($this->questionOBJ->getId());
639 $pageObject->setId($page_object_id);
640 $pageObject->createFromXML();
641 }
643 && !ilAssSpecFeedbackPage::_exists($page_object_type, $page_object_id, '', true)) {
644 $pageObject = new ilAssSpecFeedbackPage();
645 $pageObject->setParentId($this->questionOBJ->getId());
646 $pageObject->setId($page_object_id);
647 $pageObject->createFromXML();
648 }
649 }

References ilPageObject\_exists(), PAGE_OBJECT_TYPE_GENERIC_FEEDBACK, and PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK.

Referenced by initGenericFormProperties().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAllSpecificAnswerFeedbackContents()

ilAssQuestionFeedback::getAllSpecificAnswerFeedbackContents ( int  $question_id)
abstract

◆ getClassNameByType()

ilAssQuestionFeedback::getClassNameByType ( string  $a_type,
bool  $a_gui = false 
)

Definition at line 579 of file class.ilAssQuestionFeedback.php.

579 : string
580 {
581 $gui = ($a_gui) ? "GUI" : "";
582
584 return "ilAssGenFeedbackPage" . $gui;
585 }
586
587 //if ($a_type == ilAssQuestionFeedback::PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK) {
588 return "ilAssSpecFeedbackPage" . $gui;
589 }

References PAGE_OBJECT_TYPE_GENERIC_FEEDBACK.

◆ getGenericFeedbackContent()

ilAssQuestionFeedback::getGenericFeedbackContent ( int  $question_id,
bool  $solution_completed 
)
final

returns the GENERIC feedback content for a given question state.

the state is either the completed solution (all answers correct) of the question or at least one incorrect answer.

Definition at line 275 of file class.ilAssQuestionFeedback.php.

275 : string
276 {
277 $res = $this->db->queryF(
278 "SELECT * FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s AND correctness = %s",
279 ['integer', 'text'],
280 [$question_id, (int) $solution_completed]
281 );
282
283 $feedback_content = '';
284
285 if ($this->db->numRows($res) > 0) {
286 $row = $this->db->fetchAssoc($res);
287 $feedback_content = ilRTE::_replaceMediaObjectImageSrc(
288 $this->questionOBJ->getHtmlQuestionContentPurifier()->purify($row['feedback'] ?? ''),
289 1
290 );
291 }
292 return $feedback_content;
293 }
static _replaceMediaObjectImageSrc(string $a_text, int $a_direction=0, string $nic='')
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...

References $res, and ilRTE\_replaceMediaObjectImageSrc().

Referenced by getGenericFeedbackTestPresentation(), and initGenericFormProperties().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getGenericFeedbackExportPresentation()

ilAssQuestionFeedback::getGenericFeedbackExportPresentation ( int  $question_id,
bool  $solution_completed 
)

returns the generic feedback export presentation for given question id either for solution completed or incompleted

Definition at line 735 of file class.ilAssQuestionFeedback.php.

735 : string
736 {
737 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
738 $genericFeedbackExportPresentation = $this->getPageObjectXML(
740 $this->getGenericFeedbackPageObjectId($question_id, $solution_completed)
741 );
742 } else {
743 $genericFeedbackExportPresentation = $this->getGenericFeedbackContent($question_id, $solution_completed);
744 }
745
746 return $genericFeedbackExportPresentation;
747 }
getPageObjectXML(string $page_object_type, int $page_object_id)
getGenericFeedbackContent(int $question_id, bool $solution_completed)
returns the GENERIC feedback content for a given question state.

◆ getGenericFeedbackId()

ilAssQuestionFeedback::getGenericFeedbackId ( int  $question_id,
bool  $solution_completed 
)
finalprotected

returns the SPECIFIC answer feedback ID for a given question id and answer index.

Definition at line 513 of file class.ilAssQuestionFeedback.php.

513 : int
514 {
515 $res = $this->db->queryF(
516 "SELECT feedback_id FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s AND correctness = %s",
517 ['integer','text'],
518 [$question_id, (int) $solution_completed]
519 );
520
521 $feedbackId = -1;
522 if ($this->db->numRows($res)) {
523 $row = $this->db->fetchAssoc($res);
524 $feedbackId = (int) $row['feedback_id'];
525 }
526
527 return $feedbackId;
528 }

References $res, and ILIAS\Repository\int().

Referenced by initGenericFormProperties(), and saveGenericFeedbackContent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getGenericFeedbackPageObjectId()

ilAssQuestionFeedback::getGenericFeedbackPageObjectId ( int  $question_id,
bool  $solution_completed 
)
finalprotected

returns a useable page object id for generic feedback page objects for the given question id for either the complete or incomplete solution (using the id sequence of non page object generic feedback)

Definition at line 725 of file class.ilAssQuestionFeedback.php.

725 : int
726 {
727 $page_object_id = $this->getGenericFeedbackId($question_id, $solution_completed);
728 return $page_object_id;
729 }
getGenericFeedbackId(int $question_id, bool $solution_completed)
returns the SPECIFIC answer feedback ID for a given question id and answer index.

Referenced by deleteGenericFeedbacks(), getGenericFeedbackTestPresentation(), and initGenericFormProperties().

+ Here is the caller graph for this function:

◆ getGenericFeedbackPageObjectType()

ilAssQuestionFeedback::getGenericFeedbackPageObjectType ( )
finalprotected

Definition at line 695 of file class.ilAssQuestionFeedback.php.

695 : string
696 {
698 }

Referenced by cloneGenericFeedback(), deleteGenericFeedbacks(), duplicateGenericFeedback(), getGenericFeedbackTestPresentation(), and initGenericFormProperties().

+ Here is the caller graph for this function:

◆ getGenericFeedbackTableName()

ilAssQuestionFeedback::getGenericFeedbackTableName ( )
finalprotected

Definition at line 558 of file class.ilAssQuestionFeedback.php.

558 : string
559 {
561 }

Referenced by cloneGenericFeedback(), duplicateGenericFeedback(), and saveGenericFeedbackContent().

+ Here is the caller graph for this function:

◆ getGenericFeedbackTestPresentation()

ilAssQuestionFeedback::getGenericFeedbackTestPresentation ( int  $question_id,
bool  $solution_completed 
)

returns the html of GENERIC feedback for the given question id for test presentation (either for the complete solution or for the incomplete solution)

Definition at line 88 of file class.ilAssQuestionFeedback.php.

88 : string
89 {
90 if ($this->page_obj_output_mode == "edit") {
91 return '';
92 }
93 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
94 return $this->cleanupPageContent(
95 $this->getPageObjectContent(
97 $this->getGenericFeedbackPageObjectId($question_id, $solution_completed)
98 )
99 );
100 }
101 return $this->getGenericFeedbackContent($question_id, $solution_completed);
102 }

References cleanupPageContent(), getGenericFeedbackContent(), getGenericFeedbackPageObjectId(), and getGenericFeedbackPageObjectType().

+ Here is the call graph for this function:

◆ getPageObjectEditingLink()

ilAssQuestionFeedback::getPageObjectEditingLink ( string  $page_object_type,
int  $page_object_id 
)
private

Definition at line 591 of file class.ilAssQuestionFeedback.php.

591 : string
592 {
593 $cl = $this->getClassNameByType($page_object_type, true);
594 $this->ctrl->setParameterByClass($cl, 'feedback_type', $page_object_type);
595 $this->ctrl->setParameterByClass($cl, 'feedback_id', $page_object_id);
596
597 return $this->ctrl->getLinkTargetByClass($cl, 'edit');
598 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ getPageObjectNonEditableValueHTML()

ilAssQuestionFeedback::getPageObjectNonEditableValueHTML ( string  $page_object_type,
int  $page_object_id 
)
finalprotected

returns html content to be used as value for non editable value form properties in feedback editing form

Definition at line 567 of file class.ilAssQuestionFeedback.php.

567 : string
568 {
569 $link = $this->getPageObjectEditingLink($page_object_type, $page_object_id);
570 $content = $this->getPageObjectContent($page_object_type, $page_object_id);
571 return sprintf(
572 '<a href="%s">%s</a><br /><br />%s',
573 $link,
574 $this->lng->txt('tst_question_feedback_edit_page'),
575 $content
576 );
577 }

References ILIAS\Repository\lng().

Referenced by initGenericFormProperties(), ilAssConfigurableMultiOptionQuestionFeedback\initSpecificFormProperties(), and ilAssMultiOptionQuestionFeedback\initSpecificFormProperties().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPageObjectOutputMode()

ilAssQuestionFeedback::getPageObjectOutputMode ( )
final

Definition at line 605 of file class.ilAssQuestionFeedback.php.

605 : string
606 {
608 }

◆ getPageObjectXML()

ilAssQuestionFeedback::getPageObjectXML ( string  $page_object_type,
int  $page_object_id 
)
finalprotected

Definition at line 623 of file class.ilAssQuestionFeedback.php.

623 : string
624 {
625 $cl = $this->getClassNameByType($page_object_type);
626
627 $this->ensurePageObjectExists($page_object_type, $page_object_id);
628
629 $pageObject = new $cl($page_object_id);
630 return $pageObject->getXMLContent();
631 }

Referenced by ilAssMultiOptionQuestionFeedback\getSpecificAnswerFeedbackExportPresentation().

+ Here is the caller graph for this function:

◆ getSpecificAnswerFeedbackContent()

ilAssQuestionFeedback::getSpecificAnswerFeedbackContent ( int  $question_id,
int  $question_index,
int  $answer_index 
)
abstract

◆ getSpecificAnswerFeedbackExportPresentation()

ilAssQuestionFeedback::getSpecificAnswerFeedbackExportPresentation ( int  $question_id,
int  $question_index,
int  $answer_index 
)
abstract

returns the generic feedback export presentation for given question id either for solution completed or incompleted

Reimplemented in ilAssMultiOptionQuestionFeedback, and ilAssSingleOptionQuestionFeedback.

Referenced by isSpecificAnswerFeedbackAvailable().

+ Here is the caller graph for this function:

◆ getSpecificAnswerFeedbackPageObjectType()

◆ getSpecificAnswerFeedbackTestPresentation()

ilAssQuestionFeedback::getSpecificAnswerFeedbackTestPresentation ( int  $question_id,
int  $question_index,
int  $answer_index 
)
abstract

returns the html of SPECIFIC feedback for the given question id and answer index for test presentation

@abstract @access public

Parameters
integer$question_id
integer$question_index
integer$answer_index
Returns
string $specificAnswerFeedbackTestPresentationHTML

Reimplemented in ilAssMultiOptionQuestionFeedback, and ilAssSingleOptionQuestionFeedback.

◆ importGenericFeedback()

ilAssQuestionFeedback::importGenericFeedback ( int  $question_id,
bool  $solution_completed,
string  $feedback_content 
)

imports the given feedback content as generic feedback for the given question id for either the complete or incomplete solution

Definition at line 759 of file class.ilAssQuestionFeedback.php.

759 : void
760 {
761 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
762 $page_object_id = $this->saveGenericFeedbackContent($question_id, $solution_completed, '');
763 $page_object_type = $this->getGenericFeedbackPageObjectType();
764
765 $this->createPageObject($page_object_type, $page_object_id, $feedback_content);
766 } else {
767 $this->saveGenericFeedbackContent($question_id, $solution_completed, $feedback_content);
768 }
769 }
createPageObject(string $page_object_type, int $page_object_id, string $page_object_content)

◆ importSpecificAnswerFeedback()

ilAssQuestionFeedback::importSpecificAnswerFeedback ( int  $question_id,
int  $question_index,
int  $answer_index,
string  $feedback_content 
)
abstract

◆ initGenericFormProperties()

ilAssQuestionFeedback::initGenericFormProperties ( ilPropertyFormGUI  $form)
final

initialises a given form object's GENERIC form properties relating to all question types

Definition at line 150 of file class.ilAssQuestionFeedback.php.

150 : void
151 {
152 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
153 $page_object_type = $this->getGenericFeedbackPageObjectType();
154
155 $page_object_id = $this->getGenericFeedbackId($this->questionOBJ->getId(), true);
156
157 if ($page_object_id === -1) {
158 $this->ctrl->setParameterByClass(ilAssQuestionFeedbackEditingGUI::class, 'feedback_type', $page_object_type);
159 $this->ctrl->setParameterByClass(ilAssQuestionFeedbackEditingGUI::class, 'fb_mode', 'complete');
160 $link = $this->ctrl->getLinkTargetByClass(ilAssQuestionFeedbackEditingGUI::class, 'createFeedbackPage');
161 $value_feedback_solution_complete = sprintf(
162 '<a href="%s">%s</a>',
163 $link,
164 $this->lng->txt('tst_question_feedback_edit_page')
165 );
166 $this->ctrl->setParameterByClass(ilAssQuestionFeedbackEditingGUI::class, 'fb_mode', 'incomplete');
167 $link = $this->ctrl->getLinkTargetByClass(ilAssQuestionFeedbackEditingGUI::class, 'createFeedbackPage');
168 $value_feedback_solution_incomplete = sprintf(
169 '<a href="%s">%s</a>',
170 $link,
171 $this->lng->txt('tst_question_feedback_edit_page')
172 );
173 } else {
174 $this->ensurePageObjectExists($page_object_type, $page_object_id);
175
176 $value_feedback_solution_complete = $this->getPageObjectNonEditableValueHTML(
177 $page_object_type,
178 $this->getGenericFeedbackPageObjectId($this->questionOBJ->getId(), true)
179 );
180 $value_feedback_solution_incomplete = $this->getPageObjectNonEditableValueHTML(
181 $page_object_type,
182 $this->getGenericFeedbackPageObjectId($this->questionOBJ->getId(), false)
183 );
184 }
185
186 } else {
187 $value_feedback_solution_complete = $this->getGenericFeedbackContent(
188 $this->questionOBJ->getId(),
189 true
190 );
191
192 $value_feedback_solution_incomplete = $this->getGenericFeedbackContent(
193 $this->questionOBJ->getId(),
194 false
195 );
196 }
197
198 $form->getItemByPostVar('feedback_complete')->setValue($value_feedback_solution_complete);
199 $form->getItemByPostVar('feedback_incomplete')->setValue($value_feedback_solution_incomplete);
200 }
getPageObjectNonEditableValueHTML(string $page_object_type, int $page_object_id)
returns html content to be used as value for non editable value form properties in feedback editing f...
getItemByPostVar(string $a_post_var)

References ILIAS\Repository\ctrl(), ensurePageObjectExists(), getGenericFeedbackContent(), getGenericFeedbackId(), getGenericFeedbackPageObjectId(), getGenericFeedbackPageObjectType(), ilPropertyFormGUI\getItemByPostVar(), getPageObjectNonEditableValueHTML(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ initSpecificFormProperties()

ilAssQuestionFeedback::initSpecificFormProperties ( ilPropertyFormGUI  $form)
abstract

initialises a given form object's SPECIFIC form properties relating to this question type

Reimplemented in ilAssClozeTestFeedback, ilAssConfigurableMultiOptionQuestionFeedback, ilAssMultiOptionQuestionFeedback, and ilAssSingleOptionQuestionFeedback.

◆ isGenericFeedbackId()

ilAssQuestionFeedback::isGenericFeedbackId ( int  $feedbackId)
protected

Definition at line 530 of file class.ilAssQuestionFeedback.php.

530 : bool
531 {
532 $row = $this->db->fetchAssoc($this->db->queryF(
533 "SELECT COUNT(feedback_id) cnt FROM {$this->getGenericFeedbackTableName()}
534 WHERE question_fi = %s AND feedback_id = %s",
535 ['integer','integer'],
536 [$this->questionOBJ->getId(), $feedbackId]
537 ));
538
539
540 return (bool) $row['cnt'];
541 }

◆ isSaveableInPageObjectEditingMode()

ilAssQuestionFeedback::isSaveableInPageObjectEditingMode ( )

returns the fact wether the feedback editing form is saveable in page object editing or not.

by default all properties are edited as page object unless there are additional settings (this method can be overwritten per question type if required)

Reimplemented in ilAssClozeTestFeedback, and ilAssConfigurableMultiOptionQuestionFeedback.

Definition at line 231 of file class.ilAssQuestionFeedback.php.

231 : bool
232 {
233 return false;
234 }

◆ isSpecificAnswerFeedbackAvailable()

ilAssQuestionFeedback::isSpecificAnswerFeedbackAvailable ( int  $question_id)

Reimplemented in ilAssClozeTestFeedback.

Definition at line 299 of file class.ilAssQuestionFeedback.php.

299 : bool
300 {
301 $res = $this->db->queryF(
302 "SELECT answer FROM {$this->getSpecificFeedbackTableName()} WHERE question_fi = %s",
303 ['integer'],
304 [$question_id]
305 );
306
307 $all_feedback_contents = '';
308
309 while ($row = $this->db->fetchAssoc($res)) {
310 $all_feedback_contents .= $this->getSpecificAnswerFeedbackExportPresentation(
311 $this->questionOBJ->getId(),
312 0,
313 $row['answer']
314 );
315 }
316
317 return trim(strip_tags($all_feedback_contents)) !== '';
318 }
getSpecificAnswerFeedbackExportPresentation(int $question_id, int $question_index, int $answer_index)
returns the generic feedback export presentation for given question id either for solution completed ...

References $res, and getSpecificAnswerFeedbackExportPresentation().

+ Here is the call graph for this function:

◆ isSpecificAnswerFeedbackId()

ilAssQuestionFeedback::isSpecificAnswerFeedbackId ( int  $feedbackId)
abstractprotected

◆ isValidFeedbackPageObjectType()

static ilAssQuestionFeedback::isValidFeedbackPageObjectType ( string  $feedbackPageObjectType)
staticfinal

returns the fact whether the given page object type relates to generic or specific feedback page objects

Definition at line 709 of file class.ilAssQuestionFeedback.php.

709 : bool
710 {
711 switch ($feedbackPageObjectType) {
714 return true;
715 }
716
717 return false;
718 }

Referenced by ilAssQuestionFeedbackPageObjectCommandForwarder\__construct().

+ Here is the caller graph for this function:

◆ migrateContentForLearningModule()

ilAssQuestionFeedback::migrateContentForLearningModule ( ilAssSelfAssessmentMigrator  $migrator,
int  $question_id 
)

Definition at line 773 of file class.ilAssQuestionFeedback.php.

773 : void
774 {
775 $this->saveGenericFeedbackContent($question_id, true, $migrator->migrateToLmContent(
776 $this->getGenericFeedbackContent($question_id, true)
777 ));
778
779 $this->saveGenericFeedbackContent($question_id, false, $migrator->migrateToLmContent(
780 $this->getGenericFeedbackContent($question_id, false)
781 ));
782 }

References ilAssSelfAssessmentMigrator\migrateToLmContent().

+ Here is the call graph for this function:

◆ saveGenericFeedbackContent()

ilAssQuestionFeedback::saveGenericFeedbackContent ( int  $question_id,
bool  $solution_completed,
string  $feedback_content 
)
final

saves GENERIC feedback content for the given question id to the database.

Generic feedback is either feedback for the completed solution (all answers correct) of the question or at least onen incorrect answer.

Definition at line 325 of file class.ilAssQuestionFeedback.php.

325 : int
326 {
327 $feedbackId = $this->getGenericFeedbackId($question_id, $solution_completed);
328
329 if ($feedback_content !== '') {
330 $feedback_content = $this->questionOBJ->getHtmlQuestionContentPurifier()->purify($feedback_content);
331 $feedback_content = ilRTE::_replaceMediaObjectImageSrc($feedback_content, 0);
332 }
333
334 if ($feedbackId !== -1) {
335 $this->db->update(
337 [
338 'feedback' => ['clob', $feedback_content],
339 'tstamp' => ['integer', time()]
340 ],
341 [
342 'feedback_id' => ['integer', $feedbackId]
343 ]
344 );
345 } else {
346 $feedbackId = $this->db->nextId($this->getGenericFeedbackTableName());
347
348 $this->db->insert($this->getGenericFeedbackTableName(), [
349 'feedback_id' => ['integer', $feedbackId],
350 'question_fi' => ['integer', $question_id],
351 'correctness' => ['text', (int) $solution_completed], // text ?
352 'feedback' => ['clob', $feedback_content],
353 'tstamp' => ['integer', time()]
354 ]);
355 }
356
357 return $feedbackId;
358 }

References ilRTE\_replaceMediaObjectImageSrc(), getGenericFeedbackId(), and getGenericFeedbackTableName().

Referenced by saveGenericFormProperties().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveGenericFormProperties()

ilAssQuestionFeedback::saveGenericFormProperties ( ilPropertyFormGUI  $form)
final

saves a given form object's GENERIC form properties relating to all question types

Definition at line 212 of file class.ilAssQuestionFeedback.php.

212 : void
213 {
214 if (!$this->questionOBJ->isAdditionalContentEditingModePageObject()) {
215 $this->saveGenericFeedbackContent($this->questionOBJ->getId(), false, (string) $form->getInput('feedback_incomplete'));
216 $this->saveGenericFeedbackContent($this->questionOBJ->getId(), true, (string) $form->getInput('feedback_complete'));
217 }
218 }
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...

References ilPropertyFormGUI\getInput(), and saveGenericFeedbackContent().

+ Here is the call graph for this function:

◆ saveSpecificAnswerFeedbackContent()

ilAssQuestionFeedback::saveSpecificAnswerFeedbackContent ( int  $question_id,
int  $question_index,
int  $answer_index,
string  $feedback_content 
)
abstract

◆ saveSpecificFormProperties()

ilAssQuestionFeedback::saveSpecificFormProperties ( ilPropertyFormGUI  $form)
abstract

saves a given form object's SPECIFIC form properties relating to this question type

Reimplemented in ilAssClozeTestFeedback, ilAssConfigurableMultiOptionQuestionFeedback, ilAssMultiOptionQuestionFeedback, and ilAssSingleOptionQuestionFeedback.

◆ setPageObjectOutputMode()

ilAssQuestionFeedback::setPageObjectOutputMode ( string  $page_obj_output_mode)
final

Definition at line 600 of file class.ilAssQuestionFeedback.php.

600 : void
601 {
602 $this->page_obj_output_mode = $page_obj_output_mode;
603 }

Field Documentation

◆ $ctrl

ilCtrl ilAssQuestionFeedback::$ctrl
protected

Definition at line 58 of file class.ilAssQuestionFeedback.php.

Referenced by __construct().

◆ $db

ilDBInterface ilAssQuestionFeedback::$db
protected

Definition at line 60 of file class.ilAssQuestionFeedback.php.

Referenced by __construct().

◆ $lng

ilLanguage ilAssQuestionFeedback::$lng
protected

Definition at line 62 of file class.ilAssQuestionFeedback.php.

Referenced by __construct().

◆ $page_obj_output_mode

string ilAssQuestionFeedback::$page_obj_output_mode = "presentation"
protected

Definition at line 64 of file class.ilAssQuestionFeedback.php.

◆ $questionOBJ

assQuestion ilAssQuestionFeedback::$questionOBJ
protected

Definition at line 56 of file class.ilAssQuestionFeedback.php.

Referenced by __construct().

◆ CSS_CLASS_FEEDBACK_CORRECT

const ilAssQuestionFeedback::CSS_CLASS_FEEDBACK_CORRECT = 'ilc_qfeedr_FeedbackRight'

◆ CSS_CLASS_FEEDBACK_WRONG

const ilAssQuestionFeedback::CSS_CLASS_FEEDBACK_WRONG = 'ilc_qfeedw_FeedbackWrong'

◆ FEEDBACK_SOLUTION_COMPLETE_PAGE_OBJECT_ID

const ilAssQuestionFeedback::FEEDBACK_SOLUTION_COMPLETE_PAGE_OBJECT_ID = 2

id for page object relating to generic complete solution feedback

Definition at line 52 of file class.ilAssQuestionFeedback.php.

◆ FEEDBACK_SOLUTION_INCOMPLETE_PAGE_OBJECT_ID

const ilAssQuestionFeedback::FEEDBACK_SOLUTION_INCOMPLETE_PAGE_OBJECT_ID = 1

id for page object relating to generic incomplete solution feedback

Definition at line 47 of file class.ilAssQuestionFeedback.php.

◆ PAGE_OBJECT_TYPE_GENERIC_FEEDBACK

◆ PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK

const ilAssQuestionFeedback::PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK = 'qfbs'

◆ TABLE_NAME_GENERIC_FEEDBACK

const ilAssQuestionFeedback::TABLE_NAME_GENERIC_FEEDBACK = 'qpl_fb_generic'

Definition at line 54 of file class.ilAssQuestionFeedback.php.


The documentation for this class was generated from the following file: