ILIAS  release_5-2 Revision v5.2.25-18-g3f80b82851
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 ($questionId, $solutionCompleted)
 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 ($questionId, $answerIndex)
 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 ($questionId, $solutionCompleted)
 returns the GENERIC feedback content for a given question state. More...
 
 getSpecificAnswerFeedbackContent ($questionId, $answerIndex)
 returns the SPECIFIC feedback content for a given question id and answer index. More...
 
 getAllSpecificAnswerFeedbackContents ($questionId)
 returns the SPECIFIC feedback content for a given question id and answer index. More...
 
 saveGenericFeedbackContent ($questionId, $solutionCompleted, $feedbackContent)
 saves GENERIC feedback content for the given question id to the database. More...
 
 saveSpecificAnswerFeedbackContent ($questionId, $answerIndex, $feedbackContent)
 saves SPECIFIC feedback content for the given question id and answer index to the database. More...
 
 deleteGenericFeedbacks ($questionId, $isAdditionalContentEditingModePageObject)
 deletes all GENERIC feedback contents (and page objects if required) for the given question id More...
 
 deleteSpecificAnswerFeedbacks ($questionId, $isAdditionalContentEditingModePageObject)
 deletes all SPECIFIC feedback contents for the given question id More...
 
 duplicateFeedback ($originalQuestionId, $duplicateQuestionId)
 duplicates the feedback relating to the given original question id and saves it for the given duplicate question id More...
 
 syncFeedback ($originalQuestionId, $duplicateQuestionId)
 syncs the feedback from a duplicated question back to the original question More...
 
 checkFeedbackParent ($feedbackId)
 
 getClassNameByType ($a_type, $a_gui=false)
 Get class name by type. More...
 
 setPageObjectOutputMode ($a_val)
 Set page object output mode. More...
 
 getPageObjectOutputMode ()
 Get page object output mode. More...
 
 getGenericFeedbackExportPresentation ($questionId, $solutionCompleted)
 returns the generic feedback export presentation for given question id either for solution completed or incompleted More...
 
 getSpecificAnswerFeedbackExportPresentation ($questionId, $answerIndex)
 returns the generic feedback export presentation for given question id either for solution completed or incompleted More...
 
 importGenericFeedback ($questionId, $solutionCompleted, $feedbackContent)
 imports the given feedback content as generic feedback for the given question id for either the complete or incomplete solution More...
 
 importSpecificAnswerFeedback ($questionId, $answerIndex, $feedbackContent)
 imports the given feedback content as specific feedback for the given question id and answer index More...
 
 migrateContentForLearningModule (ilAssSelfAssessmentMigrator $migrator, $questionId)
 

Static Public Member Functions

static isValidFeedbackPageObjectType ($feedbackPageObjectType)
 returns the fact wether 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'
 table name for specific feedback More...
 

Protected Member Functions

 buildFeedbackContentFormProperty ($label, $postVar, $asNonEditable)
 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...
 
 duplicateSpecificFeedback ($originalQuestionId, $duplicateQuestionId)
 duplicates the SPECIFIC feedback relating to the given original question id and saves it for the given duplicate question id More...
 
 getGenericFeedbackId ($questionId, $solutionCompleted)
 returns the SPECIFIC answer feedback ID for a given question id and answer index. More...
 
 isGenericFeedbackId ($feedbackId)
 
 isSpecificAnswerFeedbackId ($feedbackId)
 
 syncSpecificFeedback ($originalQuestionId, $duplicateQuestionId)
 syncs the SPECIFIC feedback from a duplicated question back to the original question More...
 
 getGenericFeedbackTableName ()
 returns the table name for specific feedback More...
 
 getPageObjectNonEditableValueHTML ($pageObjectType, $pageObjectId)
 returns html content to be used as value for non editable value form properties in feedback editing form More...
 
 getPageObjectContent ($pageObjectType, $pageObjectId)
 returns the content of page object with given type and id More...
 
 getPageObjectXML ($pageObjectType, $pageObjectId)
 returns the xml of page object with given type and id More...
 
 createPageObject ($pageObjectType, $pageObjectId, $pageObjectContent)
 creates a new page object with given page object id and page object type and passed page object content More...
 
 duplicatePageObject ($pageObjectType, $originalPageObjectId, $duplicatePageObjectId, $duplicatePageObjectParentId)
 duplicates the page object with given type and original id to new page object with same type and given duplicate id and duplicate parent id More...
 
 ensurePageObjectDeleted ($pageObjectType, $pageObjectId)
 ensures a no more existing page object for given type and id More...
 
 getGenericFeedbackPageObjectType ()
 returns the type for generic feedback page objects defined in local constant More...
 
 getSpecificAnswerFeedbackPageObjectType ()
 returns the type for specific feedback page objects defined in local constant More...
 
 getGenericFeedbackPageObjectId ($questionId, $solutionCompleted)
 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...
 

Protected Attributes

 $questionOBJ = null
 
 $ctrl = null
 
 $db = null
 
 $lng = null
 
 $page_obj_output_mode = "presentation"
 

Private Member Functions

 duplicateGenericFeedback ($originalQuestionId, $duplicateQuestionId)
 duplicates the GENERIC feedback relating to the given original question id and saves it for the given duplicate question id More...
 
 syncGenericFeedback ($originalQuestionId, $duplicateQuestionId)
 syncs the GENERIC feedback from a duplicated question back to the original question More...
 
 getPageObjectEditingLink ($pageObjectType, $pageObjectId)
 returns a link to page object editor for page object with given type and id More...
 
 ensurePageObjectExists ($pageObjectType, $pageObjectId)
 ensures an existing page object with given type and id More...
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

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

constructor

public

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

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

References $ctrl, $db, $lng, and $questionOBJ.

95  {
96  $this->questionOBJ = $questionOBJ;
97 
98  $this->ctrl = $ctrl;
99  $this->lng = $lng;
100  $this->db = $db;
101  }

Member Function Documentation

◆ buildFeedbackContentFormProperty()

