ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
All Data Structures Namespaces Files Functions Variables Modules Pages
ilObjQuestionPool Class Reference
+ Inheritance diagram for ilObjQuestionPool:
+ Collaboration diagram for ilObjQuestionPool:

Public Member Functions

 ilObjQuestionPool ($a_id=0, $a_call_by_reference=true)
 Constructor public. More...
 
 create ($a_upload=false)
 create questionpool object More...
 
 createReference ()
 Creates a database reference id for the object (saves the object to the database and creates a reference id in the database) More...
 
 update ()
 update object data More...
 
 updateMetaData ()
 
 read ($a_force_db=false)
 read object data from db into object More...
 
 delete ()
 delete object and all related data More...
 
 deleteQuestionpool ()
 
 notify ($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
 notifys an object about an event occured Based on the event happend, each object may decide how it reacts. More...
 
 deleteQuestion ($question_id)
 Deletes a question from the question pool. More...
 
 addQuestionChangeListeners (assQuestion $question)
 
 loadFromDb ()
 Loads a ilObjQuestionpool object from a database. More...
 
 saveToDb ()
 Saves a ilObjQuestionpool object to a database. More...
 
 getQuestiontype ($question_id)
 Returns the question type of a question with a given id. More...
 
 getDescription ()
 get description of content object More...
 
 setDescription ($a_description)
 set description of content object More...
 
 getTitle ()
 get title of glossary object More...
 
 setTitle ($a_title)
 set title of glossary object More...
 
 isInUse ($question_id)
 Checks whether the question is in use or not. More...
 
createQuestion ($question_type, $question_id=-1)
 
 duplicateQuestion ($question_id)
 Duplicates a question for a questionpool. More...
 
 copyQuestion ($question_id, $questionpool_to)
 Copies a question into another question pool. More...
 
 getPrintviewQuestions ()
 Calculates the data for the print view of the questionpool. More...
 
 exportPagesXML (&$a_xml_writer, $a_inst, $a_target_dir, &$expLog, $questions)
 export pages of test to xml (see ilias_co.dtd) More...
 
 exportXMLMetaData (&$a_xml_writer)
 export content objects meta data to xml (see ilias_co.dtd) More...
 
 modifyExportIdentifier ($a_tag, $a_param, $a_value)
 
 exportXMLPageObjects (&$a_xml_writer, $a_inst, &$expLog, $questions)
 export page objects to xml (see ilias_co.dtd) More...
 
 exportXMLMediaObjects (&$a_xml_writer, $a_inst, $a_target_dir, &$expLog)
 export media objects to xml (see ilias_co.dtd) More...
 
 exportFileItems ($a_target_dir, &$expLog)
 export files of file itmes More...
 
 createExportDirectory ()
 creates data directory for export files (data_dir/qpl_data/qpl_<id>/export, depending on data directory that is set in ILIAS setup/ini) More...
 
 getExportDirectory ($type="")
 get export directory of questionpool More...
 
 _setImportDirectory ($a_import_dir=null)
 set import directory More...
 
 _getImportDirectory ()
 get import directory of lm More...
 
 getImportDirectory ()
 
getAllQuestions ()
 Retrieve an array containing all question ids of the questionpool. More...
 
getAllQuestionIds ()
 
 getImportMapping ()
 get array of (two) new created questions for import id More...
 
 toXML ($questions)
 Returns a QTI xml representation of a list of questions. More...
 
 _getQuestionCount ($questionpool_id, $complete_questions_only=FALSE)
 Returns the number of questions in a question pool. More...
 
 setOnline ($a_online_status)
 Sets the questionpool online status. More...
 
 getOnline ()
 
 setShowTaxonomies ($showTaxonomies)
 
 getShowTaxonomies ()
 
 setNavTaxonomyId ($navTaxonomyId)
 
 getNavTaxonomyId ()
 
 isNavTaxonomyActive ()
 
 _lookupOnline ($a_obj_id, $is_reference=FALSE)
 
 _hasEqualPoints ($a_obj_id, $is_reference=FALSE)
 Checks a question pool for questions with the same maximum points. More...
 
 pasteFromClipboard ()
 Copies/Moves a question from the clipboard. More...
 
 copyToClipboard ($question_id)
 Copies a question to the clipboard. More...
 
 moveToClipboard ($question_id)
 Moves a question to the clipboard. More...
 
 cleanupClipboard ($deletedQuestionId)
 
 _isWriteable ($object_id, $user_id)
 Returns true, if the question pool is writeable by a given user. More...
 
getQuestionDetails ($question_ids)
 Returns an array containing the qpl_question and qpl_qst_type fields for an array of question ids. More...
 
getDeleteableQuestionDetails ($question_ids)
 Returns an array containing the qpl_question and qpl_qst_type fields of deleteable questions for an array of question ids. More...
 
 _getFullPathToQpl ($ref_id)
 Retrieves the full path to a question pool with a given reference id. More...
 
_getAvailableQuestionpools ($use_object_id=FALSE, $equal_points=FALSE, $could_be_offline=FALSE, $showPath=FALSE, $with_questioncount=FALSE, $permission="read", $usr_id="")
 Returns the available question pools for the active user. More...
 
getQplQuestions ()
 
 cloneObject ($a_target_id, $a_copy_id=0)
 Creates a 1:1 copy of the object and places the copy in a given repository. More...
 
getQuestionTypes ($all_tags=FALSE, $fixOrder=false)
 
_getQuestionTypes ($all_tags=FALSE, $fixOrder=false)
 
getQuestionList ()
 
 isPluginActive ($a_pname)
 Checks wheather or not a question plugin with a given name is active. More...
 
 purgeQuestions ()
 
 getTaxonomyIds ()
 get ids of all taxonomies corresponding to current pool More...
 
- Public Member Functions inherited from ilObject
 ilObject ($a_id=0, $a_reference=true)
 Constructor public. More...
 
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not) More...
 
 read ($a_force_db=false)
 read object data from db into object More...
 
 getId ()
 get object id public More...
 
 setId ($a_id)
 set object id public More...
 
 setRefId ($a_id)
 set reference id public More...
 
 getRefId ()
 get reference id public More...
 
 getType ()
 get object type public More...
 
 setType ($a_type)
 set object type public More...
 
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions More...
 
 getTitle ()
 get object title public More...
 
 getUntranslatedTitle ()
 get untranslated object title public More...
 
 setTitle ($a_title)
 set object title More...
 
 getDescription ()
 get object description More...
 
 setDescription ($a_desc)
 set object description More...
 
 getLongDescription ()
 get object long description (stored in object_description) More...
 
 getImportId ()
 get import id More...
 
 setImportId ($a_import_id)
 set import id More...
 
 getOwner ()
 get object owner More...
 
 getOwnerName ()
 
 _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id More...
 
 setOwner ($a_owner)
 set object owner More...
 
 getCreateDate ()
 get create date public More...
 
 getLastUpdateDate ()
 get last update date public More...
 
 getDiskUsage ()
 Gets the disk usage of the object in bytes. More...
 
 setObjDataRecord ($a_record)
 set object_data record (note: this method should only be called from the ilObjectFactory class) More...
 
 create ()
 create More...
 
 update ()
 update object in db More...
 
 MDUpdateListener ($a_element)
 Meta data update listener. More...
 
 createMetaData ()
 create meta data entry More...
 
 updateMetaData ()
 update meta data entry More...
 
 deleteMetaData ()
 delete meta data entry More...
 
 updateOwner ()
 update owner of object in db More...
 
 _getIdForImportId ($a_import_id)
 get current object id for import id (static) More...
 
 _lookupOwner ($a_id)
 lookup object owner More...
 
 _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update More...
 
 _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects. More...
 
 _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree More...
 
 _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
 _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
 _writeTitle ($a_obj_id, $a_title)
 write title to db (static) More...
 
 _writeDescription ($a_obj_id, $a_desc)
 write description to db (static) More...
 
 _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static) More...
 
 _isInTrash ($a_ref_id)
 checks wether object is in trash More...
 
 _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash More...
 
 _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type More...
 
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!? More...
 
 setPermissions ($a_parent_ref)
 set permissions of object More...
 
 setParentRolePermissions ($a_parent_ref)
 Initialize the permissions of parent roles (local roles of categories, global roles...) This method is overwritten in e.g courses, groups for building permission intersections with non_member templates. More...
 
 createReference ()
 creates reference for object More...
 
 countReferences ()
 count references of object More...
 
 delete ()
 delete object or referenced object (in the case of a referenced object, object data is only deleted if last reference is deleted) This function removes an object entirely from system!! More...
 
 initDefaultRoles ()
 init default roles settings Purpose of this function is to create a local role folder and local roles, that are needed depending on the object type If you want to setup default local roles you MUST overwrite this method in derived object classes (see ilObjForum for an example) public More...
 
 applyDidacticTemplate ($a_tpl_id)
 Apply template. More...
 
 notify ($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
 notifys an object about an event occured Based on the event passed, each object may decide how it reacts. More...
 
 setRegisterMode ($a_bool)
 
 isUserRegistered ($a_user_id=0)
 
 requireRegistration ()
 
 getXMLZip ()
 
 getHTMLDirectory ()
 
 cloneObject ($a_target_id, $a_copy_id=0, $a_omit_tree=false)
 Clone object permissions, put in tree ... More...
 
 appendCopyInfo ($a_target_id, $a_copy_id)
 Prepend Copy info if object with same name exists in that container. More...
 
 cloneDependencies ($a_target_id, $a_copy_id)
 Clone object dependencies. More...
 
 cloneMetaData ($target_obj)
 Copy meta data. More...
 
 _lookupCreationDate ($a_id)
 Lookup creation date. More...
 

Static Public Member Functions

static _createImportDirectory ()
 creates data directory for import files (data_dir/qpl_data/qpl_<id>/import, depending on data directory that is set in ILIAS setup/ini) More...
 
static getQuestionTypeByTypeId ($type_id)
 
static getQuestionTypeTranslations ()
 
static & _getSelfAssessmentQuestionTypes ($all_tags=FALSE)
 Get all self assessment question types. More...
 
static _updateQuestionCount ($object_id)
 Updates the number of available questions for a question pool in the database. More...
 
- Static Public Member Functions inherited from ilObject
static _lookupObjIdByImportId ($a_import_id)
 
static _getAllReferences ($a_id)
 get all reference ids of object More...
 
static _lookupTitle ($a_id)
 lookup object title More...
 
static _getIdsForTitle ($title, $type='', $partialmatch=false)
 
static _lookupDescription ($a_id)
 lookup object description More...
 
static _lookupObjId ($a_id)
 
static setDeletedDates ($a_ref_ids)
 Set deleted date type $ilDB. More...
 
static _lookupType ($a_id, $a_reference=false)
 lookup object type More...
 
static _lookupObjectId ($a_ref_id)
 lookup object id More...
 
static _exists ($a_id, $a_reference=false, $a_type=null)
 checks if an object exists in object_data More...
 
static _getObjectsByType ($a_obj_type="", $a_owner="")
 Get objects by type. More...
 
static _prepareCloneSelection ($a_ref_ids, $new_type, $show_path=true)
 Prepare copy wizard object selection. More...
 
static _getIcon ($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
 Get icon for repository item. More...
 
static collectDeletionDependencies (&$deps, $a_ref_id, $a_obj_id, $a_type, $a_depth=0)
 Collect deletion dependencies. More...
 
static getDeletionDependencies ($a_obj_id)
 Get deletion dependencies. More...
 
static getLongDescriptions (array $a_obj_ids)
 Get long description data. More...
 
static getAllOwnedRepositoryObjects ($a_user_id)
 Get all ids of objects user owns. More...
 
static hasAutoRating ($a_type, $a_ref_id)
 Check if auto rating is active for parent group/course. More...
 

Data Fields

 $online
 
- Data Fields inherited from ilObject
const TITLE_LENGTH = 255
 max length of object title More...
 
const DESC_LENGTH = 128
 
 $ilias
 
 $lng
 
 $id
 
 $ref_id
 
 $type
 
 $title
 
 $untranslatedTitle
 
 $desc
 
 $long_desc
 
 $owner
 
 $create_date
 
 $last_update
 
 $import_id
 
 $register = false
 
 $referenced
 
 $objectList
 
 $max_title
 
 $max_desc
 
 $add_dots
 
 $obj_data_record
 object_data record More...
 

Private Attributes

 $showTaxonomies = null
 
 $navTaxonomyId = null
 
 $import_dir
 

Detailed Description

Definition at line 16 of file class.ilObjQuestionPool.php.

Member Function Documentation

◆ _createImportDirectory()

static ilObjQuestionPool::_createImportDirectory ( )
static

creates data directory for import files (data_dir/qpl_data/qpl_<id>/import, depending on data directory that is set in ILIAS setup/ini)

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

References ilObject\$ilias, ilUtil\getDataDir(), and ilUtil\makeDir().

Referenced by ilObjQuestionPoolGUI\uploadQplObject().

767  {
768  global $ilias;
769 
770  include_once "./Services/Utilities/classes/class.ilUtil.php";
771  $qpl_data_dir = ilUtil::getDataDir()."/qpl_data";
772  ilUtil::makeDir($qpl_data_dir);
773 
774  if(!is_writable($qpl_data_dir))
775  {
776  $ilias->raiseError("Questionpool Data Directory (".$qpl_data_dir
777  .") not writeable.",$ilias->error_obj->FATAL);
778  }
779 
780  // create questionpool directory (data_dir/qpl_data/qpl_import)
781  $qpl_dir = $qpl_data_dir."/qpl_import";
782  ilUtil::makeDir($qpl_dir);
783  if(!@is_dir($qpl_dir))
784  {
785  $ilias->raiseError("Creation of Questionpool Directory failed.",$ilias->error_obj->FATAL);
786  }
787  return $qpl_dir;
788  }
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getAvailableQuestionpools()

& ilObjQuestionPool::_getAvailableQuestionpools (   $use_object_id = FALSE,
  $equal_points = FALSE,
  $could_be_offline = FALSE,
  $showPath = FALSE,
  $with_questioncount = FALSE,
  $permission = "read",
  $usr_id = "" 
)

Returns the available question pools for the active user.

Returns
array The available question pools public

Definition at line 1331 of file class.ilObjQuestionPool.php.

References $ilDB, $ilUser, $in, ilObject\$lng, ilObject\$ref_id, $result, $row, ilObject\$title, ilUtil\_getObjectsByOperations(), _hasEqualPoints(), ilObject\_lookupObjId(), and ilObject\_prepareCloneSelection().

Referenced by ilTestExpressPageObjectGUI\addQuestion(), ilObjTestGUI\addQuestionObject(), ilObjTestGUI\createQuestionObject(), ilObjTest\getAvailableQuestionpools(), ilObjTest\getAvailableQuestions(), and ilObjTest\randomSelectQuestions().

1332  {
1333  global $ilUser, $ilDB, $lng;
1334 
1335  $result_array = array();
1336  $permission = (strlen($permission) == 0) ? "read" : $permission;
1337  $qpls = ilUtil::_getObjectsByOperations("qpl", $permission, (strlen($usr_id)) ? $usr_id : $ilUser->getId(), -1);
1338  $obj_ids = array();
1339  foreach ($qpls as $ref_id)
1340  {
1341  $obj_id = ilObject::_lookupObjId($ref_id);
1342  $obj_ids[$ref_id] = $obj_id;
1343  }
1344  $titles = ilObject::_prepareCloneSelection($qpls, "qpl");
1345  if (count($obj_ids))
1346  {
1347  $in = $ilDB->in('object_data.obj_id', $obj_ids, false, 'integer');
1348  if ($could_be_offline)
1349  {
1350  $result = $ilDB->query("SELECT qpl_questionpool.*, object_data.title FROM qpl_questionpool, object_data WHERE ".
1351  "qpl_questionpool.obj_fi = object_data.obj_id AND $in ORDER BY object_data.title");
1352  }
1353  else
1354  {
1355  $result = $ilDB->queryF("SELECT qpl_questionpool.*, object_data.title FROM qpl_questionpool, object_data WHERE ".
1356  "qpl_questionpool.obj_fi = object_data.obj_id AND $in AND qpl_questionpool.isonline = %s ".
1357  "ORDER BY object_data.title",
1358  array('text'),
1359  array(1)
1360  );
1361  }
1362  while ($row = $ilDB->fetchAssoc($result))
1363  {
1364  $add = TRUE;
1365  if ($equal_points)
1366  {
1367  if (!ilObjQuestionPool::_hasEqualPoints($row["obj_fi"]))
1368  {
1369  $add = FALSE;
1370  }
1371  }
1372  if ($add)
1373  {
1374  $ref_id = array_search($row["obj_fi"], $obj_ids);
1375  $title = (($showPath) ? $titles[$ref_id] : $row["title"]);
1376  if ($with_questioncount)
1377  {
1378  $title .= " [" . $row["questioncount"] . " " . ($row["questioncount"] == 1 ? $lng->txt("ass_question") : $lng->txt("assQuestions")) . "]";
1379  }
1380 
1381  if ($use_object_id)
1382  {
1383  $result_array[$row["obj_fi"]] = array(
1384  'qpl_id' => $row['obj_fi'],
1385  'qpl_title' => $row['title'],
1386  "title" => $title,
1387  "count" => $row["questioncount"]
1388  );
1389  }
1390  else
1391  {
1392  $result_array[$ref_id] = array(
1393  'qpl_id' => $row['obj_fi'],
1394  'qpl_title' => $row['title'],
1395  "title" => $title,
1396  "count" => $row["questioncount"]
1397  );
1398  }
1399  }
1400  }
1401  }
1402  return $result_array;
1403  }
static _prepareCloneSelection($a_ref_ids, $new_type, $show_path=true)
Prepare copy wizard object selection.
$result
static _getObjectsByOperations($a_obj_type, $a_operation, $a_usr_id=0, $limit=0)
Get all objects of a specific type and check access This function is not recursive, instead it parses the serialized rbac_pa entries.
_hasEqualPoints($a_obj_id, $is_reference=FALSE)
Checks a question pool for questions with the same maximum points.
static _lookupObjId($a_id)
global $ilUser
Definition: imgupload.php:15
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getFullPathToQpl()

ilObjQuestionPool::_getFullPathToQpl (   $ref_id)

Retrieves the full path to a question pool with a given reference id.

Returns
string The full path to the question pool including the locator public

Definition at line 1302 of file class.ilObjQuestionPool.php.

References $path, ilObject\$ref_id, ilStr\strLen(), and ilStr\subStr().

1303  {
1304  global $tree;
1305  $path = $tree->getPathFull($ref_id);
1306  $items = array();
1307  $counter = 0;
1308  foreach ($path as $item)
1309  {
1310  if (($counter > 0) && ($counter < count($path)-1))
1311  {
1312  array_push($items, $item["title"]);
1313  }
1314  $counter++;
1315  }
1316  $fullpath = join(" > ", $items);
1317  include_once "./Services/Utilities/classes/class.ilStr.php";
1318  if (strlen($fullpath) > 60)
1319  {
1320  $fullpath = ilStr::subStr($fullpath, 0, 30) . "..." . ilStr::subStr($fullpath, ilStr::strLen($fullpath)-30, 30);
1321  }
1322  return $fullpath;
1323  }
static strLen($a_string)
Definition: class.ilStr.php:77
$path
Definition: index.php:22
static subStr($a_str, $a_start, $a_length=NULL)
Definition: class.ilStr.php:15
+ Here is the call graph for this function:

◆ _getImportDirectory()

ilObjQuestionPool::_getImportDirectory ( )

get import directory of lm

Definition at line 808 of file class.ilObjQuestionPool.php.

References $_SESSION.

Referenced by assFormulaQuestionImport\fromXML(), getImportDirectory(), assQuestionImport\getQplImportArchivDirectory(), ilObjQuestionPoolGUI\importVerifiedFileObject(), and ilObjQuestionPoolGUI\uploadQplObject().

809  {
810  if (strlen($_SESSION["qpl_import_dir"]))
811  {
812  return $_SESSION["qpl_import_dir"];
813  }
814  return null;
815  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']
+ Here is the caller graph for this function:

◆ _getQuestionCount()

ilObjQuestionPool::_getQuestionCount (   $questionpool_id,
  $complete_questions_only = FALSE 
)

Returns the number of questions in a question pool.

Parameters
integer$questonpool_idObject id of the questionpool to examine
boolean$complete_questions_onlyIf set to TRUE, returns only the number of complete questions in the questionpool. Default is FALSE
Returns
integer The number of questions in the questionpool object public

Definition at line 923 of file class.ilObjQuestionPool.php.

References $ilDB, $result, and $row.

Referenced by _updateQuestionCount().

924  {
925  global $ilDB;
926  if ($complete_questions_only)
927  {
928  $result = $ilDB->queryF("SELECT COUNT(question_id) question_count FROM qpl_questions WHERE obj_fi = %s AND qpl_questions.tstamp > 0 AND original_id IS NULL AND complete = %s",
929  array('integer', 'text'),
930  array($questionpool_id, 1)
931  );
932  }
933  else
934  {
935  $result = $ilDB->queryF("SELECT COUNT(question_id) question_count FROM qpl_questions WHERE obj_fi = %s AND qpl_questions.tstamp > 0 AND original_id IS NULL",
936  array('integer'),
937  array($questionpool_id)
938  );
939  }
940  $row = $ilDB->fetchAssoc($result);
941  return $row["question_count"];
942  }
$result
global $ilDB
+ Here is the caller graph for this function:

◆ _getQuestionTypes()

& ilObjQuestionPool::_getQuestionTypes (   $all_tags = FALSE,
  $fixOrder = false 
)

Definition at line 1481 of file class.ilObjQuestionPool.php.

References $ilDB, $ilLog, ilObject\$lng, $result, $row, ilObjAssessmentFolder\_getForbiddenQuestionTypes(), ilPlugin\getPluginObject(), IL_COMP_MODULE, ilAssQuestionTypeOrderer\ORDER_MODE_ALPHA, and ilAssQuestionTypeOrderer\ORDER_MODE_FIX.

Referenced by _getSelfAssessmentQuestionTypes(), getQuestionTypes(), ilTestQuestionBrowserTableGUI\initFilter(), ilQuestionBrowserTableGUI\initFilter(), ilObjAssessmentFolderGUI\saveSettingsObject(), and ilObjAssessmentFolderGUI\settingsObject().

1482  {
1483  global $ilDB;
1484  global $lng;
1485 
1486  include_once "./Modules/Test/classes/class.ilObjAssessmentFolder.php";
1488  $lng->loadLanguageModule("assessment");
1489  $result = $ilDB->query("SELECT * FROM qpl_qst_type");
1490  $types = array();
1491  while ($row = $ilDB->fetchAssoc($result))
1492  {
1493  if ($all_tags || (!in_array($row["question_type_id"], $forbidden_types)))
1494  {
1495  global $ilLog;
1496 
1497  if ($row["plugin"] == 0)
1498  {
1499  $types[$lng->txt($row["type_tag"])] = $row;
1500  }
1501  else
1502  {
1503  global $ilPluginAdmin;
1504  $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, "TestQuestionPool", "qst");
1505  foreach ($pl_names as $pl_name)
1506  {
1507  $pl = ilPlugin::getPluginObject(IL_COMP_MODULE, "TestQuestionPool", "qst", $pl_name);
1508  if (strcmp($pl->getQuestionType(), $row["type_tag"]) == 0)
1509  {
1510  $types[$pl->getQuestionTypeTranslation()] = $row;
1511  }
1512  }
1513  }
1514  }
1515  }
1516 
1517  require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionTypeOrderer.php';
1519  $orderer = new ilAssQuestionTypeOrderer($types, $orderMode);
1520  $types = $orderer->getOrderedTypes();
1521 
1522  return $types;
1523  }
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get plugin object.
const ORDER_MODE_FIX
order mode with fixed priority for ordering
const ORDER_MODE_ALPHA
order mode that orders by alphanumerical priority
$result
_getForbiddenQuestionTypes()
Returns the forbidden questiontypes for ILIAS.
const IL_COMP_MODULE
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _getSelfAssessmentQuestionTypes()

static& ilObjQuestionPool::_getSelfAssessmentQuestionTypes (   $all_tags = FALSE)
static

Get all self assessment question types.

Todo:
Make it more flexible

Definition at line 1574 of file class.ilObjQuestionPool.php.

References $t, and _getQuestionTypes().

Referenced by ilCopySelfAssQuestionTableGUI\getQuestions(), and ilPCQuestionGUI\insert().

1575  {
1576 /* $allowed_types = array(
1577  "assSingleChoice" => 1,
1578  "assMultipleChoice" => 2,
1579  "assClozeTest" => 3,
1580  "assMatchingQuestion" => 4,
1581  "assOrderingQuestion" => 5,
1582  "assOrderingHorizontal" => 6,
1583  "assImagemapQuestion" => 7,
1584  "assTextQuestion" => 8,
1585  "assTextSubset" => 9,
1586  "assErrorText" => 10
1587  );*/
1588  $allowed_types = array(
1589  "assSingleChoice" => 1,
1590  "assMultipleChoice" => 2,
1591  "assKprimChoice" => 3,
1592  "assClozeTest" => 4,
1593  "assMatchingQuestion" => 5,
1594  "assOrderingQuestion" => 6,
1595  "assOrderingHorizontal" => 7,
1596  "assImagemapQuestion" => 8,
1597  "assTextSubset" => 9,
1598  "assErrorText" => 10
1599  );
1600  $satypes = array();
1601  $qtypes = ilObjQuestionPool::_getQuestionTypes($all_tags);
1602  foreach($qtypes as $k => $t)
1603  {
1604  //if (in_array($t["type_tag"], $allowed_types))
1605  if (isset($allowed_types[$t["type_tag"]]))
1606  {
1607  $t["order"] = $allowed_types[$t["type_tag"]];
1608  $satypes[$k] = $t;
1609  }
1610  }
1611  return $satypes;
1612  }
& _getQuestionTypes($all_tags=FALSE, $fixOrder=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _hasEqualPoints()

ilObjQuestionPool::_hasEqualPoints (   $a_obj_id,
  $is_reference = FALSE 
)

Checks a question pool for questions with the same maximum points.

Parameters
integer$a_obj_idObject id of the question pool private

Definition at line 1028 of file class.ilObjQuestionPool.php.

References $ilDB, $result, and $row.

Referenced by _getAvailableQuestionpools().

1029  {
1030  global $ilDB;
1031 
1032  if ($is_reference)
1033  {
1034  $result = $ilDB->queryF("SELECT count(DISTINCT qpl_questions.points) equal_points FROM qpl_questions, object_reference WHERE object_reference.ref_id = %s AND qpl_questions.tstamp > 0 AND object_reference.obj_id = qpl_questions.obj_fi AND qpl_questions.original_id IS NULL",
1035  array('integer'),
1036  array($a_obj_id)
1037  );
1038  }
1039  else
1040  {
1041  $result = $ilDB->queryF("SELECT count(DISTINCT points) equal_points FROM qpl_questions WHERE obj_fi = %s AND qpl_questions.tstamp > 0 AND qpl_questions.original_id IS NULL",
1042  array('integer'),
1043  array($a_obj_id)
1044  );
1045  }
1046  if ($result->numRows() == 1)
1047  {
1048  $row = $ilDB->fetchAssoc($result);
1049  if ($row["equal_points"] == 1)
1050  {
1051  return 1;
1052  }
1053  else
1054  {
1055  return 0;
1056  }
1057  }
1058  return 0;
1059  }
$result
global $ilDB
+ Here is the caller graph for this function:

◆ _isWriteable()

ilObjQuestionPool::_isWriteable (   $object_id,
  $user_id 
)

Returns true, if the question pool is writeable by a given user.

Parameters
integer$object_idThe object id of the question pool object
integer$user_idThe database id of the user public

Definition at line 1186 of file class.ilObjQuestionPool.php.

References ilObject\$ref_id, ilObject\_getAllReferences(), and ilObject\_hasUntrashedReference().

Referenced by assQuestion\_isWriteable().

1187  {
1188  global $rbacsystem;
1189 
1190  include_once "./Services/Object/classes/class.ilObject.php";
1191  $refs = ilObject::_getAllReferences($object_id);
1192  if (count($refs))
1193  {
1194  foreach ($refs as $ref_id)
1195  {
1196  if ($rbacsystem->checkAccess("write", $ref_id) && (ilObject::_hasUntrashedReference($object_id)))
1197  {
1198  return true;
1199  }
1200  }
1201  }
1202  return false;
1203  }
static _getAllReferences($a_id)
get all reference ids of object
_hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _lookupOnline()

ilObjQuestionPool::_lookupOnline (   $a_obj_id,
  $is_reference = FALSE 
)

Definition at line 996 of file class.ilObjQuestionPool.php.

References $ilDB, $result, and $row.

Referenced by ilObjQuestionPoolListGUI\getProperties(), and ilPoolSelectorGUI\isNodeVisible().

997  {
998  global $ilDB;
999 
1000  if ($is_reference)
1001  {
1002  $result = $ilDB->queryF("SELECT qpl_questionpool.isonline FROM qpl_questionpool,object_reference WHERE object_reference.ref_id = %s AND object_reference.obj_id = qpl_questionpool.obj_fi",
1003  array('integer'),
1004  array($a_obj_id)
1005  );
1006  }
1007  else
1008  {
1009  $result = $ilDB->queryF("SELECT isonline FROM qpl_questionpool WHERE obj_fi = %s",
1010  array('integer'),
1011  array($a_obj_id)
1012  );
1013  }
1014  if ($result->numRows() == 1)
1015  {
1016  $row = $ilDB->fetchAssoc($result);
1017  return $row["isonline"];
1018  }
1019  return 0;
1020  }
$result
global $ilDB
+ Here is the caller graph for this function:

◆ _setImportDirectory()

ilObjQuestionPool::_setImportDirectory (   $a_import_dir = null)

set import directory

Definition at line 793 of file class.ilObjQuestionPool.php.

References $_SESSION.

Referenced by ilTestQuestionPoolImporter\importXmlRepresentation(), and ilObjQuestionPoolGUI\uploadQplObject().

794  {
795  if (strlen($a_import_dir))
796  {
797  $_SESSION["qpl_import_dir"] = $a_import_dir;
798  }
799  else
800  {
801  unset($_SESSION["qpl_import_dir"]);
802  }
803  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']
+ Here is the caller graph for this function:

◆ _updateQuestionCount()

static ilObjQuestionPool::_updateQuestionCount (   $object_id)
static

Updates the number of available questions for a question pool in the database.

Parameters
integer$object_idObject id of the questionpool to examine public

Definition at line 1637 of file class.ilObjQuestionPool.php.

References $ilDB, $result, and _getQuestionCount().

Referenced by assQuestion\delete(), duplicateQuestion(), pasteFromClipboard(), and assQuestion\saveToDb().

1638  {
1639  global $ilDB;
1640  $result = $ilDB->manipulateF("UPDATE qpl_questionpool SET questioncount = %s, tstamp = %s WHERE obj_fi = %s",
1641  array('integer','integer','integer'),
1642  array(ilObjQuestionPool::_getQuestionCount($object_id, TRUE), time(), $object_id)
1643  );
1644  }
$result
global $ilDB
_getQuestionCount($questionpool_id, $complete_questions_only=FALSE)
Returns the number of questions in a question pool.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addQuestionChangeListeners()

ilObjQuestionPool::addQuestionChangeListeners ( assQuestion  $question)
Parameters
assQuestion$question

Definition at line 266 of file class.ilObjQuestionPool.php.

References $ilDB, assQuestion\addQuestionChangeListener(), ilObject\getId(), and ilObjTest\getPoolQuestionChangeListeners().

Referenced by deleteQuestion().

267  {
268  global $ilDB;
269 
270  foreach(ilObjTest::getPoolQuestionChangeListeners($ilDB, $this->getId()) as $listener)
271  {
272  $question->addQuestionChangeListener($listener);
273  }
274  }
getId()
get object id public
static getPoolQuestionChangeListeners(ilDB $db, $poolObjId)
global $ilDB
addQuestionChangeListener(ilQuestionChangeListener $listener)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cleanupClipboard()

ilObjQuestionPool::cleanupClipboard (   $deletedQuestionId)

Definition at line 1159 of file class.ilObjQuestionPool.php.

References $_SESSION.

1160  {
1161  if( !isset($_SESSION['qpl_clipboard']) )
1162  {
1163  return;
1164  }
1165 
1166  if( !isset($_SESSION['qpl_clipboard'][$deletedQuestionId]) )
1167  {
1168  return;
1169  }
1170 
1171  unset($_SESSION['qpl_clipboard'][$deletedQuestionId]);
1172 
1173  if( !count($_SESSION['qpl_clipboard']) )
1174  {
1175  unset($_SESSION['qpl_clipboard']);
1176  }
1177  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']

◆ cloneObject()

ilObjQuestionPool::cloneObject (   $a_target_id,
  $a_copy_id = 0 
)

Creates a 1:1 copy of the object and places the copy in a given repository.

public

Definition at line 1426 of file class.ilObjQuestionPool.php.

References $ilLog, ilCopyWizardOptions\_getInstance(), ilObject\getId(), getOnline(), getQplQuestions(), getShowTaxonomies(), and ilObject\getType().

1427  {
1428  global $ilLog;
1429 
1430  $newObj = parent::cloneObject($a_target_id,$a_copy_id);
1431 
1432  //copy online status if object is not the root copy object
1433  $cp_options = ilCopyWizardOptions::_getInstance($a_copy_id);
1434 
1435  if(!$cp_options->isRootNode($this->getRefId()))
1436  {
1437  $newObj->setOnline($this->getOnline());
1438  }
1439 
1440  $newObj->setShowTaxonomies($this->getShowTaxonomies());
1441  $newObj->saveToDb();
1442 
1443  // clone the questions in the question pool
1444  $questions =& $this->getQplQuestions();
1445  $questionIdsMap = array();
1446  foreach ($questions as $question_id)
1447  {
1448  $newQuestionId = $newObj->copyQuestion($question_id, $newObj->getId());
1449  $questionIdsMap[$question_id] = $newQuestionId;
1450  }
1451 
1452  // clone meta data
1453  include_once "./Services/MetaData/classes/class.ilMD.php";
1454  $md = new ilMD($this->getId(),0,$this->getType());
1455  $new_md =& $md->cloneMD($newObj->getId(),0,$newObj->getType());
1456 
1457  // update the metadata with the new title of the question pool
1458  $newObj->updateMetaData();
1459 
1460  require_once 'Modules/TestQuestionPool/classes/class.ilQuestionPoolTaxonomiesDuplicator.php';
1461  $duplicator = new ilQuestionPoolTaxonomiesDuplicator();
1462  $duplicator->setSourceObjId($this->getId());
1463  $duplicator->setSourceObjType($this->getType());
1464  $duplicator->setTargetObjId($newObj->getId());
1465  $duplicator->setTargetObjType($newObj->getType());
1466  $duplicator->setQuestionIdMapping($questionIdsMap);
1467  $duplicator->duplicate();
1468 
1469  $duplicatedTaxKeyMap = $duplicator->getDuplicatedTaxonomiesKeysMap();
1470  $newObj->setNavTaxonomyId($duplicatedTaxKeyMap->getMappedTaxonomyId($this->getNavTaxonomyId()));
1471  $newObj->saveToDb();
1472 
1473  return $newObj;
1474  }
static _getInstance($a_copy_id)
Get instance of copy wizard options.
getId()
get object id public
getType()
get object type public
+ Here is the call graph for this function:

◆ copyQuestion()

ilObjQuestionPool::copyQuestion (   $question_id,
  $questionpool_to 
)

Copies a question into another question pool.

Parameters
integer$question_idDatabase id of the question
integer$questionpool_toDatabase id of the target questionpool public

Definition at line 469 of file class.ilObjQuestionPool.php.

References createQuestion(), duplicateQuestion(), and ilObject\getId().

Referenced by pasteFromClipboard().

470  {
471  $question_gui =& $this->createQuestion("", $question_id);
472  if ($question_gui->object->getObjId() == $questionpool_to)
473  {
474  // the question is copied into the same question pool
475  return $this->duplicateQuestion($question_id);
476  }
477  else
478  {
479  // the question is copied into another question pool
480  $newtitle = $question_gui->object->getTitle();
481  if ($question_gui->object->questionTitleExists($this->getId(), $question_gui->object->getTitle()))
482  {
483  $counter = 2;
484  while ($question_gui->object->questionTitleExists($this->getId(), $question_gui->object->getTitle() . " ($counter)"))
485  {
486  $counter++;
487  }
488  $newtitle = $question_gui->object->getTitle() . " ($counter)";
489  }
490  return $question_gui->object->copyObject($this->getId(), $newtitle);
491  }
492  }
duplicateQuestion($question_id)
Duplicates a question for a questionpool.
getId()
get object id public
& createQuestion($question_type, $question_id=-1)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyToClipboard()

ilObjQuestionPool::copyToClipboard (   $question_id)

Copies a question to the clipboard.

Parameters
integer$question_idObject id of the question private

Definition at line 1135 of file class.ilObjQuestionPool.php.

References $_SESSION.

1136  {
1137  if (!array_key_exists("qpl_clipboard", $_SESSION))
1138  {
1139  $_SESSION["qpl_clipboard"] = array();
1140  }
1141  $_SESSION["qpl_clipboard"][$question_id] = array("question_id" => $question_id, "action" => "copy");
1142  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']

◆ create()

ilObjQuestionPool::create (   $a_upload = false)

create questionpool object

Definition at line 61 of file class.ilObjQuestionPool.php.

References ilObject\createMetaData().

62  {
63  parent::create();
64 
65  // meta data will be created by
66  // import parser
67  if (!$a_upload)
68  {
69  $this->createMetaData();
70  }
71  }
createMetaData()
create meta data entry
+ Here is the call graph for this function:

◆ createExportDirectory()

ilObjQuestionPool::createExportDirectory ( )

creates data directory for export files (data_dir/qpl_data/qpl_<id>/export, depending on data directory that is set in ILIAS setup/ini)

Definition at line 711 of file class.ilObjQuestionPool.php.

References ilUtil\getDataDir(), getExportDirectory(), ilObject\getId(), and ilUtil\makeDir().

712  {
713  include_once "./Services/Utilities/classes/class.ilUtil.php";
714  $qpl_data_dir = ilUtil::getDataDir()."/qpl_data";
715  ilUtil::makeDir($qpl_data_dir);
716  if(!is_writable($qpl_data_dir))
717  {
718  $this->ilias->raiseError("Questionpool Data Directory (".$qpl_data_dir
719  .") not writeable.",$this->ilias->error_obj->FATAL);
720  }
721 
722  // create learning module directory (data_dir/lm_data/lm_<id>)
723  $qpl_dir = $qpl_data_dir."/qpl_".$this->getId();
724  ilUtil::makeDir($qpl_dir);
725  if(!@is_dir($qpl_dir))
726  {
727  $this->ilias->raiseError("Creation of Questionpool Directory failed.",$this->ilias->error_obj->FATAL);
728  }
729  // create Export subdirectory (data_dir/lm_data/lm_<id>/Export)
730  ilUtil::makeDir($this->getExportDirectory('xls'));
731  if(!@is_dir($this->getExportDirectory('xls')))
732  {
733  $this->ilias->raiseError("Creation of Export Directory failed.",$this->ilias->error_obj->FATAL);
734  }
735  ilUtil::makeDir($this->getExportDirectory('zip'));
736  if(!@is_dir($this->getExportDirectory('zip')))
737  {
738  $this->ilias->raiseError("Creation of Export Directory failed.",$this->ilias->error_obj->FATAL);
739  }
740  }
getExportDirectory($type="")
get export directory of questionpool
getId()
get object id public
redirection script todo: (a better solution should control the processing via a xml file) ...
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:

◆ createQuestion()

& ilObjQuestionPool::createQuestion (   $question_type,
  $question_id = -1 
)

Definition at line 427 of file class.ilObjQuestionPool.php.

References assQuestion\_includeClass(), and assQuestion\_instanciateQuestionGUI().

Referenced by copyQuestion(), duplicateQuestion(), getDeleteableQuestionDetails(), and toXML().

428  {
429  include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
430  if ($question_id > 0) return assQuestion::_instanciateQuestionGUI($question_id);
431  assQuestion::_includeClass($question_type, 1);
432  $question_type_gui = $question_type . "GUI";
433  $question_gui =& new $question_type_gui();
434  return $question_gui;
435  }
static _includeClass($question_type, $gui=0)
Include the php class file for a given question type.
static & _instanciateQuestionGUI($question_id)
Creates an instance of a question gui with a given question id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createReference()

ilObjQuestionPool::createReference ( )

Creates a database reference id for the object (saves the object to the database and creates a reference id in the database)

public

Definition at line 79 of file class.ilObjQuestionPool.php.

References $result, and saveToDb().

80  {
81  $result = parent::createReference();
82  $this->saveToDb();
83  return $result;
84  }
$result
saveToDb()
Saves a ilObjQuestionpool object to a database.
+ Here is the call graph for this function:

◆ delete()

ilObjQuestionPool::delete ( )

delete object and all related data

public

Returns
boolean true if all object data were removed; false if only a references were removed

Definition at line 140 of file class.ilObjQuestionPool.php.

References ilObject\deleteMetaData(), and deleteQuestionpool().

141  {
142  // always call parent delete function first!!
143  if (!parent::delete())
144  {
145  return false;
146  }
147 
148  // delete meta data
149  $this->deleteMetaData();
150 
151  //put here your module specific stuff
152  $this->deleteQuestionpool();
153 
154  return true;
155  }
deleteMetaData()
delete meta data entry
+ Here is the call graph for this function:

◆ deleteQuestion()

ilObjQuestionPool::deleteQuestion (   $question_id)

Deletes a question from the question pool.

Parameters
integer$question_idThe database id of the question private

Definition at line 253 of file class.ilObjQuestionPool.php.

References assQuestion\_instanciateQuestion(), and addQuestionChangeListeners().

Referenced by deleteQuestionpool().

254  {
255  include_once "./Modules/Test/classes/class.ilObjTest.php";
256  include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
257 
258  $question = assQuestion::_instanciateQuestion($question_id);
259  $this->addQuestionChangeListeners($question);
260  $question->delete($question_id);
261  }
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
addQuestionChangeListeners(assQuestion $question)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteQuestionpool()

ilObjQuestionPool::deleteQuestionpool ( )

Definition at line 157 of file class.ilObjQuestionPool.php.

References ilUtil\delDir(), deleteQuestion(), getAllQuestions(), ilUtil\getDataDir(), and ilObject\getId().

Referenced by delete().

158  {
159  $questions =& $this->getAllQuestions();
160 
161  if (count($questions))
162  {
163  foreach ($questions as $question_id)
164  {
165  $this->deleteQuestion($question_id);
166  }
167  }
168 
169  // delete export files
170  include_once "./Services/Utilities/classes/class.ilUtil.php";
171  $qpl_data_dir = ilUtil::getDataDir()."/qpl_data";
172  $directory = $qpl_data_dir."/qpl_".$this->getId();
173  if (is_dir($directory))
174  {
175  include_once "./Services/Utilities/classes/class.ilUtil.php";
176  ilUtil::delDir($directory);
177  }
178  }
deleteQuestion($question_id)
Deletes a question from the question pool.
getId()
get object id public
& getAllQuestions()
Retrieve an array containing all question ids of the questionpool.
static getDataDir()
get data directory (outside webspace)
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ duplicateQuestion()

ilObjQuestionPool::duplicateQuestion (   $question_id)

Duplicates a question for a questionpool.

Parameters
integer$question_idThe database id of the question public

Definition at line 443 of file class.ilObjQuestionPool.php.

References _updateQuestionCount(), createQuestion(), and ilObject\getId().

Referenced by copyQuestion().

444  {
445  $question =& $this->createQuestion("", $question_id);
446  $newtitle = $question->object->getTitle();
447  if ($question->object->questionTitleExists($this->getId(), $question->object->getTitle()))
448  {
449  $counter = 2;
450  while ($question->object->questionTitleExists($this->getId(), $question->object->getTitle() . " ($counter)"))
451  {
452  $counter++;
453  }
454  $newtitle = $question->object->getTitle() . " ($counter)";
455  }
456  $new_id = $question->object->duplicate(false, $newtitle);
457  // update question count of question pool
459  return $new_id;
460  }
static _updateQuestionCount($object_id)
Updates the number of available questions for a question pool in the database.
getId()
get object id public
& createQuestion($question_type, $question_id=-1)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportFileItems()

ilObjQuestionPool::exportFileItems (   $a_target_dir,
$expLog 
)

export files of file itmes

Definition at line 693 of file class.ilObjQuestionPool.php.

Referenced by exportPagesXML().

694  {
695  include_once("./Modules/File/classes/class.ilObjFile.php");
696 
697  foreach ($this->file_ids as $file_id)
698  {
699  $expLog->write(date("[y-m-d H:i:s] ")."File Item ".$file_id);
700  $file_obj = new ilObjFile($file_id, false);
701  $file_obj->export($a_target_dir);
702  unset($file_obj);
703  }
704  }
Class ilObjFile.
+ Here is the caller graph for this function:

◆ exportPagesXML()

ilObjQuestionPool::exportPagesXML ( $a_xml_writer,
  $a_inst,
  $a_target_dir,
$expLog,
  $questions 
)

export pages of test to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

Definition at line 536 of file class.ilObjQuestionPool.php.

References $ilBench, exportFileItems(), exportXMLMediaObjects(), exportXMLMetaData(), and exportXMLPageObjects().

537  {
538  global $ilBench;
539 
540  $this->mob_ids = array();
541  $this->file_ids = array();
542 
543  $attrs = array();
544  $attrs["Type"] = "Questionpool_Test";
545  $a_xml_writer->xmlStartTag("ContentObject", $attrs);
546 
547  // MetaData
548  $this->exportXMLMetaData($a_xml_writer);
549 
550  // PageObjects
551  $expLog->write(date("[y-m-d H:i:s] ")."Start Export Page Objects");
552  $ilBench->start("ContentObjectExport", "exportPageObjects");
553  $this->exportXMLPageObjects($a_xml_writer, $a_inst, $expLog, $questions);
554  $ilBench->stop("ContentObjectExport", "exportPageObjects");
555  $expLog->write(date("[y-m-d H:i:s] ")."Finished Export Page Objects");
556 
557  // MediaObjects
558  $expLog->write(date("[y-m-d H:i:s] ")."Start Export Media Objects");
559  $ilBench->start("ContentObjectExport", "exportMediaObjects");
560  $this->exportXMLMediaObjects($a_xml_writer, $a_inst, $a_target_dir, $expLog);
561  $ilBench->stop("ContentObjectExport", "exportMediaObjects");
562  $expLog->write(date("[y-m-d H:i:s] ")."Finished Export Media Objects");
563 
564  // FileItems
565  $expLog->write(date("[y-m-d H:i:s] ")."Start Export File Items");
566  $ilBench->start("ContentObjectExport", "exportFileItems");
567  $this->exportFileItems($a_target_dir, $expLog);
568  $ilBench->stop("ContentObjectExport", "exportFileItems");
569  $expLog->write(date("[y-m-d H:i:s] ")."Finished Export File Items");
570 
571  $a_xml_writer->xmlEndTag("ContentObject");
572  }
exportXMLMetaData(&$a_xml_writer)
export content objects meta data to xml (see ilias_co.dtd)
exportXMLPageObjects(&$a_xml_writer, $a_inst, &$expLog, $questions)
export page objects to xml (see ilias_co.dtd)
exportFileItems($a_target_dir, &$expLog)
export files of file itmes
exportXMLMediaObjects(&$a_xml_writer, $a_inst, $a_target_dir, &$expLog)
export media objects to xml (see ilias_co.dtd)
global $ilBench
Definition: ilias.php:18
+ Here is the call graph for this function:

◆ exportXMLMediaObjects()

ilObjQuestionPool::exportXMLMediaObjects ( $a_xml_writer,
  $a_inst,
  $a_target_dir,
$expLog 
)

export media objects to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

Definition at line 672 of file class.ilObjQuestionPool.php.

References ilObjMediaObject\_exists().

Referenced by exportPagesXML().

673  {
674  include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
675 
676  foreach ($this->mob_ids as $mob_id)
677  {
678  $expLog->write(date("[y-m-d H:i:s] ")."Media Object ".$mob_id);
679  if (ilObjMediaObject::_exists($mob_id))
680  {
681  $media_obj = new ilObjMediaObject($mob_id);
682  $media_obj->exportXML($a_xml_writer, $a_inst);
683  $media_obj->exportFiles($a_target_dir);
684  unset($media_obj);
685  }
686  }
687  }
static _exists($a_id)
checks wether a lm content object with specified id exists or not
Class ilObjMediaObject.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportXMLMetaData()

ilObjQuestionPool::exportXMLMetaData ( $a_xml_writer)

export content objects meta data to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

Definition at line 580 of file class.ilObjQuestionPool.php.

References ilObject\getId(), and ilObject\getType().

Referenced by exportPagesXML().

581  {
582  include_once("Services/MetaData/classes/class.ilMD2XML.php");
583  $md2xml = new ilMD2XML($this->getId(), 0, $this->getType());
584  $md2xml->setExportMode(true);
585  $md2xml->startExport();
586  $a_xml_writer->appendXML($md2xml->getXML());
587  }
getId()
get object id public
getType()
get object type public
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportXMLPageObjects()

ilObjQuestionPool::exportXMLPageObjects ( $a_xml_writer,
  $a_inst,
$expLog,
  $questions 
)

export page objects to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

Definition at line 607 of file class.ilObjQuestionPool.php.

References $ilBench, and ilPCFileList\collectFileItems().

Referenced by exportPagesXML().

608  {
609  global $ilBench;
610 
611  include_once "./Modules/LearningModule/classes/class.ilLMPageObject.php";
612 
613  foreach ($questions as $question_id)
614  {
615  $ilBench->start("ContentObjectExport", "exportPageObject");
616  $expLog->write(date("[y-m-d H:i:s] ")."Page Object ".$question_id);
617 
618  $attrs = array();
619  $a_xml_writer->xmlStartTag("PageObject", $attrs);
620 
621 
622  // export xml to writer object
623  $ilBench->start("ContentObjectExport", "exportPageObject_XML");
624  include_once("./Modules/TestQuestionPool/classes/class.ilAssQuestionPage.php");
625  $page_object = new ilAssQuestionPage($question_id);
626  $page_object->buildDom();
627  $page_object->insertInstIntoIDs($a_inst);
628  $mob_ids = $page_object->collectMediaObjects(false);
629  require_once 'Services/COPage/classes/class.ilPCFileList.php';
630  $file_ids = ilPCFileList::collectFileItems($page_object, $page_object->getDomDoc());
631  $xml = $page_object->getXMLFromDom(false, false, false, "", true);
632  $xml = str_replace("&","&amp;", $xml);
633  $a_xml_writer->appendXML($xml);
634  $page_object->freeDom();
635  unset ($page_object);
636 
637  $ilBench->stop("ContentObjectExport", "exportPageObject_XML");
638 
639  // collect media objects
640  $ilBench->start("ContentObjectExport", "exportPageObject_CollectMedia");
641  //$mob_ids = $page_obj->getMediaObjectIDs();
642  foreach($mob_ids as $mob_id)
643  {
644  $this->mob_ids[$mob_id] = $mob_id;
645  }
646  $ilBench->stop("ContentObjectExport", "exportPageObject_CollectMedia");
647 
648  // collect all file items
649  $ilBench->start("ContentObjectExport", "exportPageObject_CollectFileItems");
650  //$file_ids = $page_obj->getFileItemIds();
651  foreach($file_ids as $file_id)
652  {
653  $this->file_ids[$file_id] = $file_id;
654  }
655  $ilBench->stop("ContentObjectExport", "exportPageObject_CollectFileItems");
656 
657  $a_xml_writer->xmlEndTag("PageObject");
658  //unset($page_obj);
659 
660  $ilBench->stop("ContentObjectExport", "exportPageObject");
661 
662 
663  }
664  }
Question page object.
static collectFileItems($a_page, $a_domdoc)
Get all file items that are used within the page.
global $ilBench
Definition: ilias.php:18
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAllQuestionIds()

& ilObjQuestionPool::getAllQuestionIds ( )

Definition at line 843 of file class.ilObjQuestionPool.php.

References $ilDB, $row, ilObject\getId(), and isPluginActive().

844  {
845  global $ilDB;
846 
847  $query_result = $ilDB->queryF("SELECT question_id, qpl_qst_type.type_tag, qpl_qst_type.plugin FROM qpl_questions, qpl_qst_type WHERE original_id IS NULL AND qpl_questions.tstamp > 0 AND obj_fi = %s AND complete = %s AND qpl_questions.question_type_fi = qpl_qst_type.question_type_id",
848  array('integer','text'),
849  array($this->getId(), 1)
850  );
851  $questions = array();
852  if ($query_result->numRows())
853  {
854  while ($row = $ilDB->fetchAssoc($query_result))
855  {
856  if ($row["plugin"])
857  {
858  if ($this->isPluginActive($row["type_tag"]))
859  {
860  array_push($questions, $row["question_id"]);
861  }
862  }
863  else
864  {
865  array_push($questions, $row["question_id"]);
866  }
867  }
868  }
869  return $questions;
870  }
getId()
get object id public
isPluginActive($a_pname)
Checks wheather or not a question plugin with a given name is active.
global $ilDB
+ Here is the call graph for this function:

◆ getAllQuestions()

& ilObjQuestionPool::getAllQuestions ( )

Retrieve an array containing all question ids of the questionpool.

Returns
array An array containing all question ids of the questionpool

Definition at line 827 of file class.ilObjQuestionPool.php.

References $ilDB, $result, $row, and ilObject\getId().

Referenced by deleteQuestionpool().

828  {
829  global $ilDB;
830 
831  $result = $ilDB->queryF("SELECT question_id FROM qpl_questions WHERE obj_fi = %s AND qpl_questions.tstamp > 0 AND original_id IS NULL",
832  array('integer'),
833  array($this->getId())
834  );
835  $questions = array();
836  while ($row = $ilDB->fetchAssoc($result))
837  {
838  array_push($questions, $row["question_id"]);
839  }
840  return $questions;
841  }
$result
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDeleteableQuestionDetails()

& ilObjQuestionPool::getDeleteableQuestionDetails (   $question_ids)

Returns an array containing the qpl_question and qpl_qst_type fields of deleteable questions for an array of question ids.

Parameters
array$question_idsAn array containing the question ids
Returns
array An array containing the details of the requested questions public

Definition at line 1236 of file class.ilObjQuestionPool.php.

References $ilDB, $ilLog, $result, $row, assQuestion\_isUsedInRandomTest(), and createQuestion().

1237  {
1238  global $ilDB, $ilLog;
1239 
1240  $result = array();
1241  $query_result = $ilDB->query("SELECT qpl_questions.*, qpl_qst_type.type_tag FROM qpl_questions, qpl_qst_type WHERE qpl_questions.question_type_fi = qpl_qst_type.question_type_id AND " . $ilDB->in('qpl_questions.question_id', $question_ids, false, 'integer') . " ORDER BY qpl_questions.title");
1242  if ($query_result->numRows())
1243  {
1244  include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
1245  while ($row = $ilDB->fetchAssoc($query_result))
1246  {
1247  if (!assQuestion::_isUsedInRandomTest($row["question_id"]))
1248  {
1249  array_push($result, $row);
1250  }
1251  else
1252  {
1253  // the question was used in a random test prior to ILIAS 3.7 so it was inserted
1254  // as a reference to the original question pool object and not as a copy. To allow
1255  // the deletion of the question pool object, a copy must be created and all database references
1256  // of the original question must changed with the reference of the copy
1257 
1258  // 1. Create a copy of the original question
1259  $question =& $this->createQuestion("", $row["question_id"]);
1260  $duplicate_id = $question->object->duplicate(true);
1261  if ($duplicate_id > 0)
1262  {
1263  // 2. replace the question id in the solutions
1264  $affectedRows = $ilDB->manipulateF("UPDATE tst_solutions SET question_fi = %s WHERE question_fi = %s",
1265  array('integer','integer'),
1266  array($duplicate_id, $row["question_id"])
1267  );
1268 
1269  // 3. replace the question id in the question list of random tests
1270  $affectedRows = $ilDB->manipulateF("UPDATE tst_test_rnd_qst SET question_fi = %s WHERE question_fi = %s",
1271  array('integer','integer'),
1272  array($duplicate_id, $row["question_id"])
1273  );
1274 
1275  // 4. replace the question id in the test results
1276  $affectedRows = $ilDB->manipulateF("UPDATE tst_test_result SET question_fi = %s WHERE question_fi = %s",
1277  array('integer','integer'),
1278  array($duplicate_id, $row["question_id"])
1279  );
1280 
1281  // 5. replace the question id in the test&assessment log
1282  $affectedRows = $ilDB->manipulateF("UPDATE ass_log SET question_fi = %s WHERE question_fi = %s",
1283  array('integer','integer'),
1284  array($duplicate_id, $row["question_id"])
1285  );
1286 
1287  // 6. The original question can be deleted, so add it to the list of questions
1288  array_push($result, $row);
1289  }
1290  }
1291  }
1292  }
1293  return $result;
1294  }
$result
& createQuestion($question_type, $question_id=-1)
_isUsedInRandomTest($question_id="")
Checks whether the question is used in a random test or not.
global $ilDB
+ Here is the call graph for this function:

◆ getDescription()

ilObjQuestionPool::getDescription ( )

get description of content object

Returns
string description

Definition at line 377 of file class.ilObjQuestionPool.php.

378  {
379  return parent::getDescription();
380  }

◆ getExportDirectory()

ilObjQuestionPool::getExportDirectory (   $type = "")

get export directory of questionpool

Definition at line 745 of file class.ilObjQuestionPool.php.

References ilObject\$type, and ilUtil\getDataDir().

Referenced by createExportDirectory().

746  {
747  include_once "./Services/Utilities/classes/class.ilUtil.php";
748  switch ($type)
749  {
750  case 'xls':
751  case 'zip':
752  $export_dir = ilUtil::getDataDir()."/qpl_data"."/qpl_".$this->getId()."/export_$type";
753  break;
754  default:
755  $export_dir = ilUtil::getDataDir()."/qpl_data"."/qpl_".$this->getId()."/export";
756  break;
757  }
758  return $export_dir;
759  }
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getImportDirectory()

ilObjQuestionPool::getImportDirectory ( )

Definition at line 817 of file class.ilObjQuestionPool.php.

References _getImportDirectory().

818  {
820  }
_getImportDirectory()
get import directory of lm
+ Here is the call graph for this function:

◆ getImportMapping()

ilObjQuestionPool::getImportMapping ( )

get array of (two) new created questions for import id

Definition at line 876 of file class.ilObjQuestionPool.php.

877  {
878  if (!is_array($this->import_mapping))
879  {
880  return array();
881  }
882  else
883  {
884  return $this->import_mapping;
885  }
886  }

◆ getNavTaxonomyId()

ilObjQuestionPool::getNavTaxonomyId ( )

Definition at line 986 of file class.ilObjQuestionPool.php.

References $navTaxonomyId.

Referenced by isNavTaxonomyActive(), and saveToDb().

987  {
988  return $this->navTaxonomyId;
989  }
+ Here is the caller graph for this function:

◆ getOnline()

ilObjQuestionPool::getOnline ( )

Definition at line 965 of file class.ilObjQuestionPool.php.

References $online.

Referenced by cloneObject(), and saveToDb().

966  {
967  if (strcmp($this->online, "") == 0) $this->online = "0";
968  return $this->online;
969  }
+ Here is the caller graph for this function:

◆ getPrintviewQuestions()

ilObjQuestionPool::getPrintviewQuestions ( )

Calculates the data for the print view of the questionpool.

public

Definition at line 499 of file class.ilObjQuestionPool.php.

References $ilDB, $row, ilObject\getId(), getQuestionTypeTranslations(), and isPluginActive().

500  {
501  global $ilDB;
502 
503  $query_result = $ilDB->queryF("SELECT qpl_questions.*, qpl_qst_type.type_tag, qpl_qst_type.plugin, qpl_questions.tstamp updated FROM qpl_questions, qpl_qst_type WHERE qpl_questions.original_id IS NULL AND qpl_questions.tstamp > 0 AND qpl_questions.question_type_fi = qpl_qst_type.question_type_id AND qpl_questions.obj_fi = %s",
504  array('integer'),
505  array($this->getId())
506  );
507  $rows = array();
508  $types = $this->getQuestionTypeTranslations();
509  if ($query_result->numRows())
510  {
511  while ($row = $ilDB->fetchAssoc($query_result))
512  {
513  $row['ttype'] = $types[$row['type_tag']];
514  if ($row["plugin"])
515  {
516  if ($this->isPluginActive($row["type_tag"]))
517  {
518  array_push($rows, $row);
519  }
520  }
521  else
522  {
523  array_push($rows, $row);
524  }
525  }
526  }
527  return $rows;
528  }
getId()
get object id public
isPluginActive($a_pname)
Checks wheather or not a question plugin with a given name is active.
global $ilDB
+ Here is the call graph for this function:

◆ getQplQuestions()

& ilObjQuestionPool::getQplQuestions ( )

Definition at line 1405 of file class.ilObjQuestionPool.php.

References $ilDB, $result, $row, and ilObject\getId().

Referenced by cloneObject().

1406  {
1407  global $ilDB;
1408 
1409  $questions = array();
1410  $result = $ilDB->queryF("SELECT qpl_questions.question_id FROM qpl_questions WHERE qpl_questions.original_id IS NULL AND qpl_questions.tstamp > 0 AND qpl_questions.obj_fi = %s",
1411  array('integer'),
1412  array($this->getId())
1413  );
1414  while ($row = $ilDB->fetchAssoc($result))
1415  {
1416  array_push($questions, $row["question_id"]);
1417  }
1418  return $questions;
1419  }
$result
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getQuestionDetails()

& ilObjQuestionPool::getQuestionDetails (   $question_ids)

Returns an array containing the qpl_question and qpl_qst_type fields for an array of question ids.

Parameters
array$question_idsAn array containing the question ids
Returns
array An array containing the details of the requested questions public

Definition at line 1212 of file class.ilObjQuestionPool.php.

References $ilDB, $result, and $row.

1213  {
1214  global $ilDB;
1215 
1216  $result = array();
1217  $query_result = $ilDB->query("SELECT qpl_questions.*, qpl_qst_type.type_tag FROM qpl_questions, qpl_qst_type WHERE qpl_questions.question_type_fi = qpl_qst_type.question_type_id AND " . $ilDB->in('qpl_questions.question_id', $question_ids, false, 'integer') . " ORDER BY qpl_questions.title");
1218  if ($query_result->numRows())
1219  {
1220  while ($row = $ilDB->fetchAssoc($query_result))
1221  {
1222  array_push($result, $row);
1223  }
1224  }
1225  return $result;
1226  }
$result
global $ilDB

◆ getQuestionList()

& ilObjQuestionPool::getQuestionList ( )

Definition at line 1615 of file class.ilObjQuestionPool.php.

References $ilDB, $result, $row, and ilObject\getId().

1616  {
1617  global $ilDB;
1618 
1619  $questions = array();
1620  $result = $ilDB->queryF("SELECT qpl_questions.*, qpl_qst_type.* FROM qpl_questions, qpl_qst_type WHERE qpl_questions.original_id IS NULL AND qpl_questions.obj_fi = %s AND qpl_questions.tstamp > 0 AND qpl_questions.question_type_fi = qpl_qst_type.question_type_id",
1621  array('integer'),
1622  array($this->getId())
1623  );
1624  while ($row = $ilDB->fetchAssoc($result))
1625  {
1626  array_push($questions, $row);
1627  }
1628  return $questions;
1629  }
$result
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:

◆ getQuestiontype()

ilObjQuestionPool::getQuestiontype (   $question_id)

Returns the question type of a question with a given id.

Parameters
integer$question_idThe database id of the question
Returns
string The question type string private

Definition at line 348 of file class.ilObjQuestionPool.php.

References $data, $ilDB, and $result.

349  {
350  global $ilDB;
351 
352  if ($question_id < 1)
353  {
354  return;
355  }
356 
357  $result = $ilDB->queryF("SELECT qpl_qst_type.type_tag FROM qpl_questions, qpl_qst_type WHERE qpl_questions.question_type_fi = qpl_qst_type.question_type_id AND qpl_questions.question_id = %s",
358  array('integer'),
359  array($question_id)
360  );
361  if ($result->numRows() == 1)
362  {
363  $data = $ilDB->fetchAssoc($result);
364  return $data["type_tag"];
365  }
366  else
367  {
368  return;
369  }
370  }
$result
global $ilDB

◆ getQuestionTypeByTypeId()

static ilObjQuestionPool::getQuestionTypeByTypeId (   $type_id)
static

Definition at line 1525 of file class.ilObjQuestionPool.php.

References $ilDB, $query, $result, and $row.

Referenced by ilTestExpressPageObjectGUI\addPageOfQuestions(), ilScoringAdjustmentGUI\allowedInAdjustment(), ilTestExpressPageObjectGUI\executeCommand(), ilObjTestGUI\executeCreateQuestionObject(), and ilTestExpressPageObjectGUI\handleToolbarCommand().

1525  {
1526  global $ilDB;
1527  $query = "SELECT type_tag FROM qpl_qst_type WHERE question_type_id = %s";
1528  $types = array('integer');
1529  $values = array($type_id);
1530  $result = $ilDB->queryF($query, $types, $values);
1531  if ($row = $ilDB->fetchAssoc($result)) {
1532  return $row['type_tag'];
1533  }
1534  }
$result
global $ilDB
+ Here is the caller graph for this function:

◆ getQuestionTypes()

& ilObjQuestionPool::getQuestionTypes (   $all_tags = FALSE,
  $fixOrder = false 
)

Definition at line 1476 of file class.ilObjQuestionPool.php.

References _getQuestionTypes().

1477  {
1478  return $this->_getQuestionTypes($all_tags, $fixOrder);
1479  }
& _getQuestionTypes($all_tags=FALSE, $fixOrder=false)
+ Here is the call graph for this function:

◆ getQuestionTypeTranslations()

static ilObjQuestionPool::getQuestionTypeTranslations ( )
static

Definition at line 1536 of file class.ilObjQuestionPool.php.

References $ilDB, $ilLog, ilObject\$lng, $result, $row, ilPlugin\getPluginObject(), and IL_COMP_MODULE.

Referenced by getPrintviewQuestions().

1537  {
1538  global $ilDB;
1539  global $lng;
1540  global $ilLog;
1541  global $ilPluginAdmin;
1542 
1543  $lng->loadLanguageModule("assessment");
1544  $result = $ilDB->query("SELECT * FROM qpl_qst_type");
1545  $types = array();
1546  while ($row = $ilDB->fetchAssoc($result))
1547  {
1548  if ($row["plugin"] == 0)
1549  {
1550  $types[$row['type_tag']] = $lng->txt($row["type_tag"]);
1551  }
1552  else
1553  {
1554  $pl_names = $ilPluginAdmin->getActivePluginsForSlot(IL_COMP_MODULE, "TestQuestionPool", "qst");
1555  foreach ($pl_names as $pl_name)
1556  {
1557  $pl = ilPlugin::getPluginObject(IL_COMP_MODULE, "TestQuestionPool", "qst", $pl_name);
1558  if (strcmp($pl->getQuestionType(), $row["type_tag"]) == 0)
1559  {
1560  $types[$row['type_tag']] = $pl->getQuestionTypeTranslation();
1561  }
1562  }
1563  }
1564  }
1565  ksort($types);
1566  return $types;
1567  }
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get plugin object.
$result
const IL_COMP_MODULE
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getShowTaxonomies()

ilObjQuestionPool::getShowTaxonomies ( )

Definition at line 976 of file class.ilObjQuestionPool.php.

References $showTaxonomies.

Referenced by cloneObject(), isNavTaxonomyActive(), and saveToDb().

977  {
978  return $this->showTaxonomies;
979  }
+ Here is the caller graph for this function:

◆ getTaxonomyIds()

ilObjQuestionPool::getTaxonomyIds ( )

get ids of all taxonomies corresponding to current pool

Returns
array

Definition at line 1683 of file class.ilObjQuestionPool.php.

References ilObject\getId(), and ilObjTaxonomy\getUsageOfObject().

1684  {
1685  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
1686  return ilObjTaxonomy::getUsageOfObject( $this->getId() );
1687  }
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
getId()
get object id public
+ Here is the call graph for this function:

◆ getTitle()

ilObjQuestionPool::getTitle ( )

get title of glossary object

Returns
string title

Definition at line 395 of file class.ilObjQuestionPool.php.

Referenced by updateMetaData().

396  {
397  return parent::getTitle();
398  }
+ Here is the caller graph for this function:

◆ ilObjQuestionPool()

ilObjQuestionPool::ilObjQuestionPool (   $a_id = 0,
  $a_call_by_reference = true 
)

Constructor public.

Parameters
integerreference_id or object_id
booleantreat the id as reference_id (true) or object_id (false)

Definition at line 51 of file class.ilObjQuestionPool.php.

References ilObject\ilObject(), and setOnline().

52  {
53  $this->type = "qpl";
54  $this->ilObject($a_id,$a_call_by_reference);
55  $this->setOnline(0);
56  }
ilObject($a_id=0, $a_reference=true)
Constructor public.
setOnline($a_online_status)
Sets the questionpool online status.
+ Here is the call graph for this function:

◆ isInUse()

ilObjQuestionPool::isInUse (   $question_id)

Checks whether the question is in use or not.

Parameters
integer$question_idThe question id of the question to be checked
Returns
boolean The number of datasets which are affected by the use of the query. public

Definition at line 415 of file class.ilObjQuestionPool.php.

References $ilDB, $result, and $row.

416  {
417  global $ilDB;
418 
419  $result = $ilDB->queryF("SELECT COUNT(solution_id) solution_count FROM tst_solutions WHERE question_fi = %s",
420  array('integer'),
421  array($question_id)
422  );
423  $row = $ilDB->fetchAssoc($result);
424  return $row["solution_count"];
425  }
$result
global $ilDB

◆ isNavTaxonomyActive()

ilObjQuestionPool::isNavTaxonomyActive ( )

Definition at line 991 of file class.ilObjQuestionPool.php.

References getNavTaxonomyId(), and getShowTaxonomies().

992  {
993  return $this->getShowTaxonomies() && (int)$this->getNavTaxonomyId();
994  }
+ Here is the call graph for this function:

◆ isPluginActive()

ilObjQuestionPool::isPluginActive (   $a_pname)

Checks wheather or not a question plugin with a given name is active.

Parameters
string$a_pnameThe plugin name public

Definition at line 1652 of file class.ilObjQuestionPool.php.

References IL_COMP_MODULE.

Referenced by getAllQuestionIds(), and getPrintviewQuestions().

1653  {
1654  global $ilPluginAdmin;
1655  if ($ilPluginAdmin->isActive(IL_COMP_MODULE, "TestQuestionPool", "qst", $a_pname))
1656  {
1657  return TRUE;
1658  }
1659  else
1660  {
1661  return FALSE;
1662  }
1663  }
const IL_COMP_MODULE
+ Here is the caller graph for this function:

◆ loadFromDb()

ilObjQuestionPool::loadFromDb ( )

Loads a ilObjQuestionpool object from a database.

public

Definition at line 281 of file class.ilObjQuestionPool.php.

References $ilDB, $result, $row, ilObject\getId(), setNavTaxonomyId(), setOnline(), and setShowTaxonomies().

Referenced by read().

282  {
283  global $ilDB;
284 
285  $result = $ilDB->queryF("SELECT * FROM qpl_questionpool WHERE obj_fi = %s",
286  array('integer'),
287  array($this->getId())
288  );
289  if ($result->numRows() == 1)
290  {
291  $row = $ilDB->fetchAssoc($result);
292  $this->setOnline($row['isonline']);
293  $this->setShowTaxonomies($row['show_taxonomies']);
294  $this->setNavTaxonomyId($row['nav_taxonomy']);
295  }
296  }
$result
setNavTaxonomyId($navTaxonomyId)
setOnline($a_online_status)
Sets the questionpool online status.
setShowTaxonomies($showTaxonomies)
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ modifyExportIdentifier()

ilObjQuestionPool::modifyExportIdentifier (   $a_tag,
  $a_param,
  $a_value 
)

Definition at line 589 of file class.ilObjQuestionPool.php.

References ilUtil\insertInstIntoID().

590  {
591  if ($a_tag == "Identifier" && $a_param == "Entry")
592  {
593  include_once "./Services/Utilities/classes/class.ilUtil.php";
594  $a_value = ilUtil::insertInstIntoID($a_value);
595  }
596 
597  return $a_value;
598  }
static insertInstIntoID($a_value)
inserts installation id into ILIAS id
+ Here is the call graph for this function:

◆ moveToClipboard()

ilObjQuestionPool::moveToClipboard (   $question_id)

Moves a question to the clipboard.

Parameters
integer$question_idObject id of the question private

Definition at line 1150 of file class.ilObjQuestionPool.php.

References $_SESSION.

1151  {
1152  if (!array_key_exists("qpl_clipboard", $_SESSION))
1153  {
1154  $_SESSION["qpl_clipboard"] = array();
1155  }
1156  $_SESSION["qpl_clipboard"][$question_id] = array("question_id" => $question_id, "action" => "move");
1157  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']

◆ notify()

ilObjQuestionPool::notify (   $a_event,
  $a_ref_id,
  $a_parent_non_rbac_id,
  $a_node_id,
  $a_params = 0 
)

notifys an object about an event occured Based on the event happend, each object may decide how it reacts.

If you are not required to handle any events related to your module, just delete this method. (For an example how this method is used, look at ilObjGroup)

public

Parameters
stringevent
integerreference id of object where the event occured
arraypasses optional parameters if required
Returns
boolean

Definition at line 194 of file class.ilObjQuestionPool.php.

References $_GET, and ilObject\getType().

195  {
196  global $tree;
197 
198  switch ($a_event)
199  {
200  case "link":
201 
202  //var_dump("<pre>",$a_params,"</pre>");
203  //echo "Module name ".$this->getRefId()." triggered by link event. Objects linked into target object ref_id: ".$a_ref_id;
204  //exit;
205  break;
206 
207  case "cut":
208 
209  //echo "Module name ".$this->getRefId()." triggered by cut event. Objects are removed from target object ref_id: ".$a_ref_id;
210  //exit;
211  break;
212 
213  case "copy":
214 
215  //var_dump("<pre>",$a_params,"</pre>");
216  //echo "Module name ".$this->getRefId()." triggered by copy event. Objects are copied into target object ref_id: ".$a_ref_id;
217  //exit;
218  break;
219 
220  case "paste":
221 
222  //echo "Module name ".$this->getRefId()." triggered by paste (cut) event. Objects are pasted into target object ref_id: ".$a_ref_id;
223  //exit;
224  break;
225 
226  case "new":
227 
228  //echo "Module name ".$this->getRefId()." triggered by paste (new) event. Objects are applied to target object ref_id: ".$a_ref_id;
229  //exit;
230  break;
231  }
232 
233  // At the beginning of the recursive process it avoids second call of the notify function with the same parameter
234  if ($a_node_id==$_GET["ref_id"])
235  {
236  $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
237  $parent_type = $parent_obj->getType();
238  if($parent_type == $this->getType())
239  {
240  $a_node_id = (int) $tree->getParentId($a_node_id);
241  }
242  }
243 
244  parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
245  }
$_GET["client_id"]
redirection script todo: (a better solution should control the processing via a xml file) ...
getType()
get object type public
+ Here is the call graph for this function:

◆ pasteFromClipboard()

ilObjQuestionPool::pasteFromClipboard ( )

Copies/Moves a question from the clipboard.

private

Definition at line 1066 of file class.ilObjQuestionPool.php.

References $_SESSION, $ilDB, $result, $row, $success, _updateQuestionCount(), copyQuestion(), ilObject\getId(), and ilUtil\makeDirParents().

1067  {
1068  global $ilDB;
1069 
1070  $success = false;
1071  if (array_key_exists("qpl_clipboard", $_SESSION))
1072  {
1073  $success = true;
1074  foreach ($_SESSION["qpl_clipboard"] as $question_object)
1075  {
1076  if (strcmp($question_object["action"], "move") == 0)
1077  {
1078  $result = $ilDB->queryF("SELECT obj_fi FROM qpl_questions WHERE question_id = %s",
1079  array('integer'),
1080  array($question_object["question_id"])
1081  );
1082  if ($result->numRows() == 1)
1083  {
1084  $row = $ilDB->fetchAssoc($result);
1085  $source_questionpool = $row["obj_fi"];
1086  // change the questionpool id in the qpl_questions table
1087  $affectedRows = $ilDB->manipulateF("UPDATE qpl_questions SET obj_fi = %s WHERE question_id = %s",
1088  array('integer','integer'),
1089  array($this->getId(), $question_object["question_id"])
1090  );
1091  if(!$affectedRows)
1092  {
1093  $success = false;
1094  }
1095 
1096  // move question data to the new target directory
1097  $source_path = CLIENT_WEB_DIR . "/assessment/" . $source_questionpool . "/" . $question_object["question_id"] . "/";
1098  if (@is_dir($source_path))
1099  {
1100  $target_path = CLIENT_WEB_DIR . "/assessment/" . $this->getId() . "/";
1101  if (!@is_dir($target_path))
1102  {
1103  include_once "./Services/Utilities/classes/class.ilUtil.php";
1104  ilUtil::makeDirParents($target_path);
1105  }
1106  @rename($source_path, $target_path . $question_object["question_id"]);
1107  }
1108  // update question count of source question pool
1109  ilObjQuestionPool::_updateQuestionCount($source_questionpool);
1110  }
1111  }
1112  else
1113  {
1114  $new_question_id = $this->copyQuestion($question_object["question_id"], $this->getId());
1115  if(!$new_question_id)
1116  {
1117  $success = false;
1118  }
1119  }
1120  }
1121  }
1122  // update question count of question pool
1124  unset($_SESSION["qpl_clipboard"]);
1125 
1126  return (bool)$success;
1127  }
< a tabindex="-1" style="border-style: none;" href="#" title="Refresh Image" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">< img src="./images/refresh.png" alt="Reload Image" height="32" width="32" onclick="this.blur()" align="bottom" border="0"/></a >< br/>< strong > Enter Code *if($_SERVER['REQUEST_METHOD']=='POST' &&@ $_POST['do']=='contact') $_SESSION['ctform']['success']
static makeDirParents($a_dir)
Create a new directory and all parent directories.
$result
copyQuestion($question_id, $questionpool_to)
Copies a question into another question pool.
static _updateQuestionCount($object_id)
Updates the number of available questions for a question pool in the database.
$success
Definition: Utf8Test.php:87
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:

◆ purgeQuestions()

ilObjQuestionPool::purgeQuestions ( )

Definition at line 1668 of file class.ilObjQuestionPool.php.

References $ilDB, and $ilUser.

1669  {
1670  global $ilDB, $ilUser;
1671 
1672  require_once 'Modules/TestQuestionPool/classes/class.ilAssIncompleteQuestionPurger.php';
1673  $incompleteQuestionPurger = new ilAssIncompleteQuestionPurger($ilDB);
1674  $incompleteQuestionPurger->setOwnerId($ilUser->getId());
1675  $incompleteQuestionPurger->purge();
1676  }
global $ilUser
Definition: imgupload.php:15
global $ilDB

◆ read()

ilObjQuestionPool::read (   $a_force_db = false)

read object data from db into object

Parameters
booleanpublic

Definition at line 127 of file class.ilObjQuestionPool.php.

References loadFromDb().

128  {
129  parent::read($a_force_db);
130  $this->loadFromDb();
131  }
loadFromDb()
Loads a ilObjQuestionpool object from a database.
+ Here is the call graph for this function:

◆ saveToDb()

ilObjQuestionPool::saveToDb ( )

Saves a ilObjQuestionpool object to a database.

public

Definition at line 303 of file class.ilObjQuestionPool.php.

References $ilDB, $result, ilObject\getId(), getNavTaxonomyId(), getOnline(), and getShowTaxonomies().

Referenced by createReference().

304  {
305  global $ilDB;
306 
307  $result = $ilDB->queryF("SELECT id_questionpool FROM qpl_questionpool WHERE obj_fi = %s",
308  array('integer'),
309  array($this->getId())
310  );
311 
312  if ($result->numRows() == 1)
313  {
314  $result = $ilDB->update('qpl_questionpool',
315  array(
316  'isonline' => array('text', $this->getOnline()),
317  'show_taxonomies' => array('integer', (int)$this->getShowTaxonomies()),
318  'nav_taxonomy' => array('integer', (int)$this->getNavTaxonomyId()),
319  'tstamp' => array('integer', time())
320  ),
321  array(
322  'obj_fi' => array('integer', $this->getId())
323  )
324  );
325  }
326  else
327  {
328  $next_id = $ilDB->nextId('qpl_questionpool');
329 
330  $result = $ilDB->insert('qpl_questionpool', array(
331  'id_questionpool' => array('integer', $next_id),
332  'isonline' => array('text', $this->getOnline()),
333  'show_taxonomies' => array('integer', (int)$this->getShowTaxonomies()),
334  'nav_taxonomy' => array('integer', (int)$this->getNavTaxonomyId()),
335  'tstamp' => array('integer', time()),
336  'obj_fi' => array('integer', $this->getId())
337  ));
338  }
339  }
$result
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setDescription()

ilObjQuestionPool::setDescription (   $a_description)

set description of content object

Definition at line 385 of file class.ilObjQuestionPool.php.

386  {
387  parent::setDescription($a_description);
388  }

◆ setNavTaxonomyId()

ilObjQuestionPool::setNavTaxonomyId (   $navTaxonomyId)

Definition at line 981 of file class.ilObjQuestionPool.php.

References $navTaxonomyId.

Referenced by loadFromDb().

982  {
983  $this->navTaxonomyId = $navTaxonomyId;
984  }
+ Here is the caller graph for this function:

◆ setOnline()

ilObjQuestionPool::setOnline (   $a_online_status)

Sets the questionpool online status.

Parameters
integer$a_online_statusOnline status of the questionpool
See also
online User interface

Definition at line 951 of file class.ilObjQuestionPool.php.

Referenced by ilObjQuestionPool(), and loadFromDb().

952  {
953  switch ($a_online_status)
954  {
955  case 0:
956  case 1:
957  $this->online = $a_online_status;
958  break;
959  default:
960  $this->online = 0;
961  break;
962  }
963  }
+ Here is the caller graph for this function:

◆ setShowTaxonomies()

ilObjQuestionPool::setShowTaxonomies (   $showTaxonomies)

Definition at line 971 of file class.ilObjQuestionPool.php.

References $showTaxonomies.

Referenced by loadFromDb().

972  {
973  $this->showTaxonomies = $showTaxonomies;
974  }
+ Here is the caller graph for this function:

◆ setTitle()

ilObjQuestionPool::setTitle (   $a_title)

set title of glossary object

Definition at line 403 of file class.ilObjQuestionPool.php.

404  {
405  parent::setTitle($a_title);
406  }

◆ toXML()

ilObjQuestionPool::toXML (   $questions)

Returns a QTI xml representation of a list of questions.

Parameters
array$questionsAn array containing the question ids of the questions
Returns
string The QTI xml representation of the questions public

Definition at line 895 of file class.ilObjQuestionPool.php.

References createQuestion().

896  {
897  $xml = "";
898  // export button was pressed
899  if (count($questions) > 0)
900  {
901  foreach ($questions as $key => $value)
902  {
903  $question =& $this->createQuestion("", $value);
904  $xml .= $question->object->toXML();
905  }
906  if (count($questions) > 1)
907  {
908  $xml = preg_replace("/<\/questestinterop>\s*<.xml.*?>\s*<questestinterop>/", "", $xml);
909  }
910  }
911  $xml = preg_replace("/(<\?xml[^>]*?>)/", "\\1" . "<!DOCTYPE questestinterop SYSTEM \"ims_qtiasiv1p2p1.dtd\">", $xml);
912  return $xml;
913  }
& createQuestion($question_type, $question_id=-1)
+ Here is the call graph for this function:

◆ update()

ilObjQuestionPool::update ( )

update object data

public

Returns
boolean

Definition at line 92 of file class.ilObjQuestionPool.php.

References updateMetaData().

93  {
94  $this->updateMetaData();
95  if (!parent::update())
96  {
97  return false;
98  }
99 
100  // put here object specific stuff
101 
102  return true;
103  }
+ Here is the call graph for this function:

◆ updateMetaData()

ilObjQuestionPool::updateMetaData ( )

Definition at line 105 of file class.ilObjQuestionPool.php.

References $ilUser, ilObject\getId(), getTitle(), and ilObject\getType().

Referenced by update().

106  {
107  global $ilUser;
108  include_once "./Services/MetaData/classes/class.ilMD.php";
109  $md =& new ilMD($this->getId(), 0, $this->getType());
110  $md_gen =& $md->getGeneral();
111  if ($md_gen == false)
112  {
113  include_once "./Services/MetaData/classes/class.ilMDCreator.php";
114  $md_creator = new ilMDCreator($this->getId(),0,$this->getType());
115  $md_creator->setTitle($this->getTitle());
116  $md_creator->setTitleLanguage($ilUser->getPref('language'));
117  $md_creator->create();
118  }
119  parent::updateMetaData();
120  }
getId()
get object id public
getType()
get object type public
getTitle()
get title of glossary object
global $ilUser
Definition: imgupload.php:15
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $import_dir

ilObjQuestionPool::$import_dir
private

Definition at line 43 of file class.ilObjQuestionPool.php.

◆ $navTaxonomyId

ilObjQuestionPool::$navTaxonomyId = null
private

Definition at line 37 of file class.ilObjQuestionPool.php.

Referenced by getNavTaxonomyId(), and setNavTaxonomyId().

◆ $online

ilObjQuestionPool::$online

Definition at line 23 of file class.ilObjQuestionPool.php.

Referenced by getOnline().

◆ $showTaxonomies

ilObjQuestionPool::$showTaxonomies = null
private

Definition at line 30 of file class.ilObjQuestionPool.php.

Referenced by getShowTaxonomies(), and setShowTaxonomies().


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