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