ilAssQuestionFeedback::buildFeedbackContentFormProperty (   $label,
  $postVar,
  $asNonEditable 
)
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

protected

Parameters
string$label
string$postVar
boolean$asNonEditable
Returns
ilTextAreaInputGUI|ilNonEditableValueGUI $formProperty

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

References ilObjAdvancedEditing\_getUsedHTMLTags(), and ilAssSelfAssessmentQuestionFormatter\getSelfAssessmentTags().

Referenced by completeGenericFormProperties(), ilAssConfigurableMultiOptionQuestionFeedback\completeSpecificFormProperties(), and ilAssMultiOptionQuestionFeedback\completeSpecificFormProperties().

274  {
275  if($asNonEditable)
276  {
277  require_once 'Services/Form/classes/class.ilNonEditableValueGUI.php';
278 
279  $property = new ilNonEditableValueGUI($label, $postVar, true);
280  }
281  else
282  {
283  require_once 'Services/Form/classes/class.ilTextAreaInputGUI.php';
284  require_once 'Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php';
285 
286  $property = new ilTextAreaInputGUI($label, $postVar);
287  $property->setRequired(false);
288  $property->setRows(10);
289  $property->setCols(80);
290 
291  if( !$this->questionOBJ->getPreventRteUsage() )
292  {
293  $property->setUseRte(true);
294  $property->addPlugin("latex");
295  $property->addButton("latex");
296  $property->addButton("pastelatex");
297 
298  require_once 'Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php';
299  $property->setRteTags(ilObjAdvancedEditing::_getUsedHTMLTags("assessment"));
300  $property->setRTESupport($this->questionOBJ->getId(), "qpl", "assessment");
301  }
302  else
303  {
304  require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssSelfAssessmentQuestionFormatter.php';
306  $property->setUseTagsForRteOnly(false);
307  }
308 
309  $property->setRTESupport($this->questionOBJ->getId(), "qpl", "assessment");
310  }
311 
312  return $property;
313  }
static getSelfAssessmentTags()
Get tags allowed in question tags in self assessment mode.
static _getUsedHTMLTags($a_module="")
Returns an array of all allowed HTML tags for text editing.
This class represents a non editable value in a property form.
This class represents a text area property in a property form.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkFeedbackParent()

ilAssQuestionFeedback::checkFeedbackParent (   $feedbackId)
final
Parameters
int$feedbackId
Returns
bool

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

References isGenericFeedbackId(), isSpecificAnswerFeedbackId(), and syncSpecificFeedback().

639  {
640  if( $this->isGenericFeedbackId($feedbackId) )
641  {
642  return true;
643  }
644 
645  if( $this->isSpecificAnswerFeedbackId($feedbackId) )
646  {
647  return true;
648  }
649 
650  return false;
651  }
isSpecificAnswerFeedbackId($feedbackId)
+ Here is the call 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

public

Parameters
ilPropertyFormGUI$form

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

References ilPropertyFormGUI\addItem(), buildFeedbackContentFormProperty(), and completeSpecificFormProperties().

150  {
152  $this->lng->txt('feedback_complete_solution'), 'feedback_complete',
153  $this->questionOBJ->isAdditionalContentEditingModePageObject()
154  ));
155 
157  $this->lng->txt('feedback_incomplete_solution'), 'feedback_incomplete',
158  $this->questionOBJ->isAdditionalContentEditingModePageObject()
159  ));
160  }
addItem($a_item)
Add Item (Property, SectionHeader).
buildFeedbackContentFormProperty($label, $postVar, $asNonEditable)
builds and returns a form property gui object with the given label and postvar that is addable to pro...
+ 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

public

Parameters
ilPropertyFormGUI$form

Referenced by completeGenericFormProperties().

+ Here is the caller graph for this function:

◆ createPageObject()

ilAssQuestionFeedback::createPageObject (   $pageObjectType,
  $pageObjectId,
  $pageObjectContent 
)
finalprotected

creates a new page object with given page object id and page object type and passed page object content

protected

Parameters
string$pageObjectType
integer$pageObjectId
string$pageObjectContent

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

References getClassNameByType().

Referenced by importGenericFeedback(), and ilAssMultiOptionQuestionFeedback\importSpecificAnswerFeedback().

850  {
851  $cl = $this->getClassNameByType($pageObjectType);
852  require_once 'Modules/TestQuestionPool/classes/feedback/class.'.$cl.'.php';
853 
854  $pageObject = new $cl();
855  $pageObject->setParentId($this->questionOBJ->getId());
856  $pageObject->setId($pageObjectId);
857  $pageObject->setXMLContent($pageObjectContent);
858  $pageObject->createFromXML();
859  }
getClassNameByType($a_type, $a_gui=false)
Get class name by type.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteGenericFeedbacks()

ilAssQuestionFeedback::deleteGenericFeedbacks (   $questionId,
  $isAdditionalContentEditingModePageObject 
)
final

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

public

Parameters
integer$questionId
boolean$isAdditionalContentEditingModePageObject

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

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

445  {
446  if( $isAdditionalContentEditingModePageObject )
447  {
450  $this->getGenericFeedbackPageObjectId($questionId, true)
451  );
452 
455  $this->getGenericFeedbackPageObjectId($questionId, false)
456  );
457  }
458 
459  $this->db->manipulateF(
460  "DELETE FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s", array('integer'), array($questionId)
461  );
462  }
getGenericFeedbackPageObjectId($questionId, $solutionCompleted)
returns a useable page object id for generic feedback page objects for the given question id for eith...
Create styles array
The data for the language used.
ensurePageObjectDeleted($pageObjectType, $pageObjectId)
ensures a no more existing page object for given type and id
getGenericFeedbackPageObjectType()
returns the type for generic feedback page objects defined in local constant
+ Here is the call graph for this function:

◆ deleteSpecificAnswerFeedbacks()

ilAssQuestionFeedback::deleteSpecificAnswerFeedbacks (   $questionId,
  $isAdditionalContentEditingModePageObject 
)
abstract

