$i_timestamp_login_date, 'logout'=>$i_timestamp_logout_date); } return $connections; } function get_connections_to_course_by_time($user_id, $course_code, $year='', $month='', $day='') { $course_code = Database::escape_string($course_code); $tbl_track_course = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS); $tbl_main=Database::get_main_table(TABLE_MAIN_COURSE); $sql_query='SELECT visual_code as course_code FROM '.$tbl_main.' c WHERE code="'.$course_code.'";'; $result=api_sql_query($sql_query,__FILE__,__LINE__); $row_query=Database::fetch_array($result,'ASSOC'); $course_true=isset($row_query['course_code']) ? $row_query['course_code']: $course_code; $sql = 'SELECT login_course_date, logout_course_date FROM ' . $tbl_track_course . ' WHERE user_id = ' . intval($user_id) . ' AND course_code="' . $course_true . '" ORDER BY login_course_date DESC'; $rs = api_sql_query($sql); $connections = array(); while ($a_connections = Database::fetch_array($rs)) { $s_login_date = $a_connections['login_course_date']; $s_logout_date = $a_connections['logout_course_date']; $i_timestamp_login_date = strtotime($s_login_date); $i_timestamp_logout_date = strtotime($s_logout_date); $connections[] = array('login'=>$i_timestamp_login_date, 'logout'=>$i_timestamp_logout_date); } return $connections; } /** * Transforms seconds into a time format */ function calculHours($seconds) { //How many hours ? $hours = floor($seconds / 3600); //How many minutes ? $min = floor(($seconds - ($hours * 3600)) / 60); if ($min < 10) $min = '0'.$min; //How many seconds $sec = $seconds - ($hours * 3600) - ($min * 60); if ($sec < 10) $sec = '0'.$sec; return $hours.get_lang('HourShort').' '.$min.':'.$sec; } /* MAIN */ $user_id = Database::escape_string($_REQUEST['student']); $course_code=Database::escape_string($_REQUEST['course']); include_once(api_get_path(LIBRARY_PATH).'pchart/pData.class.php'); include_once(api_get_path(LIBRARY_PATH).'pchart/pChart.class.php'); include_once(api_get_path(LIBRARY_PATH).'pchart/pCache.class.php'); $connections = get_connections_to_course($user_id, $course_code); $i = 0; if (api_is_xml_http_request()) { $type = Security::remove_XSS($_GET['type']); $main_year = $main_month_year = $main_day = array(); foreach ($connections as $key=>$data) { //creating the main array //$main_year[date('Y',$data['login'])]+=calculHours($data['logout']-$data['login'])*60; $main_month_year[date('m-Y',$data['login'])]+=calculHours($data['logout']-$data['login'])*60; $main_day[date('d-m-Y',$data['login'])]+=calculHours($data['logout']-$data['login'])*60; if ($i > 500) { break; } $i++; } switch ($type) { case 'day': $main_date = $main_day; break; case 'month': $main_date = $main_month_year ; break; case 'year': $main_date = $main_year; break; } //echo '
'; print_r($main_date);
	// the nice graphics :D
	$labels = array_keys($main_date);	
	if (count($main_date)==1) {
		$labels = $labels[0];
		$main_date = $main_date[$labels];
	}
	
	$DataSet = new pData;	
	$DataSet->AddPoint($main_date,'Q');
	if (count($main_date)!=1) {
		$DataSet->AddPoint($labels,'Date');
	}
	$DataSet->AddAllSeries();  
	$DataSet->RemoveSerie('Date');  
	$DataSet->SetAbsciseLabelSerie('Date');
	$DataSet->SetYAxisName(ucfirst(get_lang('MinMinutes')));  
	$graph_id = api_get_user_id().'AccessDetails'.api_get_course_id();
	$DataSet->AddAllSeries();
	
	$Cache = new pCache();
	// the graph id
	$data = $DataSet->GetData();
	
	if ($Cache->IsInCache($graph_id, $DataSet->GetData())) {
	//if (0) {
		//if we already created the img
		//	echo 'in cache';
		$img_file = $Cache->GetHash($graph_id,$DataSet->GetData());			
	} else  {		  
	// if the image does not exist in the main/garbage/ folder		
		// Initialise the graph  
		$Test = new pChart(760,230);
		 
		//which schema of color will be used
		$quant_resources = count($data[0])-1;					
		// Adding the color schemma
		$Test->loadColorPalette(api_get_path(LIBRARY_PATH)."pchart/palette/default.txt");
								
	  	$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",8);     
	  	$Test->setGraphArea(70,30,680,200);     
	  	$Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);     
	  	$Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);     
	  	$Test->drawGraphArea(255,255,255,TRUE);  
	  	$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,150,150,150,TRUE,0,0);     
	  	$Test->drawGrid(4,TRUE,230,230,230,50);  
	    $Test->setLineStyle(2); 
		// Draw the 0 line     
		$Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",6);     
		$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
		
	  	if (count($main_date)==1) {
			//Draw a graph 
			echo ''.$labels.'
'; $Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE); } else { //Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); } // Finish the graph $Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",8); $Test->setFontProperties(api_get_path(LIBRARY_PATH)."pchart/fonts/tahoma.ttf",10); $Test->drawTitle(60,22,get_lang('AccessDetails'),50,50,50,585); //------------------ //echo 'not in cache'; $Cache->WriteToCache($graph_id,$DataSet->GetData(),$Test); ob_start(); $Test->Stroke(); ob_end_clean(); $img_file = $Cache->GetHash($graph_id,$DataSet->GetData()); } echo ''; exit; } $nameTools= get_lang('AccessDetails'); //StudentDetails if (isset($_GET['origin']) && strcmp($_GET['origin'],'tracking_course')===0) { $interbreadcrumb[] = array ("url" => "../tracking/courseLog.php?cidReq=".Security::remove_XSS($_GET['course'])."&studentlist=true&id_session=".api_get_session_id(), "name" => get_lang("Tracking")); $interbreadcrumb[] = array ("url" => "myStudents.php?student=".Security::remove_XSS($_GET['student'])."&details=true&origin=".Security::remove_XSS($_GET['origin'])."&course=".Security::remove_XSS($_GET['course']).'&cidReq='.Security::remove_XSS($_GET['course']), "name" => get_lang('DetailsStudentInCourse')); $interbreadcrumb[] = array ("url" => "#", "name" => get_lang("Details")); } elseif (isset($_GET['origin']) && strcmp($_GET['origin'],'user_course')===0) { $interbreadcrumb[] = array ("url" => "../user/user.php?cidReq=".Security::remove_XSS($_GET['course']), "name" => get_lang("Users")); $interbreadcrumb[] = array ("url" => "myStudents.php?student=".Security::remove_XSS($_GET['student'])."&details=true&origin=".Security::remove_XSS($_GET['origin'])."&course=".Security::remove_XSS($_GET['course']).'&cidReq='.Security::remove_XSS($_GET['course']), "name" => get_lang('DetailsStudentInCourse')); $interbreadcrumb[] = array ("url" => "#", "name" => get_lang("Details")); } $htmlHeadXtra[] = ''; //jQuery $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; $htmlHeadXtra[] = ''; $htmlHeadXtra[] = '' ; Display :: display_header(''); $TBL_USERINFO_DEF = Database :: get_course_table(TABLE_USER_INFO); $mainUserInfo = api_get_user_info($user_id, $course_code); $result_to_print = ''; $main_date_array = array(); foreach ($connections as $key=>$data) { $result_to_print .= '  '.date('d-m-Y (H:i:s)',$data['login']).' - '.calculHours($data['logout']-$data['login']).'
'."\n"; } api_display_tool_title(get_lang('DetailsStudentInCourse')); echo '
'; echo ''.get_lang('User').': '.$mainUserInfo['firstName'].' '.$mainUserInfo['lastName'].'     '.get_lang('Course').': '.$course_code.'
'; echo '
'; ?>
';?>
'; echo '
',get_lang('DateAndTimeOfAccess'),' - ',get_lang('Duration'),'

'; echo $result_to_print; /* Login time against logout time foreach ($connections as $key=>$data) { echo ("".date("d-m-Y (H:i:s)",$data['login'])."".date("d-m-Y (H:i:s)",$data['logout']).""); } */ /* foreach ($connections as $key=>$data) { echo ("".date("d-m-Y (H:i:s)",$data['login'])."".calculHours($data['logout']-$data['login']).""); } echo (""); */ Display:: display_footer(); ?>