33 require_once
"./classes/class.ilObject.php";
47 include_once
"./Services/Administration/classes/class.ilSetting.php";
48 $this->setting =
new ilSetting(
"assessment");
50 $this->
ilObject($a_id,$a_call_by_reference);
61 if (!parent::update())
81 if (!parent::delete())
119 function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
159 if ($a_node_id==
$_GET[
"ref_id"])
161 $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
162 $parent_type = $parent_obj->getType();
163 if($parent_type == $this->
getType())
165 $a_node_id = (int) $tree->getParentId($a_node_id);
169 parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
181 $setting->set(
"assessment_logging", 1);
185 $setting->set(
"assessment_logging", 0);
196 $setting->set(
"assessment_log_language", $a_language);
206 return (
boolean)
$setting->get(
"assessment_logging");
215 $types =
$setting->get(
"forbidden_questiontypes");
217 if (strlen(trim($types)) == 0)
223 $result = unserialize($types);
237 if (is_array($a_types) && (count($a_types) > 0))
239 $types = serialize($a_types);
241 $setting->set(
"forbidden_questiontypes", $types);
252 if (strlen(
$lang) == 0)
266 $types =
$setting->get(
"assessment_manual_scoring");
267 return explode(
",", $types);
277 $result = $ilDB->query(
"SELECT * FROM qpl_qst_type");
279 while (
$row = $ilDB->fetchAssoc($result))
281 $dbtypes[
$row[
"question_type_id"]] = $row[
"type_tag"];
284 $types =
$setting->get(
"assessment_manual_scoring");
285 $ids = explode(
",", $types);
286 foreach ($ids as $key => $value)
288 $ids[$key] = $dbtypes[$value];
301 if ((!is_array($type_ids)) || (count($type_ids) == 0))
303 $setting->delete(
"assessment_manual_scoring");
307 $setting->set(
"assessment_manual_scoring", implode($type_ids,
","));
321 function _addLog($user_id, $object_id, $logtext, $question_id =
"", $original_id =
"", $test_only = FALSE, $test_ref_id = NULL)
323 global $ilUser,
$ilDB;
324 if (strlen($question_id) == 0) $question_id = NULL;
325 if (strlen($original_id) == 0) $original_id = NULL;
326 if (strlen($test_ref_id) == 0) $test_ref_id = NULL;
327 $only = ($test_only == TRUE) ? 1 : 0;
328 $next_id = $ilDB->nextId(
'ass_log');
329 $affectedRows = $ilDB->manipulateF(
"INSERT INTO ass_log (ass_log_id, user_fi, obj_fi, logtext, question_fi, original_fi, test_only, ref_id, tstamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
330 array(
'integer',
'integer',
'integer',
'text',
'integer',
'integer',
'text',
'integer',
'integer'),
353 function &
getLog($ts_from, $ts_to, $test_id, $test_only = FALSE)
358 if ($test_only == TRUE)
360 $result = $ilDB->queryF(
"SELECT * FROM ass_log WHERE obj_fi = %s AND tstamp > %s AND tstamp < %s AND test_only = %s ORDER BY tstamp",
361 array(
'integer',
'integer',
'integer',
'text'),
372 $result = $ilDB->queryF(
"SELECT * FROM ass_log WHERE obj_fi = %s AND tstamp > %s AND tstamp < %s ORDER BY tstamp",
373 array(
'integer',
'integer',
'integer'),
381 while (
$row = $ilDB->fetchAssoc($result))
383 if (!array_key_exists(
$row[
"tstamp"],
$log))
387 array_push(
$log[
$row[
"tstamp"]], $row);
391 $log_array = array();
392 foreach (
$log as $key => $value)
394 foreach ($value as $index =>
$row)
396 array_push($log_array,
$row);
410 function &
_getLog($ts_from, $ts_to, $test_id, $test_only = FALSE)
415 if ($test_only == TRUE)
417 $result = $ilDB->queryF(
"SELECT * FROM ass_log WHERE obj_fi = %s AND tstamp > %s AND tstamp < %s AND test_only = %s ORDER BY tstamp",
418 array(
'integer',
'integer',
'integer',
'text'),
419 array($test_id, $ts_from, $ts_to, 1)
424 $result = $ilDB->queryF(
"SELECT * FROM ass_log WHERE obj_fi = %s AND tstamp > %s AND tstamp < %s ORDER BY tstamp",
425 array(
'integer',
'integer',
'integer'),
426 array($test_id, $ts_from, $ts_to)
429 while (
$row = $ilDB->fetchAssoc($result))
431 if (!array_key_exists(
$row[
"tstamp"],
$log))
436 if (array_key_exists(
"ref_id",
$row))
438 if (
$row[
"ref_id"] > 0)
440 include_once
"./classes/class.ilObject.php";
445 $type_href = sprintf(
"goto.php?target=tst_%s&client_id=" . CLIENT_ID,
$row[
"ref_id"]);
448 $type_href = sprintf(
"goto.php?target=cat_%s&client_id=" . CLIENT_ID,
$row[
"ref_id"]);
453 $row[
"href"] = $type_href;
454 array_push(
$log[
$row[
"tstamp"]], $row);
458 $log_array = array();
459 foreach (
$log as $key => $value)
461 foreach ($value as $index =>
$row)
463 array_push($log_array,
$row);
478 $result = $ilDB->queryF(
"SELECT COUNT(obj_fi) logcount FROM ass_log WHERE obj_fi = %s",
482 if ($result->numRows())
484 $row = $ilDB->fetchAssoc($result);
485 return $row[
"logcount"];
503 $pathelements = array();
512 array_push($pathelements,
"<a href=\"./goto.php?target=" .
$data[
"type"] .
"_" .
$data[
"ref_id"] .
"&client=" . CLIENT_ID .
"\">" .
516 return implode(
" > ", $pathelements);
529 foreach ($a_array as $object_id)
531 $affectedRows = $ilDB->manipulateF(
"DELETE FROM ass_log WHERE obj_fi = %s",
535 $this->
_addLog($ilUser->getId(), $object_id, $this->lng->txt(
"assessment_log_deleted"));