deletes all SPECIFIC feedback contents for the given question id

public

Parameters
integer$questionId
boolean$isAdditionalContentEditingModePageObject

Referenced by deleteGenericFeedbacks().

+ Here is the caller graph for this function:

◆ duplicateFeedback()

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

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

public

Parameters
integer$originalQuestionId
integer$duplicateQuestionId

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

References duplicateGenericFeedback(), and duplicateSpecificFeedback().

484  {
485  $this->duplicateGenericFeedback($originalQuestionId, $duplicateQuestionId);
486  $this->duplicateSpecificFeedback($originalQuestionId, $duplicateQuestionId);
487  }
duplicateGenericFeedback($originalQuestionId, $duplicateQuestionId)
duplicates the GENERIC feedback relating to the given original question id and saves it for the given...
duplicateSpecificFeedback($originalQuestionId, $duplicateQuestionId)
duplicates the SPECIFIC feedback relating to the given original question id and saves it for the give...
+ Here is the call graph for this function:

◆ duplicateGenericFeedback()

ilAssQuestionFeedback::duplicateGenericFeedback (   $originalQuestionId,
  $duplicateQuestionId 
)
finalprivate

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

private

Parameters
integer$originalQuestionId
integer$duplicateQuestionId

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

References $res, $row, array, duplicatePageObject(), duplicateSpecificFeedback(), getGenericFeedbackPageObjectType(), getGenericFeedbackTableName(), and time.

Referenced by duplicateFeedback().

499  {
500  $res = $this->db->queryF(
501  "SELECT * FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s",
502  array('integer'), array($originalQuestionId)
503  );
504 
505  while( $row = $this->db->fetchAssoc($res) )
506  {
507  $feedbackId = $this->db->nextId($this->getGenericFeedbackTableName());
508 
509  $this->db->insert($this->getGenericFeedbackTableName(), array(
510  'feedback_id' => array('integer', $feedbackId),
511  'question_fi' => array('integer', $duplicateQuestionId),
512  'correctness' => array('text', $row['correctness']),
513  'feedback' => array('clob', $row['feedback']),
514  'tstamp' => array('integer', time())
515  ));
516 
517  if( $this->questionOBJ->isAdditionalContentEditingModePageObject() )
518  {
519  $pageObjectType = $this->getGenericFeedbackPageObjectType();
520  $this->duplicatePageObject($pageObjectType, $row['feedback_id'], $feedbackId, $duplicateQuestionId);
521  }
522  }
523  }
getGenericFeedbackTableName()
returns the table name for specific feedback
duplicatePageObject($pageObjectType, $originalPageObjectId, $duplicatePageObjectId, $duplicatePageObjectParentId)
duplicates the page object with given type and original id to new page object with same type and give...
Create styles array
The data for the language used.
getGenericFeedbackPageObjectType()
returns the type for generic feedback page objects defined in local constant
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ duplicatePageObject()

ilAssQuestionFeedback::duplicatePageObject (   $pageObjectType,
  $originalPageObjectId,
  $duplicatePageObjectId,
  $duplicatePageObjectParentId 
)
finalprotected

duplicates the page object with given type and original id to new page object with same type and given duplicate id and duplicate parent id

protected

Parameters
string$pageObjectType
integer$originalPageObjectId
integer$duplicatePageObjectId
integer$duplicatePageObjectParentId

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

References getClassNameByType().

Referenced by duplicateGenericFeedback(), ilAssConfigurableMultiOptionQuestionFeedback\duplicateSpecificFeedback(), and ilAssMultiOptionQuestionFeedback\duplicateSpecificFeedback().

873  {
874  $cl = $this->getClassNameByType($pageObjectType);
875  require_once 'Modules/TestQuestionPool/classes/feedback/class.'.$cl.'.php';
876 
877  $pageObject = new $cl($originalPageObjectId);
878  $pageObject->setParentId($duplicatePageObjectParentId);
879  $pageObject->setId($duplicatePageObjectId);
880  $pageObject->createFromXML();
881  }
getClassNameByType($a_type, $a_gui=false)
Get class name by type.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ duplicateSpecificFeedback()

ilAssQuestionFeedback::duplicateSpecificFeedback (   $originalQuestionId,
  $duplicateQuestionId 
)
abstractprotected

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

protected

Parameters
integer$originalQuestionId
integer$duplicateQuestionId

Referenced by duplicateFeedback(), and duplicateGenericFeedback().

+ Here is the caller graph for this function:

◆ ensurePageObjectDeleted()

ilAssQuestionFeedback::ensurePageObjectDeleted (   $pageObjectType,
  $pageObjectId 
)
finalprotected

ensures a no more existing page object for given type and id

protected

Parameters
type$pageObjectType
type$pageObjectId

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

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

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

892  {
894  {
895  include_once("./Modules/TestQuestionPool/classes/feedback/class.ilAssGenFeedbackPage.php");
896  if( ilAssGenFeedbackPage::_exists($pageObjectType, $pageObjectId) )
897  {
898  $pageObject = new ilAssGenFeedbackPage($pageObjectId);
899  $pageObject->delete();
900  }
901  }
903  {
904  include_once("./Modules/TestQuestionPool/classes/feedback/class.ilAssSpecFeedbackPage.php");
905  if( ilAssSpecFeedbackPage::_exists($pageObjectType, $pageObjectId) )
906  {
907  $pageObject = new ilAssSpecFeedbackPage($pageObjectId);
908  $pageObject->delete();
909  }
910  }
911  }
static _exists($a_parent_type, $a_id, $a_lang="", $a_no_cache=false)
Checks whether page exists.
Generic feedback page object.
const PAGE_OBJECT_TYPE_GENERIC_FEEDBACK
type for generic feedback page objects
Specific feedback page object.
const PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK
type for specific feedback page objects
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ensurePageObjectExists()

ilAssQuestionFeedback::ensurePageObjectExists (   $pageObjectType,
  $pageObjectId 
)
finalprivate

ensures an existing page object with given type and id

private

