00001 <?php 00002 /* 00003 +-----------------------------------------------------------------------------+ 00004 | ILIAS open source | 00005 +-----------------------------------------------------------------------------+ 00006 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne | 00007 | | 00008 | This program is free software; you can redistribute it and/or | 00009 | modify it under the terms of the GNU General Public License | 00010 | as published by the Free Software Foundation; either version 2 | 00011 | of the License, or (at your option) any later version. | 00012 | | 00013 | This program is distributed in the hope that it will be useful, | 00014 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 00015 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 00016 | GNU General Public License for more details. | 00017 | | 00018 | You should have received a copy of the GNU General Public License | 00019 | along with this program; if not, write to the Free Software | 00020 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 00021 +-----------------------------------------------------------------------------+ 00022 */ 00023 00037 require_once "class.ilObjectGUI.php"; 00038 00039 class ilObjSysUserTrackingGUI extends ilObjectGUI 00040 { 00045 var $conditions; 00046 /* 00047 function ilObjSysUserTrackingGUI($a_data,$a_id,$a_call_by_reference) 00048 { 00049 global $rbacsystem; 00050 00051 $this->type = "trac"; 00052 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference); 00053 00054 if (!$rbacsystem->checkAccess('read',$this->object->getRefId())) 00055 { 00056 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read_track"),$this->ilias->error_obj->WARNING); 00057 } 00058 } 00059 */ 00064 /* 00065 function saveObject() 00066 { 00067 global $rbacadmin; 00068 00069 // create and insert forum in objecttree 00070 $newObj = parent::saveObject(); 00071 00072 // setup rolefolder & default local roles 00073 //$roles = $newObj->initDefaultRoles(); 00074 00075 // ...finally assign role to creator of object 00076 //$rbacadmin->assignUser($roles[0], $newObj->getOwner(), "y"); 00077 00078 // put here object specific stuff 00079 00080 // always send a message 00081 sendInfo($this->lng->txt("object_added"),true); 00082 00083 header("Location:".$this->getReturnLocation("save","adm_object.php?".$this->link_params)); 00084 exit(); 00085 } 00086 */ 00087 00091 /* 00092 function settingsObject() 00093 { 00094 global $tpl,$lng,$ilias; 00095 00096 // tracking settings 00097 $tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.tracking_settings.html"); 00098 $tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]. 00099 "&cmd=gateway"); 00100 $tpl->setVariable("TXT_TRACKING_SETTINGS", $this->lng->txt("tracking_settings")); 00101 $tpl->setVariable("TXT_ACTIVATE_TRACKING", $this->lng->txt("activate_tracking")); 00102 $tpl->setVariable("TXT_USER_RELATED_DATA", $this->lng->txt("save_user_related_data")); 00103 $tpl->setVariable("TXT_NUMBER_RECORDS", $this->lng->txt("number_of_records")); 00104 $tpl->setVariable("NUMBER_RECORDS", $this->object->getRecordsTotal()); 00105 $tpl->setVariable("TXT_SAVE", $this->lng->txt("save")); 00106 00107 if($this->object->_enabledTracking()) 00108 { 00109 $this->tpl->setVariable("ACT_TRACK_CHECKED", " checked=\"1\" "); 00110 } 00111 00112 if($this->object->_enabledUserRelatedData()) 00113 { 00114 $this->tpl->setVariable("USER_RELATED_CHECKED", " checked=\"1\" "); 00115 } 00116 00117 $tpl->parseCurrentBlock(); 00118 } 00119 */ 00123 /* 00124 function saveSettingsObject() 00125 { 00126 // (de)activate tracking 00127 if ($_POST["act_track"] == "y") 00128 { 00129 $this->object->enableTracking(true); 00130 } 00131 else 00132 { 00133 $this->object->enableTracking(false); 00134 } 00135 00136 // (de)activate tracking of user related data 00137 if ($_POST["user_related"] == "y") 00138 { 00139 $this->object->enableUserRelatedData(true); 00140 } 00141 else 00142 { 00143 $this->object->enableUserRelatedData(false); 00144 } 00145 00146 sendinfo($this->lng->txt("msg_obj_modified"), true); 00147 $this->ctrl->redirect($this,'settings'); 00148 } 00149 */ 00153 /* 00154 function manageDataObject() 00155 { 00156 global $tpl,$lng,$ilias; 00157 00158 // tracking settings 00159 $tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.tracking_manage_data.html"); 00160 $tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]. 00161 "&cmd=gateway"); 00162 $tpl->setVariable("TXT_TRACKING_DATA", $this->lng->txt("tracking_data")); 00163 $tpl->setVariable("TXT_MONTH", $lng->txt("month")); 00164 $tpl->setVariable("TXT_NUMBER_OF_ACC", $lng->txt("number_of_accesses")); 00165 $tpl->setVariable("TXT_DELETE_OLDER", $lng->txt("delete")); 00166 $overw = $this->object->getMonthTotalOverview(); 00167 foreach($overw as $month) 00168 { 00169 $tpl->setCurrentBlock("load_row"); 00170 $rcol = ($rcol != "tblrow1") ? "tblrow1" : "tblrow2"; 00171 $tpl->setVariable("ROWCOL", $rcol); 00172 $tpl->setVariable("VAL_MONTH", $month["month"]); 00173 $tpl->setVariable("VAL_NUMBER_OF_ACC", $month["cnt"]); 00174 $tpl->parseCurrentBlock(); 00175 } 00176 $tpl->parseCurrentBlock(); 00177 } 00178 */ 00182 /* 00183 function confirmDeletionDataObject() 00184 { 00185 global $tpl, $lng, $rbacsystem; 00186 00187 if (!$rbacsystem->checkAccess('delete',$this->object->getRefId())) 00188 { 00189 $this->ilias->raiseError($this->lng->txt("msg_no_perm_delete_track"),$this->ilias->error_obj->WARNING); 00190 } 00191 00192 if (!isset($_POST["month"])) 00193 { 00194 $this->ilias->raiseError($this->lng->txt("no_checkbox"),$this->ilias->error_obj->MESSAGE); 00195 } 00196 $nr = $this->object->getTotalOlderThanMonth($_POST["month"]); 00197 $tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.tracking_confirm_data_deletion.html"); 00198 $tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]. 00199 "&cmd=gateway&month=".$_POST["month"]); 00200 $tpl->setVariable("TXT_CONFIRMATION", $this->lng->txt("tracking_data_del_confirm")); 00201 $tpl->setVariable("TXT_MONTH", $lng->txt("month")); 00202 $tpl->setVariable("VAL_MONTH", $_POST["month"]); 00203 $tpl->setVariable("TXT_NUMBER_OF_RECORDS", $lng->txt("number_of_records")); 00204 $tpl->setVariable("VAL_NUMBER_OF_RECORDS", $nr); 00205 $tpl->setVariable("TXT_NUMBER_OF_ACC", $lng->txt("number_of_accesses")); 00206 $tpl->setVariable("TXT_DELETE_DATA", $lng->txt("delete_tr_data")); 00207 $tpl->setVariable("TXT_CANCEL", $lng->txt("cancel")); 00208 } 00209 */ 00213 /* 00214 function cancelDeleteDataObject() 00215 { 00216 sendInfo($this->lng->txt("msg_cancel"),true); 00217 00218 ilUtil::redirect("adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=manageData"); 00219 } 00220 */ 00224 /* 00225 function deleteDataObject() 00226 { 00227 global $rbacsystem; 00228 00229 if (!$rbacsystem->checkAccess('read',$this->object->getRefId())) 00230 { 00231 $this->ilias->raiseError($this->lng->txt("msg_no_perm_delete_track"),$this->ilias->error_obj->WARNING); 00232 } 00233 00234 $this->object->deleteTrackingDataBeforeMonth($_GET["month"]); 00235 00236 sendInfo($this->lng->txt("tracking_data_deleted"),true); 00237 ilUtil::redirect("adm_object.php?ref_id=".$_GET["ref_id"]."&cmd=manageData"); 00238 } 00239 */ 00243 /* 00244 function trackingDataQueryFormObject() 00245 { 00246 global $tpl,$lng,$ilias; 00247 $year = array(2004,2005,2006,2007); 00248 $month = array(1,2,3,4,5,6,7,8,9,10,11,12); 00249 $day = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31); 00250 //subject module 00251 $tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.usr_tracking.html"); 00252 00253 if (ilObjSysUserTracking::_enabledUserRelatedData()) 00254 { 00255 $tpl->setCurrentBlock("user_stat"); 00256 $tpl->setVariable("TXT_STATISTIC_U", $lng->txt("user_access")); 00257 if ($_SESSION["il_track_stat"] == "u") 00258 { 00259 $tpl->setVariable("U_CHK", " checked=\"1\" "); 00260 } 00261 $tpl->parseCurrentBlock(); 00262 } 00263 00264 //$tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html"); 00265 $tpl->setVariable("SEARCH_ACTION", "adm_object.php?ref_id=".$_GET["ref_id"]. 00266 "&cmd=gateway"); 00267 $tpl->setVariable("TXT_TRACKING_DATA", $lng->txt("tracking_data")); 00268 $tpl->setVariable("TXT_TIME_SEGMENT", $lng->txt("time_segment")); 00269 $tpl->setVariable("TXT_STATISTIC", $lng->txt("statistic")); 00270 $tpl->setVariable("TXT_STATISTIC_H", $lng->txt("hours_of_day")); 00271 $tpl->setVariable("TXT_STATISTIC_D", $lng->txt("days_of_period")); 00272 $tpl->setVariable("TXT_STATISTIC_O", $lng->txt("per_object")); 00273 $tpl->setVariable("TXT_USER_LANGUAGE",$lng->txt("user_language")); 00274 $tpl->setVariable("TXT_LM",$lng->txt("lm")); 00275 $tpl->setVariable("TXT_SHOW_TR_DATA",$lng->txt("query_data")); 00276 $tpl->setVariable("TXT_TRACKED_OBJECTS",$lng->txt("tracked_objects")); 00277 00278 $languages = $lng->getInstalledLanguages(); 00279 00280 // get all learning modules 00281 // $lms = ilObject::_getObjectsDataForType("lm", true); 00282 $authors = ilObjSysUserTracking::allAuthor("usr","lm"); 00283 if(count($authors)>0) 00284 { 00285 $tpl->setCurrentBlock("javascript"); 00286 $tpl->setVariable("ALL_LMS", $this->lng->txt("all_lms")); 00287 foreach ($authors as $author) 00288 { 00289 $lms = ilObjSysUserTracking::authorLms($author["obj_id"],"lm"); 00290 //echo count($lms); 00291 foreach ($lms as $lm) 00292 { 00293 $tpl->setCurrentBlock("select_value"); 00294 $tpl->setVariable("VALUE", $author["title"]); 00295 $tpl->setVariable("LMVALUE", $lm["title"]); 00296 $tpl->parseCurrentBlock(); 00297 } 00298 00299 } 00300 $tpl->parseCurrentBlock(); 00301 } 00302 $authors1 = ilObjSysUserTracking::allAuthor("usr","tst"); 00303 if(count($authors1)>0) 00304 { 00305 $tpl->setCurrentBlock("javascript1"); 00306 $tpl->setVariable("ALL_TSTS", $this->lng->txt("all_tsts")); 00307 foreach ($authors1 as $author1) 00308 { 00309 $tsts = ilObjSysUserTracking::authorLms($author1["obj_id"],"tst"); 00310 foreach ($tsts as $tst) 00311 { 00312 $tpl->setCurrentBlock("select_value1"); 00313 $tpl->setVariable("VALUE1", $author1["title"]); 00314 $tpl->setVariable("TSTVALUE", $tst["title"]); 00315 $tpl->parseCurrentBlock(); 00316 } 00317 } 00318 $tpl->parseCurrentBlock(); 00319 } 00320 foreach($year as $key) 00321 { 00322 $tpl->setCurrentBlock("fromyear_selection"); 00323 $tpl->setVariable("YEARFR", $key); 00324 $tpl->setVariable("YEARF", $key); 00325 if ($_SESSION["il_track_yearf"] == $key) 00326 { 00327 $tpl->setVariable("YEARF_SEL", " selected=\"1\" "); 00328 } 00329 $tpl->parseCurrentBlock(); 00330 } 00331 foreach($month as $key) 00332 { 00333 $tpl->setCurrentBlock("frommonth_selection"); 00334 $tpl->setVariable("MONTHFR", $key); 00335 $tpl->setVariable("MONTHF", $key); 00336 if ($_SESSION["il_track_monthf"] == $key) 00337 { 00338 $tpl->setVariable("MONTHF_SEL", " selected=\"1\" "); 00339 } 00340 $tpl->parseCurrentBlock(); 00341 } 00342 foreach($day as $key) 00343 { 00344 $tpl->setCurrentBlock("fromday_selection"); 00345 $tpl->setVariable("DAYFR", $key); 00346 $tpl->setVariable("DAYF", $key); 00347 if ($_SESSION["il_track_dayf"] == $key) 00348 { 00349 $tpl->setVariable("DAYF_SEL", " selected=\"1\" "); 00350 } 00351 $tpl->parseCurrentBlock(); 00352 } 00353 foreach($day as $key) 00354 { 00355 $tpl->setCurrentBlock("today_selection"); 00356 $tpl->setVariable("DAYTO", $key); 00357 $tpl->setVariable("DAYT", $key); 00358 if ($_SESSION["il_track_dayt"] == $key) 00359 { 00360 $tpl->setVariable("DAYT_SEL", " selected=\"1\" "); 00361 } 00362 $tpl->parseCurrentBlock(); 00363 } 00364 foreach($month as $key) 00365 { 00366 $tpl->setCurrentBlock("tomonth_selection"); 00367 $tpl->setVariable("MONTHTO", $key); 00368 $tpl->setVariable("MONTHT", $key); 00369 if ($_SESSION["il_track_montht"] == $key) 00370 { 00371 $tpl->setVariable("MONTHT_SEL", " selected=\"1\" "); 00372 } 00373 $tpl->parseCurrentBlock(); 00374 } 00375 foreach($year as $key) 00376 { 00377 $tpl->setCurrentBlock("toyear_selection"); 00378 $tpl->setVariable("YEARTO", $key); 00379 $tpl->setVariable("YEART", $key); 00380 if ($_SESSION["il_track_yeart"] == $key) 00381 { 00382 $tpl->setVariable("YEART_SEL", " selected=\"1\" "); 00383 } 00384 $tpl->parseCurrentBlock(); 00385 } 00386 // language selection 00387 $tpl->setCurrentBlock("language_selection"); 00388 $tpl->setVariable("LANG", $lng->txt("any_language")); 00389 $tpl->setVariable("LANGSHORT", "0"); 00390 $tpl->parseCurrentBlock(); 00391 foreach ($languages as $lang_key) 00392 { 00393 $tpl->setCurrentBlock("language_selection"); 00394 $tpl->setVariable("LANG", $lng->txt("lang_".$lang_key)); 00395 $tpl->setVariable("LANGSHORT", $lang_key); 00396 if ($_SESSION["il_track_language"] == $lang_key) 00397 { 00398 $tpl->setVariable("LANG_SEL", " selected=\"1\" "); 00399 } 00400 $tpl->parseCurrentBlock(); 00401 } 00402 00403 // statistic type 00404 if ($_SESSION["il_track_stat"] == "d") 00405 { 00406 $tpl->setVariable("D_CHK", " checked=\"1\" "); 00407 } 00408 elseif ($_SESSION["il_track_stat"] == "h") 00409 { 00410 $tpl->setVariable("H_CHK", " checked=\"1\" "); 00411 } 00412 elseif($_SESSION["il_track_stat"] == "o") 00413 { 00414 $tpl->setVariable("O_CHK", " checked=\"1\" "); 00415 } 00416 00417 // tracked object type 00418 if ($_SESSION["il_object_type"] == "tst") 00419 { 00420 $tpl->setVariable("TST_CHK", " checked=\"1\" "); 00421 } 00422 else 00423 { 00424 $tpl->setVariable("LM_CHK", " checked=\"1\" "); 00425 } 00426 00427 // author selection 00428 $tpl->setCurrentBlock("author_selection"); 00429 $tpl->setVariable("AUTHOR", 0); 00430 $tpl->setVariable("AUTHOR_SELECT", $this->lng->txt("all_authors")); 00431 $tpl->parseCurrentBlock(); 00432 foreach ($authors as $author) 00433 { 00434 $tpl->setCurrentBlock("author_selection"); 00435 $tpl->setVariable("AUTHOR", $author["title"]); 00436 $tpl->setVariable("AUTHOR_SELECT", $author["title"]); 00437 if ($_SESSION["il_track_author"] == $author["title"]) 00438 { 00439 $tpl->setVariable("AUTHOR_SEL", " selected=\"1\" "); 00440 } 00441 $tpl->parseCurrentBlock(); 00442 } 00443 $tpl->setCurrentBlock("author_selection_tst"); 00444 $tpl->setVariable("AUTHOR1", 0); 00445 $tpl->setVariable("AUTHOR1_SELECT", $this->lng->txt("all_authors")); 00446 $tpl->parseCurrentBlock(); 00447 foreach ($authors1 as $author1) 00448 { 00449 $tpl->setCurrentBlock("author_selection_tst"); 00450 $tpl->setVariable("AUTHOR1", $author1["title"]); 00451 $tpl->setVariable("AUTHOR1_SELECT", $author1["title"]); 00452 if ($_SESSION["il_track_author1"] == $author1["title"]) 00453 { 00454 $tpl->setVariable("AUTHOR1_SEL", " selected=\"1\" "); 00455 } 00456 $tpl->parseCurrentBlock(); 00457 } 00458 //test module 00459 00460 $result_test = ilObjSysUserTracking::getTestId($_SESSION["AccountId"]); 00461 00462 $tpl->setVariable("TXT_TEST",$lng->txt("test")); 00463 00464 //$test = $tracking->TestTitle($_SESSION["AccountId"]); 00465 00466 $tsts = ilObject::_getObjectsDataForType($type, true); 00467 $tpl->setCurrentBlock("test_selection"); 00468 $tpl->setVariable("TEST", 0); 00469 $tpl->setVariable("TEST_SELECT", $this->lng->txt("all_tsts")); 00470 $tpl->parseCurrentBlock(); 00471 foreach($tsts as $tst) 00472 { 00473 $tpl->setCurrentBlock("test_selection"); 00474 $tpl->setVariable("TEST", $tst["id"]); 00475 $tpl->setVariable("TEST_SELECT", $tst["title"]." [".$tst["id"]."]"); 00476 $tpl->parseCurrentBlock(); 00477 } 00478 00479 } 00480 */ 00484 /* 00485 function outputTrackingDataObject() 00486 { 00487 global $tpl,$lng,$ilias; 00488 00489 // save selected values in session 00490 $_SESSION["il_track_yearf"] = $_POST["yearf"]; 00491 $_SESSION["il_track_yeart"] = $_POST["yeart"]; 00492 $_SESSION["il_track_monthf"] = $_POST["monthf"]; 00493 $_SESSION["il_track_montht"] = $_POST["montht"]; 00494 $_SESSION["il_track_dayf"] = $_POST["dayf"]; 00495 $_SESSION["il_track_dayt"] = $_POST["dayt"]; 00496 $_SESSION["il_track_stat"] = $_POST["stat"]; 00497 $_SESSION["il_track_language"] = $_POST["language"]; 00498 $_SESSION["il_track_author"] = $_POST["author"]; 00499 $_SESSION["il_track_author1"] = $_POST["author1"]; 00500 $_SESSION["il_track_lm"] = $_POST["lm"]; 00501 $_SESSION["il_track_tst"] = $_POST["tst"]; 00502 $_SESSION["il_object_type"] = $_POST["object_type"]; 00503 00504 $yearf = $_POST["yearf"]; 00505 $monthf = $_POST["monthf"]; 00506 $dayf = $_POST["dayf"]; 00507 $yeart = $_POST["yeart"]; 00508 $montht= $_POST["montht"]; 00509 $dayt = $_POST["dayt"]; 00510 $from = $yearf."-".$monthf."-".$dayf; 00511 $to = $yeart."-".$montht."-".$dayt; 00512 00513 if(($yearf > $yeart)or($yearf==$yeart and $monthf>$montht)or($yearf==$yeart and $monthf==$montht and $dayf>$dayt)) 00514 { 00515 $this->ilias->raiseError($lng->txt("msg_err_search_time"), 00516 $this->ilias->error_obj->MESSAGE); 00517 } 00518 */ 00519 /* 00520 if($_POST["stat"]!='h' and $_POST["stat"]!='d') 00521 { 00522 $this->ilias->raiseError($lng->txt("msg_no_search_time"), 00523 $this->ilias->error_obj->MESSAGE); 00524 }*/ 00525 /* 00526 $condition = $this->getCondition()." and acc_time >='".$from."' and acc_time< '".$to."'"; 00527 if(count(ilObjSysUserTracking::countResults($condition))== 0) 00528 { 00529 $this->ilias->raiseError($lng->txt("msg_no_search_result"), 00530 $this->ilias->error_obj->MESSAGE); 00531 } 00532 00533 include_once "./classes/class.ilTableGUI.php"; 00534 $tbl = new ilTableGUI(); 00535 $tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.tracking_result.html"); 00536 $tpl->addBlockFile("STATUSLINE", "statusline", "tpl.statusline.html"); 00537 $tpl->addBlockfile("TRACK_TABLE", "track_table", "tpl.table.html"); 00538 $tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.obj_tbl_rows.html"); 00539 00540 // user access statistic 00541 if($_POST["stat"] == "u") // user access 00542 { 00543 00544 if($_POST["mode"] == "user") 00545 { 00546 $tpl->setCurrentBlock("user_mode"); 00547 $tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]. 00548 "&cmd=gateway"); 00549 if($_POST["object_type"]=="lm") 00550 { 00551 $tpl->setVariable("AUTHOR", "author"); 00552 $tpl->setVariable("AUTHORS", $_POST["author"]); 00553 $tpl->setVariable("OBJECT", "lm"); 00554 $tpl->setVariable("OBJECTS", $_POST["lm"]); 00555 } 00556 else 00557 { 00558 $tpl->setVariable("AUTHOR", "author1"); 00559 $tpl->setVariable("AUTHORS", $_POST["author1"]); 00560 $tpl->setVariable("OBJECT", "tst"); 00561 $tpl->setVariable("OBJECTS", $_POST["tst"]); 00562 } 00563 $tpl->setVariable("YEARF",$_POST["yearf"]); 00564 $tpl->setVariable("MONTHF",$_POST["monthf"]); 00565 $tpl->setVariable("DAYF",$_POST["dayf"]); 00566 $tpl->setVariable("YEART",$_POST["yeart"]); 00567 $tpl->setVariable("MONTHT",$_POST["montht"]); 00568 $tpl->setVariable("DAYT",$_POST["dayt"]); 00569 $tpl->setVariable("LAN", $_POST["language"]); 00570 $tpl->setVariable("TYPE", $_POST["object_type"]); 00571 $tpl->setVariable("FROM", $from); 00572 $tpl->setVariable("TO", $to); 00573 $tpl->setVariable("TXT_SHOW_USER_DATA", $lng->txt("user_statistics")); 00574 $tpl->parseCurrentBlock(); 00575 $title_new = array("user","client_ip","language","object","time"); 00576 $condition = $this->getConditions()." and acc_time>='".$from."' and acc_time<'".$to."'"; 00577 $user_acc = $this->object->getAccessPerUserDetail($condition); 00578 $this->maxcount = count($user_acc); 00579 if (count($user_acc) < 1) 00580 { 00581 $this->ilias->raiseError($lng->txt("msg_no_search_result"), 00582 $this->ilias->error_obj->MESSAGE); 00583 } 00584 00585 $tbl->setTitle($lng->txt("search_result"),0,0); 00586 foreach ($title_new as $val) 00587 { 00588 $header_names[] = $lng->txt($val); 00589 } 00590 $tbl->disable("sort"); 00591 $tbl->setHeaderNames($header_names); 00592 //$tbl->setColumnWidth(array("15","75%","25%")); 00593 $tbl->setMaxCount($this->maxcount); 00594 $tbl->setStyle("table", "std"); 00595 $tbl->render(); 00596 $max = 0; 00597 00598 foreach ($user_acc as $user) 00599 { 00600 $data[0] = $user["name"]; 00601 $data[1] = $user["client_ip"]; 00602 $data[2] = $user["language"]; 00603 $data[3] = $user["acc_obj_id"]; 00604 $data[4] = $user["acc_time"]; 00605 $css_row = $i%2==0?"tblrow1":"tblrow2"; 00606 foreach ($data as $key => $val) 00607 { 00608 if($val=="") 00609 { 00610 $val=0; 00611 } 00612 $tpl->setCurrentBlock("text"); 00613 $tpl->setVariable("TEXT_CONTENT", $val); 00614 $tpl->parseCurrentBlock(); 00615 $tpl->setCurrentBlock("table_cell"); 00616 $tpl->parseCurrentBlock(); 00617 } //foreach 00618 $tpl->setCurrentBlock("tbl_content"); 00619 $tpl->setVariable("CSS_ROW", $css_row); 00620 $tpl->parseCurrentBlock(); 00621 } //for 00622 } 00623 else 00624 { 00625 $tpl->setCurrentBlock("user_mode"); 00626 $tpl->setVariable("FORMACTION", "adm_object.php?ref_id=".$_GET["ref_id"]. 00627 "&cmd=gateway"); 00628 if($_POST["object_type"]=="lm") 00629 { 00630 $tpl->setVariable("AUTHOR", "author"); 00631 $tpl->setVariable("AUTHORS", $_POST["author"]); 00632 $tpl->setVariable("OBJECT", "lm"); 00633 $tpl->setVariable("OBJECTS", $_POST["lm"]); 00634 } 00635 else 00636 { 00637 $tpl->setVariable("AUTHOR", "author1"); 00638 $tpl->setVariable("AUTHORS", $_POST["author1"]); 00639 $tpl->setVariable("OBJECT", "tst"); 00640 $tpl->setVariable("OBJECTS", $_POST["tst"]); 00641 } 00642 $tpl->setVariable("YEARF",$_POST["yearf"]); 00643 $tpl->setVariable("MONTHF",$_POST["monthf"]); 00644 $tpl->setVariable("DAYF",$_POST["dayf"]); 00645 $tpl->setVariable("YEART",$_POST["yeart"]); 00646 $tpl->setVariable("MONTHT",$_POST["montht"]); 00647 $tpl->setVariable("DAYT",$_POST["dayt"]); 00648 $tpl->setVariable("USER", "user"); 00649 $tpl->setVariable("LAN", $_POST["language"]); 00650 $tpl->setVariable("TYPE", $_POST["object_type"]); 00651 $tpl->setVariable("FROM", $from); 00652 $tpl->setVariable("TO", $to); 00653 $tpl->setVariable("TXT_SHOW_USER_DATA", $lng->txt("user_detail")); 00654 $tpl->parseCurrentBlock(); 00655 $title_new = array("user", "count", ""); 00656 00657 $user_acc = $this->object->getAccessTotalPerUser($condition); 00658 00659 $this->maxcount = count($user_acc); 00660 00661 // check if result is given 00662 if ($this->maxcount < 1) 00663 { 00664 $this->ilias->raiseError($lng->txt("msg_no_search_result"), 00665 $this->ilias->error_obj->MESSAGE); 00666 } 00667 00668 $tbl->setTitle($lng->txt("search_result"),0,0); 00669 foreach ($title_new as $val) 00670 { 00671 $header_names[] = $lng->txt($val); 00672 } 00673 $tbl->disable("sort"); 00674 $tbl->setHeaderNames($header_names); 00675 //$tbl->setColumnWidth(array("15","75%","25%")); 00676 $tbl->setMaxCount($this->maxcount); 00677 $tbl->setStyle("table", "std"); 00678 $tbl->render(); 00679 $max = 0; 00680 foreach ($user_acc as $user) 00681 { 00682 $max = ($max > $user["cnt"]) ? $max : $user["cnt"]; 00683 } 00684 00685 foreach ($user_acc as $user) 00686 { 00687 $data[0] = $user["name"]; 00688 $data[1] = $user["cnt"]; 00689 $width = ($max > 0) 00690 ? round($data[1] / $max * 100) 00691 : 0; 00692 $data[2] = "<img src=\"".ilUtil::getImagePath("ray.gif")."\" border=\"0\" ". 00693 "width=\"".$width."\" height=\"10\"/>"; 00694 00695 $css_row = $i%2==0?"tblrow1":"tblrow2"; 00696 foreach ($data as $key => $val) 00697 { 00698 if($val=="") 00699 { 00700 $val=0; 00701 } 00702 $tpl->setCurrentBlock("text"); 00703 $tpl->setVariable("TEXT_CONTENT", $val); 00704 $tpl->parseCurrentBlock(); 00705 $tpl->setCurrentBlock("table_cell"); 00706 $tpl->parseCurrentBlock(); 00707 } //foreach 00708 $tpl->setCurrentBlock("tbl_content"); 00709 $tpl->setVariable("CSS_ROW", $css_row); 00710 $tpl->parseCurrentBlock(); 00711 } //for 00712 } 00713 00714 } 00715 elseif($_POST["stat"] == "o") //Object Access 00716 { 00717 if(($_POST["object_type"]=="lm" and $_POST["author"] =="0") or ($_POST["object_type"]=="tst" and $_POST["author1"]=="0")) 00718 { 00719 $title_new = array("author", "subject", "count",""); 00720 } 00721 else 00722 { 00723 $title_new = array("subject", "count",""); 00724 } 00725 $acc_object = $this->object->getAccessTotalPerObj($condition); 00726 00727 $this->maxcount = count($acc_object); 00728 if ($this->maxcount < 1) 00729 { 00730 $this->ilias->raiseError($lng->txt("msg_no_search_result"), 00731 $this->ilias->error_obj->MESSAGE); 00732 } 00733 00734 $tbl->setTitle($lng->txt("search_result"),0,0); 00735 00736 include_once "./classes/class.ilTableGUI.php"; 00737 $tbl = new ilTableGUI(); 00738 $tbl->setTitle($lng->txt("obj_trac"),0,0); 00739 foreach ($title_new as $val) 00740 { 00741 $header_names[] = $lng->txt($val); 00742 } 00743 $tbl->disable("sort"); 00744 $tbl->setHeaderNames($header_names); 00745 $tbl->setMaxCount($this->maxcount); 00746 $tbl->setStyle("table", "std"); 00747 $tbl->render(); 00748 $max = 0; 00749 foreach ($acc_object as $obj) 00750 { 00751 $max = ($max > $obj["cnt"]) ? $max : $obj["cnt"]; 00752 } 00753 00754 foreach ($acc_object as $obj) 00755 { 00756 if(($_POST["object_type"]=="lm" and $_POST["author"]=="0") or ($_POST["object_type"]=="tst" and $_POST["author1"]=="0")) 00757 { 00758 $data[0] = $obj["author"]; 00759 $data[1] = $obj["title"]; 00760 $data[2] = $obj["cnt"]; 00761 $width = ($max > 0) 00762 ? round($data[2] / $max * 100) 00763 : 0; 00764 $data[3] = "<img src=\"".ilUtil::getImagePath("ray.gif")."\" border=\"0\" ". 00765 "width=\"".$width."\" height=\"10\"/>"; 00766 } 00767 else 00768 { 00769 $data[0] = $obj["title"]; 00770 $data[1] = $obj["cnt"]; 00771 $width = ($max > 0) 00772 ? round($data[1] / $max * 100) 00773 : 0; 00774 $data[2] = "<img src=\"".ilUtil::getImagePath("ray.gif")."\" border=\"0\" ". 00775 "width=\"".$width."\" height=\"10\"/>"; 00776 } 00777 $css_row = $i%2==0?"tblrow1":"tblrow2"; 00778 foreach ($data as $key => $val) 00779 { 00780 if($val=="") 00781 { 00782 $val=0; 00783 } 00784 $tpl->setCurrentBlock("text"); 00785 $tpl->setVariable("TEXT_CONTENT", $val); 00786 $tpl->parseCurrentBlock(); 00787 $tpl->setCurrentBlock("table_cell"); 00788 $tpl->parseCurrentBlock(); 00789 } //foreach 00790 $tpl->setCurrentBlock("tbl_content"); 00791 $tpl->setVariable("CSS_ROW", $css_row); 00792 $tpl->parseCurrentBlock(); 00793 } //for 00794 00795 } 00796 else //user not selected 00797 { 00798 $title_new = array("time", "count", ""); 00799 00800 include_once "./classes/class.ilTableGUI.php"; 00801 $tbl = new ilTableGUI(); 00802 $tbl->setTitle($lng->txt("obj_trac"),0,0); 00803 foreach ($title_new as $val) 00804 { 00805 $header_names[] = $lng->txt($val); 00806 } 00807 $tbl->disable("sort"); 00808 $tbl->setHeaderNames($header_names); 00809 00810 if($_POST["stat"]=='h') 00811 { 00812 $num = 24; 00813 $tbl->setMaxCount($num); 00814 } 00815 else 00816 { 00817 $num = $this->numDay($from,$to); 00818 $from1 = $this->addDay($from); 00819 $tbl->setMaxCount($num); 00820 } 00821 $tbl->setStyle("table", "std"); 00822 $tbl->render(); 00823 00824 // contition 00825 $condition = $this->getCondition(); 00826 00827 if($_POST["stat"]=='h') //hours of day 00828 { 00829 $time = $this->selectTime($from,$to,$condition); 00830 $max = 0; 00831 for($i=0;$i<24;$i++) 00832 { 00833 $k = $i+1; 00834 00835 // count number of accesses in hour $i 00836 $cou = 0; 00837 for($j=0;$j<count($time);$j++) 00838 { 00839 $time1 = strtotime($time[$j][0]); 00840 $day = date("d",$time1); 00841 $month = date("m",$time1); 00842 $year = date("Y",$time1); 00843 $hour = date("H",$time1); 00844 $min = date("i",$time1); 00845 $sec = date("s",$time1); 00846 $numb = date("H",mktime($hour,$min,$sec,$month,$day,$year)); 00847 $numb = intval($numb); 00848 if($numb >=$i and $numb <$k) 00849 { 00850 $cou=$cou+1; 00851 } 00852 } 00853 $count[$i] = $cou; 00854 $max = ($cou > $max) ? $cou : $max; 00855 } 00856 00857 for($i=0;$i<24;$i++) 00858 { 00859 $k = $i+1; 00860 $data[0] = $i.":00:00 ~ ".$k.":00:00"; 00861 $data[1] = $count[$i]; 00862 $width = ($max > 0) 00863 ? round($count[$i] / $max * 100) 00864 : 0; 00865 $data[2] = "<img src=\"".ilUtil::getImagePath("ray.gif")."\" border=\"0\" ". 00866 "width=\"".$width."\" height=\"10\"/>"; 00867 $css_row = $i%2==0?"tblrow1":"tblrow2"; 00868 foreach ($data as $key => $val) 00869 { 00870 00871 $tpl->setCurrentBlock("text"); 00872 $tpl->setVariable("TEXT_CONTENT", $val); 00873 $tpl->parseCurrentBlock(); 00874 $tpl->setCurrentBlock("table_cell"); 00875 $tpl->parseCurrentBlock(); 00876 } 00877 $tpl->setCurrentBlock("tbl_content"); 00878 $tpl->setVariable("CSS_ROW", $css_row); 00879 $tpl->parseCurrentBlock(); 00880 00881 } //for 00882 } 00883 else //day selected 00884 { 00885 $max = 0; 00886 for($i=0;$i<$num;$i++) 00887 { 00888 $fro[$i] = $from; 00889 $cou[$i] = $this->countNum($from,$from1,$condition); 00890 $from = $from1; 00891 $from1 = $this->addDay($from); 00892 $max = ($max > $cou[$i]) ? $max : $cou[$i]; 00893 } 00894 for($i=0;$i<$num;$i++) 00895 { 00896 $data[0] = $fro[$i]; 00897 $data[1] = $cou[$i]; 00898 $width = ($max > 0) 00899 ? round($cou[$i] / $max * 100) 00900 : 0; 00901 $data[2] = "<img src=\"".ilUtil::getImagePath("ray.gif")."\" border=\"0\" ". 00902 "width=\"".$width."\" height=\"10\"/>"; 00903 00904 $css_row = $i%2==0?"tblrow1":"tblrow2"; 00905 00906 foreach ($data as $key => $val) 00907 { 00908 $tpl->setCurrentBlock("text"); 00909 $tpl->setVariable("TEXT_CONTENT", $val); 00910 $tpl->parseCurrentBlock(); 00911 $tpl->setCurrentBlock("table_cell"); 00912 $tpl->parseCurrentBlock(); 00913 } 00914 $tpl->setCurrentBlock("tbl_content"); 00915 $tpl->setVariable("CSS_ROW", $css_row); 00916 $tpl->parseCurrentBlock(); 00917 } //for 00918 } 00919 }//else 00920 $tpl->setCurrentBlock("adm_content"); 00921 00922 // output statistic settings 00923 $tpl->setVariable("TXT_TIME_PERIOD", $lng->txt("time_segment")); 00924 switch ($_POST["stat"]) 00925 { 00926 case "h": 00927 $tpl->setVariable("TXT_STATISTIC", $lng->txt("hours_of_day")); 00928 break; 00929 00930 case "u": 00931 $tpl->setVariable("TXT_STATISTIC", $lng->txt("user_access")); 00932 break; 00933 00934 case "d": 00935 $tpl->setVariable("TXT_STATISTIC", $lng->txt("days_of_period")); 00936 break; 00937 } 00938 $tpl->setVariable("VAL_DATEF", date("Y-m-d", mktime(0,0,0,$monthf,$dayf,$yearf))); 00939 $tpl->setVariable("TXT_TO", $lng->txt("to")); 00940 $tpl->setVariable("VAL_DATET", date("Y-m-d", mktime(0,0,0,$montht,$dayt,$yeart))); 00941 $tpl->setVariable("TXT_USER_LANGUAGE", $lng->txt("user_language")); 00942 if ($_POST["language"] == "0") 00943 { 00944 $tpl->setVariable("VAL_LANGUAGE", $lng->txt("any_language")); 00945 } 00946 else 00947 { 00948 $tpl->setVariable("VAL_LANGUAGE", $lng->txt("lang_".$_POST["language"])); 00949 } 00950 $tpl->setVariable("TXT_TRACKED_OBJECTS", $lng->txt("tracked_objects")); 00951 if ($_POST[$_POST["object_type"]] != 0) 00952 { 00953 $tpl->setVariable("VAL_TRACKED_OBJECTS", 00954 ilObject::_lookupTitle($_POST[$_POST["object_type"]])); 00955 } 00956 else 00957 { 00958 $tpl->setVariable("VAL_TRACKED_OBJECTS", 00959 $lng->txt("all_".$_POST["object_type"]."s")); 00960 } 00961 $tpl->parseCurrentBlock(); 00962 } 00963 */ 00967 /* 00968 function getCondition() 00969 { 00970 $lang_cond = $this->getLanguageCondition(); 00971 //echo ":$lang_cond:"; 00972 if ($lang_cond == "") 00973 { 00974 $this->setConditions($this->getObjectCondition()); 00975 return $this->getObjectCondition(); 00976 } 00977 else 00978 { 00979 $this->setConditions($lang_cond." AND ".$this->getObjectCondition()); 00980 return $lang_cond." AND ".$this->getObjectCondition(); 00981 } 00982 } 00983 */ 00984 00988 /* 00989 function getObjectCondition() 00990 { 00991 global $ilDB; 00992 00993 $type = $_POST["object_type"]; 00994 $condition = ""; 00995 if($_POST["object_type"]=="lm") 00996 { 00997 if($_POST["author"]=="0") 00998 { 00999 return " acc_obj_type = 'lm'"; 01000 } 01001 elseif($_POST["lm"]=="0" or $_POST["lm"]=="") 01002 { 01003 $authors = ilObjSysUserTracking::allAuthor("usr","lm"); 01004 foreach ($authors as $author) 01005 { 01006 if($author["title"]==$_POST["author"]) 01007 $lms = ilObjSysUserTracking::authorLms($author["obj_id"],"lm"); 01008 foreach ($lms as $lm) 01009 { 01010 $condition = $condition." or acc_obj_id = ".$lm["obj_id"]; 01011 } 01012 } 01013 return " ( 0 ".$condition." ) "; 01014 } 01015 else 01016 { 01017 $condition.= " acc_obj_id = ".ilObjSysUserTracking::getObjId($_POST["lm"],$type); 01018 return $condition; 01019 } 01020 01021 } 01022 else 01023 { 01024 if($_POST["author1"]=="0") 01025 { 01026 return " acc_obj_type = 'tst'"; 01027 } 01028 elseif($_POST["tst"]=="0" or $_POST["tst"]=="") 01029 { 01030 $authors = ilObjSysUserTracking::allAuthor("usr","tst"); 01031 foreach ($authors as $author) 01032 { 01033 if($author["title"]==$_POST["author1"]) 01034 $lms = ilObjSysUserTracking::authorLms($author["obj_id"],"tst"); 01035 foreach ($lms as $lm) 01036 { 01037 $condition = $condition." or acc_obj_id = ".$lm["obj_id"]; 01038 } 01039 } 01040 return " ( 0 ".$condition." ) "; 01041 } 01042 else 01043 { 01044 $condition.= " acc_obj_id = ".ilObjSysUserTracking::getObjId($_POST["tst"],$type); 01045 return $condition; 01046 } 01047 } 01048 } 01049 */ 01053 /* 01054 function getLanguageCondition() 01055 { 01056 global $ilDB; 01057 01058 if ($_POST["language"] != "0") 01059 { 01060 return "ut_access.language =".$ilDB->quote($_POST["language"]); 01061 } 01062 01063 return ""; 01064 } 01065 function setConditions($con) 01066 { 01067 $this->conditions = $con; 01068 } 01069 function getConditions() 01070 { 01071 return $this->conditions; 01072 } 01073 */ 01077 /* 01078 function numDay($from,$to) 01079 { 01080 $from = strtotime($from); 01081 $to = strtotime($to); 01082 $dayf = date ("d",$from); 01083 $dayt = date ("d",$to); 01084 $yearf = date ("Y",$from); 01085 $yeart = date ("Y",$to); 01086 $montht = date ("m",$to); 01087 $monthf = date ("m",$from); 01088 $ret = ( mktime(0,0,0,$montht,$dayt,$yeart) - mktime(0,0,0,$monthf,$dayf,$yearf))/(3600*24); 01089 return $ret; 01090 } 01091 */ 01092 01096 /* 01097 function numHour($from,$to) 01098 { 01099 $from = strtotime($from); 01100 $to = strtotime($to); 01101 $dayf = date ("d",$from); 01102 $dayt = date ("d",$to); 01103 $yearf = date ("Y",$from); 01104 $yeart = date ("Y",$to); 01105 $montht = date ("m",$to); 01106 $monthf = date ("m",$from); 01107 $hourt = date ("h",$to); 01108 $hourf = date ("h",$from); 01109 $ret = (mktime($hourt,0,0,$montht,$dayt,$yeart)-mktime($hourf,0,0,$monthf,$dayf,$yearf))/3600; 01110 $ret = strftime($ret); 01111 return $ret; 01112 } 01113 */ 01114 01118 /* 01119 function addHour($time) 01120 { 01121 $time = strtotime($time); 01122 $day = date("d",$time); 01123 $month = date("m",$time); 01124 $year = date("Y",$time); 01125 $hour = date("H",$time); 01126 $min = date("i",$time); 01127 $sec = date("s",$time); 01128 $hour = $hour+1; 01129 $ret = date("H:i:s", mktime($hour,$min,$sec,$month,$day,$year)); 01130 return $ret; 01131 } 01132 */ 01133 01137 /* 01138 function addDay($time) 01139 { 01140 $time = strtotime($time); 01141 $day = date("d",$time); 01142 $month = date("m",$time); 01143 $year = date("y",$time); 01144 $min = date("i",$time); 01145 $hour = date("h",$time); 01146 $sec = date("s",$time); 01147 $day = $day + 1; 01148 $ret = date ("Y-m-d", mktime($hour,$min,$sec,$month,$day,$year)); 01149 return $ret; 01150 } 01151 */ 01152 01156 /* 01157 function selectTime($from,$to,$condition) 01158 { 01159 $q = "SELECT acc_time from ut_access " 01160 ." WHERE (acc_time >= '".$from 01161 ."' AND acc_time <='".$to."')" 01162 ." AND ".$condition; 01163 $res = $this->ilias->db->query($q); 01164 for($i=0;$i<$res->numRows();$i++) 01165 { 01166 $result[$i]=$res->fetchRow(); 01167 } 01168 return $result; 01169 } 01170 */ 01171 01175 /* 01176 function countNum($from,$from1,$condition) 01177 { 01178 $q = "SELECT count(*) from ut_access " 01179 ." WHERE (acc_time > '".$from 01180 ."' AND acc_time <='".$from1."')" 01181 ." AND ".$condition; 01182 $res = $this->ilias->db->query($q); 01183 $result = $res->fetchRow(); 01184 return $result[0]; 01185 } 01186 */ 01192 /* 01193 function getTabs(&$tabs_gui) 01194 { 01195 global $rbacsystem; 01196 01197 if ($rbacsystem->checkAccess("write",$this->object->getRefId())) 01198 { 01199 $tabs_gui->addTarget("settings", 01200 $this->ctrl->getLinkTarget($this, "settings"), array("settings",""), "", ""); 01201 01202 $tabs_gui->addTarget("tracking_data", 01203 $this->ctrl->getLinkTarget($this, "trackingDataQueryForm"), "trackingDataQueryForm", "", ""); 01204 01205 $tabs_gui->addTarget("manage_tracking_data", 01206 $this->ctrl->getLinkTarget($this, "manageData"), "manageData", "", ""); 01207 01208 $tabs_gui->addTarget("learning_progress", 01209 $this->ctrl->getLinkTarget($this, "learningProgress"), "learningProgress", "", ""); 01210 } 01211 01212 01213 if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId())) 01214 { 01215 $tabs_gui->addTarget("perm_settings", 01216 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui'); 01217 } 01218 } 01219 */ 01220 } // END class.ilObjSysUserTrackingGUI 01221 ?>
1.7.1