00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00034 require_once "class.ilObject.php";
00035
00036 class ilObjAssessmentFolder extends ilObject
00037 {
00038 var $setting;
00039
00046 function ilObjAssessmentFolder($a_id = 0,$a_call_by_reference = true)
00047 {
00048 include_once "./Services/Administration/classes/class.ilSetting.php";
00049 $this->setting = new ilSetting("assessment");
00050 $this->type = "assf";
00051 $this->ilObject($a_id,$a_call_by_reference);
00052 }
00053
00060 function update()
00061 {
00062 if (!parent::update())
00063 {
00064 return false;
00065 }
00066
00067
00068
00069 return true;
00070 }
00071
00079 function ilClone($a_parent_ref)
00080 {
00081 global $rbacadmin;
00082
00083
00084 $new_ref_id = parent::ilClone($a_parent_ref);
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 return $new_ref_id;
00100 }
00101
00108 function delete()
00109 {
00110
00111 if (!parent::delete())
00112 {
00113 return false;
00114 }
00115
00116
00117
00118 return true;
00119 }
00120
00130 function initDefaultRoles()
00131 {
00132 global $rbacadmin;
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144 return $roles ? $roles : array();
00145 }
00146
00160 function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
00161 {
00162 global $tree;
00163
00164 switch ($a_event)
00165 {
00166 case "link":
00167
00168
00169
00170
00171 break;
00172
00173 case "cut":
00174
00175
00176
00177 break;
00178
00179 case "copy":
00180
00181
00182
00183
00184 break;
00185
00186 case "paste":
00187
00188
00189
00190 break;
00191
00192 case "new":
00193
00194
00195
00196 break;
00197 }
00198
00199
00200 if ($a_node_id==$_GET["ref_id"])
00201 {
00202 $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
00203 $parent_type = $parent_obj->getType();
00204 if($parent_type == $this->getType())
00205 {
00206 $a_node_id = (int) $tree->getParentId($a_node_id);
00207 }
00208 }
00209
00210 parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
00211 }
00212
00216 function _enableAssessmentLogging($a_enable)
00217 {
00218 $setting = new ilSetting("assessment");
00219
00220 if ($a_enable)
00221 {
00222 $setting->set("assessment_logging", 1);
00223 }
00224 else
00225 {
00226 $setting->set("assessment_logging", 0);
00227 }
00228 }
00229
00233 function _setLogLanguage($a_language)
00234 {
00235 $setting = new ilSetting("assessment");
00236
00237 $setting->set("assessment_log_language", $a_language);
00238 }
00239
00243 function _enabledAssessmentLogging()
00244 {
00245 $setting = new ilSetting("assessment");
00246
00247 return (boolean) $setting->get("assessment_logging");
00248 }
00249
00253 function _getLogLanguage()
00254 {
00255 $setting = new ilSetting("assessment");
00256
00257 $lang = $setting->get("assessment_log_language");
00258 if (strlen($lang) == 0)
00259 {
00260 $lang = "en";
00261 }
00262 return $lang;
00263 }
00264
00277 function _addLog($user_id, $object_id, $logtext, $question_id = "", $original_id = "", $test_only = FALSE, $ref_id = NULL)
00278 {
00279 global $ilUser, $ilDB;
00280 if (strlen($question_id) == 0)
00281 {
00282 $question_id = "NULL";
00283 }
00284 else
00285 {
00286 $question_id = $ilDB->quote($question_id . "");
00287 }
00288 if (strlen($original_id) == 0)
00289 {
00290 $original_id = "NULL";
00291 }
00292 else
00293 {
00294 $original_id = $ilDB->quote($original_id . "");
00295 }
00296 $only = "0";
00297 if ($test_only == TRUE)
00298 {
00299 $only = "1";
00300 }
00301 $test_ref_id = "NULL";
00302 if ($ref_id > 0)
00303 {
00304 $test_ref_id = $ilDB->quote($ref_id . "");
00305 }
00306 $query = sprintf("INSERT INTO ass_log (ass_log_id, user_fi, obj_fi, logtext, question_fi, original_fi, test_only, ref_id, TIMESTAMP) VALUES (NULL, %s, %s, %s, %s, %s, %s, %s, NULL)",
00307 $ilDB->quote($user_id . ""),
00308 $ilDB->quote($object_id . ""),
00309 $ilDB->quote($logtext . ""),
00310 $question_id,
00311 $original_id,
00312 $ilDB->quote($only . ""),
00313 $test_ref_id
00314 );
00315 $result = $ilDB->query($query);
00316 }
00317
00328 function &getLog($ts_from, $ts_to, $test_id, $test_only = FALSE)
00329 {
00330 $log = array();
00331 if ($test_only == TRUE)
00332 {
00333 $query = sprintf("SELECT *, TIMESTAMP + 0 AS TIMESTAMP14 FROM ass_log WHERE obj_fi = %s AND TIMESTAMP + 0 > %s AND TIMESTAMP + 0 < %s AND test_only = %s ORDER BY TIMESTAMP14",
00334 $this->ilias->db->quote($test_id . ""),
00335 $this->ilias->db->quote($ts_from . ""),
00336 $this->ilias->db->quote($ts_to . ""),
00337 $this->ilias->db->quote("1")
00338 );
00339 }
00340 else
00341 {
00342 $query = sprintf("SELECT *, TIMESTAMP + 0 AS TIMESTAMP14 FROM ass_log WHERE obj_fi = %s AND TIMESTAMP + 0 > %s AND TIMESTAMP + 0 < %s ORDER BY TIMESTAMP14",
00343 $this->ilias->db->quote($test_id . ""),
00344 $this->ilias->db->quote($ts_from . ""),
00345 $this->ilias->db->quote($ts_to . "")
00346 );
00347 }
00348 $result = $this->ilias->db->query($query);
00349 while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC))
00350 {
00351 if (!array_key_exists($row["TIMESTAMP14"], $log))
00352 {
00353 $log[$row["TIMESTAMP14"]] = array();
00354 }
00355 array_push($log[$row["TIMESTAMP14"]], $row);
00356 }
00357 krsort($log);
00358
00359 $log_array = array();
00360 foreach ($log as $key => $value)
00361 {
00362 foreach ($value as $index => $row)
00363 {
00364 array_push($log_array, $row);
00365 }
00366 }
00367 return $log_array;
00368 }
00369
00380 function &_getLog($ts_from, $ts_to, $test_id, $test_only = FALSE)
00381 {
00382 global $ilDB;
00383
00384 $log = array();
00385 if ($test_only == TRUE)
00386 {
00387 $query = sprintf("SELECT *, TIMESTAMP + 0 AS TIMESTAMP14 FROM ass_log WHERE obj_fi = %s AND TIMESTAMP + 0 > %s AND TIMESTAMP + 0 < %s AND test_only = %s ORDER BY TIMESTAMP14",
00388 $ilDB->quote($test_id . ""),
00389 $ilDB->quote($ts_from . ""),
00390 $ilDB->quote($ts_to . ""),
00391 $ilDB->quote("1")
00392 );
00393 }
00394 else
00395 {
00396 $query = sprintf("SELECT *, TIMESTAMP + 0 AS TIMESTAMP14 FROM ass_log WHERE obj_fi = %s AND TIMESTAMP + 0 > %s AND TIMESTAMP + 0 < %s ORDER BY TIMESTAMP14",
00397 $ilDB->quote($test_id . ""),
00398 $ilDB->quote($ts_from . ""),
00399 $ilDB->quote($ts_to . "")
00400 );
00401 }
00402 $result = $ilDB->query($query);
00403 while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC))
00404 {
00405 if (!array_key_exists($row["TIMESTAMP14"], $log))
00406 {
00407 $log[$row["TIMESTAMP14"]] = array();
00408 }
00409 $type_href = "";
00410 if (array_key_exists("ref_id", $row))
00411 {
00412 if ($row["ref_id"] > 0)
00413 {
00414 $typequery = sprintf("SELECT object_data.type FROM object_data, object_reference WHERE object_reference.ref_id = %s AND object_reference.obj_id = object_data.obj_id",
00415 $ilDB->quote($row["ref_id"])
00416 );
00417 $typequeryresult = $ilDB->query($typequery);
00418 if ($typequeryresult->numRows() == 1)
00419 {
00420 $typerow = $typequeryresult->fetchRow(DB_FETCHMODE_ASSOC);
00421 switch ($typerow["type"])
00422 {
00423 case "tst":
00424 $type_href = sprintf("goto.php?target=tst_%s&client_id=" . CLIENT_ID, $row["ref_id"]);
00425 break;
00426 case "cat":
00427 $type_href = sprintf("goto.php?target=cat_%s&client_id=" . CLIENT_ID, $row["ref_id"]);
00428 break;
00429 }
00430 }
00431 }
00432 }
00433 $row["href"] = $type_href;
00434 array_push($log[$row["TIMESTAMP14"]], $row);
00435 }
00436 krsort($log);
00437
00438 $log_array = array();
00439 foreach ($log as $key => $value)
00440 {
00441 foreach ($value as $index => $row)
00442 {
00443 array_push($log_array, $row);
00444 }
00445 }
00446 return $log_array;
00447 }
00448
00457 function getNrOfLogEntries($test_obj_id)
00458 {
00459 $query = sprintf("SELECT COUNT(obj_fi) AS logcount FROM ass_log WHERE obj_fi = %s",
00460 $this->ilias->db->quote($test_obj_id . "")
00461 );
00462 $result = $this->ilias->db->query($query);
00463 if ($result->numRows())
00464 {
00465 $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
00466 return $row["logcount"];
00467 }
00468 else
00469 {
00470 return 0;
00471 }
00472 }
00473 }
00474 ?>