Parameters
type$pageObjectType
type$pageObjectId

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

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

Referenced by getPageObjectContent(), and getPageObjectXML().

814  {
816  {
817  include_once("./Modules/TestQuestionPool/classes/feedback/class.ilAssGenFeedbackPage.php");
818  if( !ilAssGenFeedbackPage::_exists($pageObjectType, $pageObjectId) )
819  {
820  $pageObject = new ilAssGenFeedbackPage();
821  $pageObject->setParentId($this->questionOBJ->getId());
822  $pageObject->setId($pageObjectId);
823  $pageObject->createFromXML();
824  }
825  }
827  {
828  include_once("./Modules/TestQuestionPool/classes/feedback/class.ilAssSpecFeedbackPage.php");
829  if( !ilAssSpecFeedbackPage::_exists($pageObjectType, $pageObjectId) )
830  {
831  $pageObject = new ilAssSpecFeedbackPage();
832  $pageObject->setParentId($this->questionOBJ->getId());
833  $pageObject->setId($pageObjectId);
834  $pageObject->createFromXML();
835  }
836  }
837  }
static _exists($a_parent_type, $a_id, $a_lang="", $a_no_cache=false)
Checks whether page exists.
Generic feedback page object.
const PAGE_OBJECT_TYPE_GENERIC_FEEDBACK
type for generic feedback page objects
Specific feedback page object.
const PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK
type for specific feedback page objects
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAllSpecificAnswerFeedbackContents()

ilAssQuestionFeedback::getAllSpecificAnswerFeedbackContents (   $questionId)
abstract

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

public

Parameters
integer$questionId
Returns
string $feedbackContent

Referenced by getGenericFeedbackContent().

+ Here is the caller graph for this function:

◆ getClassNameByType()

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

Get class name by type.

Parameters

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

References $a_type, PAGE_OBJECT_TYPE_GENERIC_FEEDBACK, and PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK.

Referenced by createPageObject(), duplicatePageObject(), getPageObjectContent(), getPageObjectEditingLink(), and getPageObjectXML().

699  {
700  $gui = ($a_gui)
701  ? "GUI"
702  : "";
703  include_once("./Modules/TestQuestionPool/classes/feedback/class.ilAssQuestionFeedback.php");
705  {
706  return "ilAssGenFeedbackPage".$gui;
707  }
709  {
710  return "ilAssSpecFeedbackPage".$gui;
711  }
712  }
$a_type
Definition: workflow.php:93
const PAGE_OBJECT_TYPE_GENERIC_FEEDBACK
type for generic feedback page objects
const PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK
type for specific feedback page objects
+ Here is the caller graph for this function:

◆ getGenericFeedbackContent()

ilAssQuestionFeedback::getGenericFeedbackContent (   $questionId,
  $solutionCompleted 
)
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.

public

Parameters
integer$questionId
boolean$solutionCompleted
Returns
string $feedbackContent

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

References $res, $row, ilRTE\_replaceMediaObjectImageSrc(), array, getAllSpecificAnswerFeedbackContents(), and getSpecificAnswerFeedbackContent().

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

327  {
328  require_once 'Services/RTE/classes/class.ilRTE.php';
329 
330  $correctness = $solutionCompleted ? 1 : 0;
331 
332  $res = $this->db->queryF(
333  "SELECT * FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s AND correctness = %s",
334  array('integer', 'text'), array($questionId, $correctness)
335  );
336 
337  $feedbackContent = null;
338 
339  while( $row = $this->db->fetchAssoc($res) )
340  {
341  $feedbackContent = ilRTE::_replaceMediaObjectImageSrc($row['feedback'], 1);
342  break;
343  }
344 
345  return $feedbackContent;
346  }
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
Create styles array
The data for the language used.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getGenericFeedbackExportPresentation()

ilAssQuestionFeedback::getGenericFeedbackExportPresentation (   $questionId,
  $solutionCompleted 
)

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

public

Parameters
integer$questionId
boolean$solutionCompleted
Returns
string $genericFeedbackExportPresentation

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

References getGenericFeedbackContent(), getGenericFeedbackPageObjectId(), getGenericFeedbackPageObjectType(), getPageObjectXML(), and getSpecificAnswerFeedbackExportPresentation().

995  {
996  if( $this->questionOBJ->isAdditionalContentEditingModePageObject() )
997  {
998  $genericFeedbackExportPresentation = $this->getPageObjectXML(
1000  $this->getGenericFeedbackPageObjectId($questionId, $solutionCompleted)
1001  );
1002  }
1003  else
1004  {
1005  $genericFeedbackExportPresentation = $this->getGenericFeedbackContent($questionId, $solutionCompleted);
1006  }
1007 
1008  return $genericFeedbackExportPresentation;
1009  }
getGenericFeedbackContent($questionId, $solutionCompleted)
returns the GENERIC feedback content for a given question state.
getGenericFeedbackPageObjectId($questionId, $solutionCompleted)
returns a useable page object id for generic feedback page objects for the given question id for eith...
getPageObjectXML($pageObjectType, $pageObjectId)
returns the xml of page object with given type and id
getGenericFeedbackPageObjectType()
returns the type for generic feedback page objects defined in local constant
+ Here is the call graph for this function:

◆ getGenericFeedbackId()

ilAssQuestionFeedback::getGenericFeedbackId (   $questionId,
  $solutionCompleted 
)
finalprotected

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

protected

Parameters
integer$questionId
boolean$answerIndex
Returns
string $feedbackId

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

References $res, $row, and array.

Referenced by getGenericFeedbackPageObjectId(), and saveGenericFeedbackContent().

595  {
596  $res = $this->db->queryF(
597  "SELECT feedback_id FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s AND correctness = %s",
598  array('integer','text'), array($questionId, (int)$solutionCompleted)
599  );
600 
601  $feedbackId = null;
602 
603  while( $row = $this->db->fetchAssoc($res) )
604  {
605  $feedbackId = $row['feedback_id'];
606  break;
607  }
608 
609  return $feedbackId;
610  }
Create styles array
The data for the language used.
+ Here is the caller graph for this function:

