=0; $i--) { $main_day[date ('d-m-Y', mktime () - $i * 3600 * 24)]=0; } for ($i=$last_months; $i>=0; $i--) { $main_month_year[date ('m-Y', mktime () - $i*30 * 3600 * 24)]=0; } $i = 0; if (is_array($connections) && count($connections)>0 ){ 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_month_year[date('m-Y',$data['login'])]+=float_format(($data['logout']-$data['login'])/60, 0); //$main_day[date('d-m-Y',$data['login'])]+=calculHours($data['logout']-$data['login'])*60; $main_day[date('d-m-Y',$data['login'])]+=float_format(($data['logout']-$data['login'])/60, 0); if ($i > 500) { break; } $i++; } //var_dump($main_month_year); 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(api_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 archive/ 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 '
';
} else {
Display::display_warning_message (get_lang('GraphicNotAvailable'));
}
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);
$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 '',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();
/*
-----------------------------------------------------------
Functions
-----------------------------------------------------------
*/
/**
* Gets the connections to a course as an array of login and logout time
*
* @param unknown_type $user_id
* @param unknown_type $course_code
* @return unknown
*/
function get_connections_to_course($user_id, $course_code) {
// Database table definitions
$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="'.Database::escape_string($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="' . Database::escape_string($course_true) . '" ORDER BY login_course_date ASC';
$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;
}
/**
* Enter description here...
*
* @param unknown_type $user_id
* @param unknown_type $course_code
* @param unknown_type $year
* @param unknown_type $month
* @param unknown_type $day
* @return unknown
*/
function get_connections_to_course_by_time($user_id, $course_code, $year='', $month='', $day='') {
// Database table definitions
$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="'.Database :: escape_string($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="' . Database::escape_string($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
*
* @param unknown_type $seconds
* @return unknown
*/
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;
}
?>