diff --git a/main/inc/ajax/myspace.ajax.php b/main/inc/ajax/myspace.ajax.php
new file mode 100644
index 0000000000..c7ea4e4565
--- /dev/null
+++ b/main/inc/ajax/myspace.ajax.php
@@ -0,0 +1,60 @@
+true);
+ $start_date = isset($_REQUEST['startDate'])?$_REQUEST['startDate']:"";
+ $end_date = isset($_REQUEST['endDate'])?$_REQUEST['endDate']:"";
+ $user_id = isset($_REQUEST['student'])?$_REQUEST['student']:"";
+ $course_code = isset($_REQUEST['course'])?$_REQUEST['course']:"";
+
+ $sql_result = get_connections_to_course_by_date($user_id, $course_code, $start_date, $end_date);
+
+ if (is_array($sql_result) && count($sql_result) > 0) {
+ $db['is_empty'] = false;
+ $db['result'] = convert_to_string($sql_result);
+ $rst = get_stats($user_id, $course_code, $start_date, $end_date);
+ $foo_stats = ''.get_lang('Total').': '.$rst['total'].'
';
+ $foo_stats .= ''.get_lang('Average').': '.$rst['avg'].'
';
+ $foo_stats .= ''.get_lang('Quantity').' : '.$rst['times'].'
';
+ $db['stats'] = $foo_stats;
+ $db['graph_result'] = grapher($sql_result, $start_date, $end_date);
+ } else {
+ $db['result'] = '
No se encontro información habilitada del usuario
';
+ $db['graph_result'] = ' No se encontro información habilitada del usuario
';
+ $db['stats'] = ' No se encontro información registrada para este rango
';
+ }
+ header('Cache-Control: no-cache');
+ echo json_encode($db); // requires: PHP >= 5.2.0, PECL json >= 1.2.0
+
+ break;
+}
+exit;
\ No newline at end of file
diff --git a/main/mySpace/access_details.php b/main/mySpace/access_details.php
index 356ff24c55..28a2be4164 100755
--- a/main/mySpace/access_details.php
+++ b/main/mySpace/access_details.php
@@ -8,7 +8,6 @@
* Calculates the time spent on the course
* @param integer $user_id the user id
* @param string $course_code the course code
-* @author Mario per testare cose
* @author Julio Montoya
*
*/
@@ -16,7 +15,6 @@
// name of the language file that needs to be included
$language_file = array ('registration', 'index', 'tracking');
-// including the global Dokeos file
require_once '../inc/global.inc.php';
// including additional libraries
@@ -29,199 +27,210 @@ require_once 'myspace.lib.php';
// the section (for the tabs)
$this_section = SECTION_TRACKING;
-
/* MAIN */
$user_id = intval($_REQUEST['student']);
$session_id = intval($_GET['id_session']);
$course_code = Security::remove_XSS($_REQUEST['course']);
$connections = MySpace::get_connections_to_course($user_id, $course_code, $session_id);
+$quote_simple = "'";
+
+$htmlHeadXtra[] = api_get_jquery_ui_js();
+
+$htmlHeadXtra[] = '';
+$htmlHeadXtra[] = '';
+
+$htmlHeadXtra[] = '';
+
-if (api_is_xml_http_request()) {
- $type = Security::remove_XSS($_GET['type']);
- $main_year = $main_month_year = $main_day = array();
- // get last 8 days/months
- $last_days = 8;
- $last_months = 5;
- for ($i = $last_days; $i >= 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_month_year[date('m-Y', $data['login'])] += float_format(($data['logout'] - $data['login']) / 60, 0);
- $main_day[date('d-m-Y', $data['login'])] += float_format(($data['logout'] - $data['login']) / 60, 0);
- 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;
- }
-
- // the nice graphics :D
- $labels = array_keys($main_date);
- if (count($main_date) == 1) {
- $labels = $labels[0];
- $main_date = $main_date[$labels];
- }
-
- $data_set = new pData;
- $data_set->AddPoint($main_date, 'Q');
- if (count($main_date)!= 1) {
- $data_set->AddPoint($labels, 'Date');
- }
- $data_set->AddAllSeries();
- $data_set->RemoveSerie('Date');
- $data_set->SetAbsciseLabelSerie('Date');
- $data_set->SetYAxisName(get_lang('Minutes', ''));
- $graph_id = api_get_user_id().'AccessDetails'.api_get_course_id();
- $data_set->AddAllSeries();
-
- $cache = new pCache();
- // the graph id
- $data = $data_set->GetData();
-
- if ($cache->IsInCache($graph_id, $data_set->GetData())) {
- //if (0) {
- //if we already created the img
- // echo 'in cache';
- $img_file = $cache->GetHash($graph_id, $data_set->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($data_set->GetData(), $data_set->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($data_set->GetData(), $data_set->GetDataDescription(), TRUE);
- } else {
- //Draw the line graph
- //$test->drawLineGraph($data_set->GetData(), $data_set->GetDataDescription());
- //$test->drawCubicCurve($data_set->GetData(), $data_set->GetDataDescription());
- //$test->drawFilledLineGraph($data_set->GetData(), $data_set->GetDataDescription());
- $test->drawFilledCubicCurve($data_set->GetData(), $data_set->GetDataDescription(),.2,50);
- $test->drawPlotGraph($data_set->GetData(), $data_set->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, $data_set->GetData(), $test);
- ob_start();
- $test->Stroke();
- ob_end_clean();
- $img_file = $cache->GetHash($graph_id, $data_set->GetData());
- }
- echo '
';
- } else {
- Display::display_warning_message(api_convert_encoding(get_lang('GraphicNotAvailable'),'UTF-8'));
- }
- exit;
+$htmlHeadXtra[] = '';
+
+$htmlHeadXtra[] = '';
+//Changes END
+
Display :: display_header('');
$tbl_userinfo_def = Database :: get_course_table(TABLE_USER_INFO);
$main_user_info = api_get_user_info($user_id);
$result_to_print = '';
$main_date_array = array();
-$session_name = api_get_session_name(api_get_session_id());
-if (!empty($session_name)) {
- $session_name = get_lang('Session').' '.$session_name.' | ';
-}
-echo ''.get_lang('Course').': '.$course_code.' | '.(empty($session_name)?'':$session_name).' '.get_lang('User').': '.api_get_person_name($main_user_info['firstName'], $main_user_info['lastName']).'
';
-api_display_tool_title(get_lang('DetailsStudentInCourse'));
-
-if (!empty($connections)) {
- foreach ($connections as $key => $data) {
- $result_to_print .= ' '.date('d-m-Y (H:i:s)', $data['login']).' - '.api_time_to_hms($data['logout'] - $data['login']).'
'."\n";
- }
+$sql_result = MySpace::get_connections_to_course($user_id, $course_code);
+$result_to_print = convert_to_string($sql_result);
- echo '';
-
- echo '';
-
-
- echo '
';
- echo '', get_lang('DateAndTimeOfAccess'), ' - ', get_lang('Duration'), '
';
- echo $result_to_print;
-} else {
- Display::display_warning_message(get_lang('GraphicNotAvailable'));
-}
+api_display_tool_title(get_lang('DetailsStudentInCourse'));
+?>
+
+
+
+
+
+ '.get_lang('Total').': '.$rst['total'].'
';
+ $foo_stats .= '
'.get_lang('Average').': '.$rst['avg'].'
';
+ $foo_stats .= '
'.get_lang('Quantity').' : '.$rst['times'].'
';
+ echo $foo_stats;
+ }
+ else{
+ echo ('
No se encontro información habilitada del usuario
');
+ }?>
+
+
+
+
+
+
+
+
+
+
+ No se encontro información habilitada del usuario
');
+ }?>
+
+
');
+ }?>
+
+
+ $foo_avg, 'total' => $foo_total, 'times' => $foo_times);
+ $tbl_main = Database :: get_main_table(TABLE_MAIN_COURSE);
+
+ $course_info = api_get_course_info($course_code);
+ if (!empty($course_info)) {
+ $strg_sd = "";
+ $strg_ed = "";
+ if ($start_date != null && $end_date != null){
+ $end_date = add_day_to( $end_date );
+ $strg_sd = "AND login_course_date BETWEEN '$start_date' AND '$end_date'";
+ $strg_ed = "AND logout_course_date BETWEEN '$start_date' AND '$end_date'";
+ }
+ $sql = 'SELECT SEC_TO_TIME(avg(time_to_sec(timediff(logout_course_date,login_course_date)))) as avrg,
+ SEC_TO_TIME(sum(time_to_sec(timediff(logout_course_date,login_course_date)))) as total,
+ count(user_id) as times
+ FROM ' . $tbl_track_course . '
+ WHERE user_id = ' . intval($user_id) . '
+ AND course_code = "' . Database::escape_string($course_code) . '" '.$strg_sd.' '.$strg_ed.' '.'
+ ORDER BY login_course_date ASC';
+
+ $rs = Database::query($sql);
+ $result = array();
+
+ if ($row = Database::fetch_array($rs)) {
+ $foo_avg = $row['avrg'];
+ $foo_total = $row['total'];
+ $foo_times = $row['times'];
+ $result = array('avg' => $foo_avg, 'total' => $foo_total, 'times' => $foo_times);
+ }
}
return $result;
}
-function cev_add_day_to( $end_date ){
+function add_day_to($end_date) {
$foo_date = strtotime( $end_date );
$foo_date = strtotime(" +1 day", $foo_date);
$foo_date = date("Y-m-d", $foo_date);
@@ -1881,56 +1867,51 @@ function cev_add_day_to( $end_date ){
/**
* Gets the connections to a course as an array of login and logout time
*
- * @param unknown_type $user_id
- * @param unknown_type $course_code
- * @author Jorge Frisancho Jibaja
- * @version CEV OCT-22- 2010
- * @return unknown
+ * @param int $user_id
+ * @param string $course_code
+ * @author Jorge Frisancho Jibaja
+ * @author Julio Montoya fixing the function
+ * @version OCT-22- 2010
+ * @return array
*/
function get_connections_to_course_by_date($user_id, $course_code, $start_date, $end_date) {
// 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 = Database::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;
- $COMILLA_SIMPLE = "'";
-
- $end_date = cev_add_day_to( $end_date );
- $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) . '"
- AND login_course_date BETWEEN ' . $COMILLA_SIMPLE . $start_date . $COMILLA_SIMPLE . ' AND ' . $COMILLA_SIMPLE . $end_date . $COMILLA_SIMPLE . '
- AND logout_course_date BETWEEN ' . $COMILLA_SIMPLE . $start_date . $COMILLA_SIMPLE . ' AND ' . $COMILLA_SIMPLE . $end_date . $COMILLA_SIMPLE . '
- ORDER BY login_course_date ASC';
-
- $rs = Database::query($sql, __FILE__, __LINE__);
- $connections = array();
-
- while ($row = Database::fetch_array($rs)) {
-
- $login_date = $row['login_course_date'];
- $logout_date = $row['logout_course_date'];
-
- $timestamp_login_date = strtotime($login_date);
- $timestamp_logout_date = strtotime($logout_date);
-
- $connections[] = array('login' => $timestamp_login_date, 'logout' => $timestamp_logout_date);
+ $tbl_main = Database :: get_main_table(TABLE_MAIN_COURSE);
+
+ $course_info = api_get_course_info($course_code);
+ $user_id = intval($user_id);
+ if (!empty($course_info)) {
+ $end_date = add_day_to($end_date);
+ $sql = "SELECT login_course_date, logout_course_date FROM $tbl_track_course
+ WHERE user_id = $user_id
+ AND course_code = '$course_code'
+ AND login_course_date BETWEEN '$start_date' AND '$end_date'
+ AND logout_course_date BETWEEN '$start_date' AND '$end_date'
+ ORDER BY login_course_date ASC";
+ $rs = Database::query($sql);
+ $connections = array();
+
+ while ($row = Database::fetch_array($rs)) {
+ $login_date = $row['login_course_date'];
+ $logout_date = $row['logout_course_date'];
+ $timestamp_login_date = strtotime($login_date);
+ $timestamp_logout_date = strtotime($logout_date);
+ $connections[] = array('login' => $timestamp_login_date, 'logout' => $timestamp_logout_date);
+ }
}
return $connections;
}
/**
- * conver an sql result to an array
+ *
*
- * @param unknown_type $sql_result
+ * @param array
* @author Jorge Frisancho Jibaja
- * @version CEV OCT-22- 2010
+ * @version OCT-22- 2010
* @return array
*/
-function cev_convert_to_array($sql_result){
+function convert_to_array($sql_result){
$result_to_print = '';
foreach ($sql_result as $key => $data) {
$result_to_print .= ''.date('d-m-Y (H:i:s)', $data['login']).' | '.api_time_to_hms($data['logout'] - $data['login']).' |
'."\n";
@@ -1940,15 +1921,16 @@ function cev_convert_to_array($sql_result){
return $result_to_print;
}
+
/**
- * converter an array to a table in html
+ * Converte an array to a table in html
*
* @param array $sql_result
* @author Jorge Frisancho Jibaja
- * @version CEV OCT-22- 2010
+ * @version OCT-22- 2010
* @return string
*/
-function cev_convert_to_string($sql_result){
+function convert_to_string($sql_result){
$result_to_print = '';
if (!empty($sql_result)) {
foreach ($sql_result as $key => $data) {
@@ -1968,10 +1950,10 @@ function cev_convert_to_string($sql_result){
* @param string $end_date
* @param string $type
* @author Jorge Frisancho Jibaja
- * @version CEV OCT-22- 2010
+ * @version OCT-22- 2010
* @return string
*/
-function cev_grapher($sql_result, $start_date, $end_date, $type = "") {
+function grapher($sql_result, $start_date, $end_date, $type = "") {
require_once api_get_path(LIBRARY_PATH).'pchart/pData.class.php';
require_once api_get_path(LIBRARY_PATH).'pchart/pChart.class.php';
require_once api_get_path(LIBRARY_PATH).'pchart/pCache.class.php';
diff --git a/main/mySpace/slider.css b/main/mySpace/slider.css
new file mode 100644
index 0000000000..82d04f7136
--- /dev/null
+++ b/main/mySpace/slider.css
@@ -0,0 +1,57 @@
+div#cev_cont_results
+{
+ margin: 0;
+ padding-left:18px;
+ padding-right:18px;
+}
+div#cev_cont_header
+{
+ margin: 0;
+ padding-left:18px;
+ padding-right:18px;
+}
+div#cev_cont_stats
+{
+ margin: 0;
+ padding-left:18px;
+ padding-right:18px;
+}
+div.slider
+{
+ overflow: hidden;
+ display: none;
+ line-height: 20px;
+}
+
+div#cev_cont .ui-tabs-nav .ui-helper-reset .ui-helper-clearfix .ui-widget-header .ui-corner-all
+{
+ margin: 0;
+ padding-left:18px;
+ padding-right:18px;
+}
+
+div.slider_menu a
+{
+ color: #3757F7;
+ font-size: 13px;
+}
+
+/**
+ * Not required, for styling only
+ */
+
+div#slider_wrapper
+{
+ width: 500px;
+}
+
+div.title
+{
+ font-weight: bold;
+}
+
+div.slider p
+{
+ padding: 0 0 1em 0;
+ margin: 0;
+}
diff --git a/main/mySpace/slider.js b/main/mySpace/slider.js
new file mode 100644
index 0000000000..2bec3e0f58
--- /dev/null
+++ b/main/mySpace/slider.js
@@ -0,0 +1,84 @@
+// Set the initial height
+var sliderHeight = "80px";
+
+$(document).ready(function(){
+ // Show the slider content
+ $('.slider').show();
+
+ $('.slider').each(function () {
+ var current = $(this);
+ current.attr("box_h", current.height());
+ });
+
+ $(".slider").css("height", sliderHeight);
+});
+
+function sliderGetHeight(foo_var)
+{
+ var current = $(foo_var);
+ if (current.height() <= 80){
+ return current.height()+30;
+ }
+ else {
+ return current.height();
+ }
+}
+
+function sliderSetHeight(foo_var, foo_height)
+{
+ $(foo_var).each(function () {
+ var current = $(this);
+ current.attr("box_h", foo_height);
+ });
+}
+
+function controlSliderMenu(foo_height_a)
+{
+ if (foo_height_a <= 80){
+ sliderOpen();
+ slider_state = "open"
+ $(".slider_menu").empty();
+
+ }
+}
+// Set the initial slider state
+var slider_state = "close";
+
+function getSliderState()
+{
+ return slider_state;
+}
+
+function setSliderState(foo_slider_state)
+{
+ slider_state = foo_slider_state;
+}
+function sliderAction()
+{
+ if (slider_state == "close")
+ {
+ sliderOpen();
+ slider_state = "open"
+ $(".slider_menu").html('Cerrar');
+ }
+ else if (slider_state == "open")
+ {
+ sliderClose();
+ slider_state = "close";
+ $(".slider_menu").html('Más...');
+ }
+
+ return false;
+}
+
+function sliderOpen()
+{
+ var open_height = $(".slider").attr("box_h") + "px";
+ $(".slider").animate({"height": open_height}, {duration: "slow" });
+}
+
+function sliderClose()
+{
+ $(".slider").animate({"height": "0px"}, {duration: "fast" });
+ $(".slider").animate({"height": sliderHeight}, {duration: "fast" });
+}
\ No newline at end of file