◆ getGenericFeedbackPageObjectId()

ilAssQuestionFeedback::getGenericFeedbackPageObjectId (   $questionId,
  $solutionCompleted 
)
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)

protected

Parameters
integer$questionId
boolean$solutionCompleted
Returns
integer $pageObjectId

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

References getGenericFeedbackId(), and saveGenericFeedbackContent().

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

974  {
975  $pageObjectId = $this->getGenericFeedbackId($questionId, $solutionCompleted);
976 
977  if( !$pageObjectId )
978  {
979  $pageObjectId = $this->saveGenericFeedbackContent($questionId, $solutionCompleted, null);
980  }
981 
982  return $pageObjectId;
983  }
getGenericFeedbackId($questionId, $solutionCompleted)
returns the SPECIFIC answer feedback ID for a given question id and answer index. ...
saveGenericFeedbackContent($questionId, $solutionCompleted, $feedbackContent)
saves GENERIC feedback content for the given question id to the database.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getGenericFeedbackPageObjectType()

ilAssQuestionFeedback::getGenericFeedbackPageObjectType ( )
finalprotected

returns the type for generic feedback page objects defined in local constant

protected

Returns
string $genericFeedbackPageObjectType

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

Referenced by deleteGenericFeedbacks(), duplicateGenericFeedback(), getGenericFeedbackExportPresentation(), getGenericFeedbackTestPresentation(), importGenericFeedback(), and initGenericFormProperties().

922  {
923  return self::PAGE_OBJECT_TYPE_GENERIC_FEEDBACK;
924  }
+ Here is the caller graph for this function:

◆ getGenericFeedbackTableName()

ilAssQuestionFeedback::getGenericFeedbackTableName ( )
finalprotected

returns the table name for specific feedback

Returns
string $specificFeedbackTableName

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

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

670  {
671  return self::TABLE_NAME_GENERIC_FEEDBACK;
672  }
+ Here is the caller graph for this function:

◆ getGenericFeedbackTestPresentation()

ilAssQuestionFeedback::getGenericFeedbackTestPresentation (   $questionId,
  $solutionCompleted 
)

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

public

Parameters
integer$questionId
boolean$solutionCompleted
Returns
string $genericFeedbackTestPresentationHTML

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

References getGenericFeedbackContent(), getGenericFeedbackPageObjectId(), getGenericFeedbackPageObjectType(), getPageObjectContent(), and getSpecificAnswerFeedbackTestPresentation().

113  {
114  if( $this->questionOBJ->isAdditionalContentEditingModePageObject() )
115  {
116  $genericFeedbackTestPresentationHTML = $this->getPageObjectContent(
118  $this->getGenericFeedbackPageObjectId($questionId, $solutionCompleted)
119  );
120  }
121  else
122  {
123  $genericFeedbackTestPresentationHTML = $this->getGenericFeedbackContent($questionId, $solutionCompleted);
124  }
125 
126  return $genericFeedbackTestPresentationHTML;
127  }
getGenericFeedbackContent($questionId, $solutionCompleted)
returns the GENERIC feedback content for a given question state.
getGenericFeedbackPageObjectId($questionId, $solutionCompleted)
returns a useable page object id for generic feedback page objects for the given question id for eith...
getPageObjectContent($pageObjectType, $pageObjectId)
returns the content of page object with given type and id
getGenericFeedbackPageObjectType()
returns the type for generic feedback page objects defined in local constant
+ Here is the call graph for this function:

◆ getPageObjectContent()

ilAssQuestionFeedback::getPageObjectContent (   $pageObjectType,
  $pageObjectId 
)
finalprotected

returns the content of page object with given type and id

protected

Parameters
type$pageObjectType
type$pageObjectId
Returns
string $pageObjectContent

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

References $ilCtrl, ensurePageObjectExists(), getClassNameByType(), and getPageObjectOutputMode().

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

767  {
768  global $ilCtrl;
769 
770  $cl = $this->getClassNameByType($pageObjectType, true);
771  require_once 'Modules/TestQuestionPool/classes/feedback/class.'.$cl.'.php';
772 
773  $this->ensurePageObjectExists($pageObjectType, $pageObjectId);
774 
775  $mode = ($ilCtrl->isAsynch())
776  ? "presentation"
777  : $this->getPageObjectOutputMode();
778 
779  $pageObjectGUI = new $cl($pageObjectId);
780  $pageObjectGUI->setOutputMode($mode);
781 
782  return $pageObjectGUI->presentation($mode);
783  }
ensurePageObjectExists($pageObjectType, $pageObjectId)
ensures an existing page object with given type and id
getPageObjectOutputMode()
Get page object output mode.
getClassNameByType($a_type, $a_gui=false)
Get class name by type.
global $ilCtrl
Definition: ilias.php:18
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPageObjectEditingLink()

ilAssQuestionFeedback::getPageObjectEditingLink (   $pageObjectType,
  $pageObjectId 
)
finalprivate

returns a link to page object editor for page object with given type and id

private

Parameters
type$pageObjectType
type$pageObjectId
Returns
string $pageObjectEditingLink

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

References getClassNameByType().

Referenced by getPageObjectNonEditableValueHTML().

726  {
727  $cl = $this->getClassNameByType($pageObjectType, true);
728  $this->ctrl->setParameterByClass($cl, 'feedback_type', $pageObjectType);
729  $this->ctrl->setParameterByClass($cl, 'feedback_id', $pageObjectId);
730 
731  $linkHREF = $this->ctrl->getLinkTargetByClass($cl, 'edit');
732  $linkTEXT = $this->lng->txt('tst_question_feedback_edit_page');
733 
734  return "<a href='$linkHREF'>$linkTEXT</a>";
735  }
getClassNameByType($a_type, $a_gui=false)
Get class name by type.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPageObjectNonEditableValueHTML()

ilAssQuestionFeedback::getPageObjectNonEditableValueHTML (   $pageObjectType,
  $pageObjectId 
)
finalprotected

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

protected

Parameters
string$pageObjectType
integer$pageObjectId
Returns
string $nonEditableValueHTML

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

References getPageObjectContent(), and getPageObjectEditingLink().

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

685  {
686  $link = $this->getPageObjectEditingLink($pageObjectType, $pageObjectId);
687  $content = $this->getPageObjectContent($pageObjectType, $pageObjectId);
688 
689  return "$link<br /><br />$content";
690  }
getPageObjectContent($pageObjectType, $pageObjectId)
returns the content of page object with given type and id
getPageObjectEditingLink($pageObjectType, $pageObjectId)
returns a link to page object editor for page object with given type and id
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPageObjectOutputMode()

ilAssQuestionFeedback::getPageObjectOutputMode ( )
final

Get page object output mode.

Returns
string page output mode

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

References $page_obj_output_mode.

Referenced by getPageObjectContent().

+ Here is the caller graph for this function:

◆ getPageObjectXML()

ilAssQuestionFeedback::getPageObjectXML (   $pageObjectType,
  $pageObjectId 
)
finalprotected

returns the xml of page object with given type and id

protected

Parameters
type$pageObjectType
type$pageObjectId
Returns
string $pageObjectXML

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

References ensurePageObjectExists(), and getClassNameByType().

Referenced by getGenericFeedbackExportPresentation(), and ilAssMultiOptionQuestionFeedback\getSpecificAnswerFeedbackExportPresentation().

795  {
796  $cl = $this->getClassNameByType($pageObjectType);
797  require_once 'Modules/TestQuestionPool/classes/feedback/class.'.$cl.'.php';
798 
799  $this->ensurePageObjectExists($pageObjectType, $pageObjectId);
800 
801  $pageObject = new $cl($pageObjectId);
802  return $pageObject->getXMLContent();
803  }
ensurePageObjectExists($pageObjectType, $pageObjectId)
ensures an existing page object with given type and id
getClassNameByType($a_type, $a_gui=false)
Get class name by type.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSpecificAnswerFeedbackContent()

ilAssQuestionFeedback::getSpecificAnswerFeedbackContent (   $questionId,
  $answerIndex 
)
abstract

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

public

Parameters
integer$questionId
integer$answerIndex
Returns
string $feedbackContent

Referenced by getGenericFeedbackContent().

+ Here is the caller graph for this function:

◆ getSpecificAnswerFeedbackExportPresentation()

ilAssQuestionFeedback::getSpecificAnswerFeedbackExportPresentation (   $questionId,
  $answerIndex 
)
abstract

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

public

Parameters
integer$questionId
integer$answerIndex
Returns
string $specificFeedbackExportPresentation

Referenced by getGenericFeedbackExportPresentation().

+ Here is the caller graph for this function:

◆ getSpecificAnswerFeedbackPageObjectType()

ilAssQuestionFeedback::getSpecificAnswerFeedbackPageObjectType ( )
finalprotected

◆ getSpecificAnswerFeedbackTestPresentation()

ilAssQuestionFeedback::getSpecificAnswerFeedbackTestPresentation (   $questionId,
  $answerIndex 
)
abstract

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

public

Parameters
integer$questionId
integer$answerIndex
Returns
string $specificAnswerFeedbackTestPresentationHTML

Referenced by getGenericFeedbackTestPresentation().

+ Here is the caller graph for this function:

◆ importGenericFeedback()

ilAssQuestionFeedback::importGenericFeedback (   $questionId,
  $solutionCompleted,
  $feedbackContent 
)

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

public

Parameters
integer$questionId
boolean$solutionCompleted
string$feedbackContent

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

References createPageObject(), getGenericFeedbackPageObjectId(), getGenericFeedbackPageObjectType(), importSpecificAnswerFeedback(), and saveGenericFeedbackContent().

1033  {
1034  if( $this->questionOBJ->isAdditionalContentEditingModePageObject() )
1035  {
1036  $pageObjectId = $this->getGenericFeedbackPageObjectId($questionId, $solutionCompleted);
1037  $pageObjectType = $this->getGenericFeedbackPageObjectType();
1038 
1039  $this->createPageObject($pageObjectType, $pageObjectId, $feedbackContent);
1040  }
1041  else
1042  {
1043  $this->saveGenericFeedbackContent($questionId, $solutionCompleted, $feedbackContent);
1044  }
1045  }
createPageObject($pageObjectType, $pageObjectId, $pageObjectContent)
creates a new page object with given page object id and page object type and passed page object conte...
getGenericFeedbackPageObjectId($questionId, $solutionCompleted)
returns a useable page object id for generic feedback page objects for the given question id for eith...
getGenericFeedbackPageObjectType()
returns the type for generic feedback page objects defined in local constant
saveGenericFeedbackContent($questionId, $solutionCompleted, $feedbackContent)
saves GENERIC feedback content for the given question id to the database.
+ Here is the call graph for this function:

◆ importSpecificAnswerFeedback()

ilAssQuestionFeedback::importSpecificAnswerFeedback (   $questionId,
  $answerIndex,
  $feedbackContent 
)
abstract

imports the given feedback content as specific feedback for the given question id and answer index

public

Parameters
integer$questionId
integer$answerIndex
string$feedbackContent

Referenced by importGenericFeedback().

+ Here is the caller graph for this function:

◆ initGenericFormProperties()

ilAssQuestionFeedback::initGenericFormProperties ( ilPropertyFormGUI  $form)
final

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

public

Parameters
ilPropertyFormGUI$form

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

References getGenericFeedbackContent(), getGenericFeedbackPageObjectId(), getGenericFeedbackPageObjectType(), ilPropertyFormGUI\getItemByPostVar(), getPageObjectNonEditableValueHTML(), and initSpecificFormProperties().

181  {
182  if( $this->questionOBJ->isAdditionalContentEditingModePageObject() )
183  {
184  $pageObjectType = $this->getGenericFeedbackPageObjectType();
185 
186  $valueFeedbackSolutionComplete = $this->getPageObjectNonEditableValueHTML(
187  $pageObjectType, $this->getGenericFeedbackPageObjectId($this->questionOBJ->getId(), true)
188  );
189 
190  $valueFeedbackSolutionIncomplete = $this->getPageObjectNonEditableValueHTML(
191  $pageObjectType, $this->getGenericFeedbackPageObjectId($this->questionOBJ->getId(), false)
192  );
193  }
194  else
195  {
196  $valueFeedbackSolutionComplete = $this->getGenericFeedbackContent(
197  $this->questionOBJ->getId(), true
198  );
199 
200  $valueFeedbackSolutionIncomplete = $this->getGenericFeedbackContent(
201  $this->questionOBJ->getId(), false
202  );
203  }
204 
205  $form->getItemByPostVar('feedback_complete')->setValue($valueFeedbackSolutionComplete);
206  $form->getItemByPostVar('feedback_incomplete')->setValue($valueFeedbackSolutionIncomplete);
207  }
getItemByPostVar($a_post_var)
Get Item by POST variable.
getPageObjectNonEditableValueHTML($pageObjectType, $pageObjectId)
returns html content to be used as value for non editable value form properties in feedback editing f...
getGenericFeedbackContent($questionId, $solutionCompleted)
returns the GENERIC feedback content for a given question state.
getGenericFeedbackPageObjectId($questionId, $solutionCompleted)
returns a useable page object id for generic feedback page objects for the given question id for eith...
getGenericFeedbackPageObjectType()
returns the type for generic feedback page objects defined in local constant
+ 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

public

Parameters
ilPropertyFormGUI$form

Referenced by initGenericFormProperties().

+ Here is the caller graph for this function:

◆ isGenericFeedbackId()

ilAssQuestionFeedback::isGenericFeedbackId (   $feedbackId)
protected
Parameters
int$feedbackId
Returns
bool

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

References $row, array, and isSpecificAnswerFeedbackId().

Referenced by checkFeedbackParent().

617  {
618  $row = $this->db->fetchAssoc($this->db->queryF(
619  "SELECT COUNT(feedback_id) cnt FROM {$this->getGenericFeedbackTableName()}
620  WHERE question_fi = %s AND feedback_id = %s",
621  array('integer','integer'), array($this->questionOBJ->getId(), $feedbackId)
622  ));
623 
624 
625  return $row['cnt'];
626  }
Create styles array
The data for the language used.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ 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)

public

Returns
boolean $isSaveableInPageObjectEditingMode

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

255  {
256  return false;
257  }

◆ isSpecificAnswerFeedbackId()

ilAssQuestionFeedback::isSpecificAnswerFeedbackId (   $feedbackId)
abstractprotected
Parameters
int$feedbackId
Returns
bool

Referenced by checkFeedbackParent(), and isGenericFeedbackId().

+ Here is the caller graph for this function:

◆ isValidFeedbackPageObjectType()

static ilAssQuestionFeedback::isValidFeedbackPageObjectType (   $feedbackPageObjectType)
staticfinal

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

public

Parameters
string$feedbackPageObjectType
Returns
array $validFeedbackPageObjectTypes

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

Referenced by ilAssQuestionFeedbackPageObjectCommandForwarder\__construct().

950  {
951  switch( $feedbackPageObjectType )
952  {
953  case self::PAGE_OBJECT_TYPE_GENERIC_FEEDBACK:
954  case self::PAGE_OBJECT_TYPE_SPECIFIC_FEEDBACK:
955 
956  return true;
957  }
958 
959  return false;
960  }
+ Here is the caller graph for this function:

◆ migrateContentForLearningModule()

ilAssQuestionFeedback::migrateContentForLearningModule ( ilAssSelfAssessmentMigrator  $migrator,
  $questionId 
)
Parameters
ilAssSelfAssessmentMigrator$migrator
integer$questionId

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

References ilAssSelfAssessmentMigrator\migrateToLmContent(), and saveGenericFeedbackContent().

1064  {
1065  $this->saveGenericFeedbackContent($questionId, true, $migrator->migrateToLmContent(
1066  $this->getGenericFeedbackContent($questionId, true)
1067  ));
1068 
1069  $this->saveGenericFeedbackContent($questionId, false, $migrator->migrateToLmContent(
1070  $this->getGenericFeedbackContent($questionId, false)
1071  ));
1072  }
saveGenericFeedbackContent($questionId, $solutionCompleted, $feedbackContent)
saves GENERIC feedback content for the given question id to the database.
+ Here is the call graph for this function:

◆ saveGenericFeedbackContent()

ilAssQuestionFeedback::saveGenericFeedbackContent (   $questionId,
  $solutionCompleted,
  $feedbackContent 
)
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.

public

Parameters
integer$questionId
boolean$solutionCompleted
string$feedbackContent
Returns
integer $feedbackId

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

References ilRTE\_replaceMediaObjectImageSrc(), array, getGenericFeedbackId(), getGenericFeedbackTableName(), saveSpecificAnswerFeedbackContent(), and time.

Referenced by getGenericFeedbackPageObjectId(), importGenericFeedback(), migrateContentForLearningModule(), and saveGenericFormProperties().

382  {
383  require_once 'Services/RTE/classes/class.ilRTE.php';
384 
385  $correctness = $solutionCompleted ? 1 : 0;
386 
387  $feedbackId = $this->getGenericFeedbackId($questionId, $solutionCompleted);
388 
389  if( strlen($feedbackContent) )
390  {
391  $feedbackContent = ilRTE::_replaceMediaObjectImageSrc($feedbackContent, 0);
392  }
393 
394  if( $feedbackId )
395  {
396  $this->db->update(
398  array(
399  'feedback' => array('clob', $feedbackContent),
400  'tstamp' => array('integer', time())
401  ),
402  array(
403  'feedback_id' => array('integer', $feedbackId)
404  )
405  );
406  }
407  else
408  {
409  $feedbackId = $this->db->nextId($this->getGenericFeedbackTableName());
410 
411  $this->db->insert($this->getGenericFeedbackTableName(), array(
412  'feedback_id' => array('integer', $feedbackId),
413  'question_fi' => array('integer', $questionId),
414  'correctness' => array('text', $correctness), // text ?
415  'feedback' => array('clob', $feedbackContent),
416  'tstamp' => array('integer', time())
417  ));
418  }
419 
420  return $feedbackId;
421  }
getGenericFeedbackTableName()
returns the table name for specific feedback
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
Create styles array
The data for the language used.
getGenericFeedbackId($questionId, $solutionCompleted)
returns the SPECIFIC answer feedback ID for a given question id and answer index. ...
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ 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

public

Parameters
ilPropertyFormGUI$form

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

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

228  {
229  if( !$this->questionOBJ->isAdditionalContentEditingModePageObject() )
230  {
231  $this->saveGenericFeedbackContent($this->questionOBJ->getId(), false, $form->getInput('feedback_incomplete'));
232  $this->saveGenericFeedbackContent($this->questionOBJ->getId(), true, $form->getInput('feedback_complete'));
233  }
234  }
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
saveGenericFeedbackContent($questionId, $solutionCompleted, $feedbackContent)
saves GENERIC feedback content for the given question id to the database.
+ Here is the call graph for this function:

◆ saveSpecificAnswerFeedbackContent()

ilAssQuestionFeedback::saveSpecificAnswerFeedbackContent (   $questionId,
  $answerIndex,
  $feedbackContent 
)
abstract

saves SPECIFIC feedback content for the given question id and answer index to the database.

public

Parameters
integer$questionId
integer$answerIndex
string$feedbackContent
Returns
integer $feedbackId

Referenced by saveGenericFeedbackContent().

+ Here is the caller graph for this function:

◆ saveSpecificFormProperties()

ilAssQuestionFeedback::saveSpecificFormProperties ( ilPropertyFormGUI  $form)
abstract

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

public

Parameters
ilPropertyFormGUI$form

Referenced by saveGenericFormProperties().

+ Here is the caller graph for this function:

◆ setPageObjectOutputMode()

ilAssQuestionFeedback::setPageObjectOutputMode (   $a_val)
final

Set page object output mode.

Parameters
string$a_valpage output mode

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

743  {
744  $this->page_obj_output_mode = $a_val;
745  }

◆ syncFeedback()

ilAssQuestionFeedback::syncFeedback (   $originalQuestionId,
  $duplicateQuestionId 
)
final

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

public

Parameters
integer$originalQuestionId
integer$duplicateQuestionId

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

References syncGenericFeedback(), and syncSpecificFeedback().

545  {
546  $this->syncGenericFeedback($originalQuestionId, $duplicateQuestionId);
547  $this->syncSpecificFeedback($originalQuestionId, $duplicateQuestionId);
548  }
syncSpecificFeedback($originalQuestionId, $duplicateQuestionId)
syncs the SPECIFIC feedback from a duplicated question back to the original question ...
syncGenericFeedback($originalQuestionId, $duplicateQuestionId)
syncs the GENERIC feedback from a duplicated question back to the original question ...
+ Here is the call graph for this function:

◆ syncGenericFeedback()

ilAssQuestionFeedback::syncGenericFeedback (   $originalQuestionId,
  $duplicateQuestionId 
)
finalprivate

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

private

Parameters
integer$originalQuestionId
integer$duplicateQuestionId

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

References $result, $row, array, getGenericFeedbackTableName(), and time.

Referenced by syncFeedback().

559  {
560  // delete generic feedback of the original question
561  $this->db->manipulateF(
562  "DELETE FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s", array('integer'), array($originalQuestionId)
563  );
564 
565  // get generic feedback of the actual (duplicated) question
566  $result = $this->db->queryF(
567  "SELECT * FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s", array('integer'), array($duplicateQuestionId)
568  );
569 
570  // save generic feedback to the original question
571  while( $row = $this->db->fetchAssoc($result) )
572  {
573  $nextId = $this->db->nextId($this->getGenericFeedbackTableName());
574 
575  $this->db->insert($this->getGenericFeedbackTableName(), array(
576  'feedback_id' => array('integer', $nextId),
577  'question_fi' => array('integer', $originalQuestionId),
578  'correctness' => array('text', $row['correctness']),
579  'feedback' => array('clob', $row['feedback']),
580  'tstamp' => array('integer', time())
581  ));
582  }
583  }
$result
getGenericFeedbackTableName()
returns the table name for specific feedback
Create styles array
The data for the language used.
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ syncSpecificFeedback()

ilAssQuestionFeedback::syncSpecificFeedback (   $originalQuestionId,
  $duplicateQuestionId 
)
abstractprotected

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

protected

Parameters
integer$originalQuestionId
integer$duplicateQuestionId

Referenced by checkFeedbackParent(), and syncFeedback().

+ Here is the caller graph for this function:

Field Documentation

◆ $ctrl

ilAssQuestionFeedback::$ctrl = null
protected

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

Referenced by __construct().

◆ $db

ilAssQuestionFeedback::$db = null
protected

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

Referenced by __construct().

◆ $lng

ilAssQuestionFeedback::$lng = null
protected

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

Referenced by __construct().

◆ $page_obj_output_mode

ilAssQuestionFeedback::$page_obj_output_mode = "presentation"
protected

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

Referenced by getPageObjectOutputMode().

◆ $questionOBJ

ilAssQuestionFeedback::$questionOBJ = null
protected

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

Referenced by __construct().

◆ CSS_CLASS_FEEDBACK_CORRECT

◆ CSS_CLASS_FEEDBACK_WRONG

◆ 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 37 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 32 of file class.ilAssQuestionFeedback.php.

◆ PAGE_OBJECT_TYPE_GENERIC_FEEDBACK

const ilAssQuestionFeedback::PAGE_OBJECT_TYPE_GENERIC_FEEDBACK = 'qfbg'

◆ 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'

table name for specific feedback

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


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