@@ -1,9 +1,9 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | $reports_template['Generic'] = array( |
| 4 | - 'description' => 'Generic', |
|
| 5 | - 'getSQL' => 'reports_template_Generic_getSQL', |
|
| 6 | - 'wizard' => |
|
| 4 | + 'description' => 'Generic', |
|
| 5 | + 'getSQL' => 'reports_template_Generic_getSQL', |
|
| 6 | + 'wizard' => |
|
| 7 | 7 | ' |
| 8 | 8 | <span id="Generic" class="step"> |
| 9 | 9 | <span class="font_normal_07em_black">This report does not need any particular settings</span><br /> |
@@ -12,49 +12,49 @@ discard block |
||
| 12 | 12 | '); |
| 13 | 13 | |
| 14 | 14 | function reports_template_Generic_getSQL() { |
| 15 | - // settings |
|
| 16 | - |
|
| 17 | - |
|
| 18 | - // Nom, prenom |
|
| 19 | - $query = 'select u.lastname as "Last name", u.firstname as "First name" '; |
|
| 20 | - $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 21 | - $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 22 | - $query .= ' order by u.user_id '; |
|
| 23 | - $queries[0] = $query; |
|
| 24 | - |
|
| 25 | - // Custom Field |
|
| 26 | - foreach (array(10 => "description") as $k => $v) { |
|
| 27 | - $query = 'select ufv.value as "'.$v.'" '; |
|
| 28 | - $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 29 | - $query .= 'left outer join '.Database::get_main_table(TABLE_EXTRA_FIELD_VALUES).' ufv '; |
|
| 30 | - $query .= ' on ufv.item_id = u.user_id and ufv.field_id = '.$k; |
|
| 31 | - $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 32 | - $query .= ' order by u.user_id '; |
|
| 33 | - $queries[] = $query; |
|
| 34 | - } |
|
| 35 | - |
|
| 36 | - // Stored Value |
|
| 37 | - $sv = array(); |
|
| 38 | - foreach ($sv as $k => $v) { |
|
| 39 | - $query = 'select sec_to_time(sv.sv_value) as "'.$v.'" '; |
|
| 40 | - $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 41 | - $query .= ' left outer join '.Database::get_main_table(TABLE_TRACK_STORED_VALUES).' sv '; |
|
| 42 | - $query .= 'on sv.user_id = u.user_id and sv_key = "'.$k.'" '; |
|
| 43 | - $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 44 | - $query .= ' order by u.user_id '; |
|
| 45 | - $queries[] = $query; |
|
| 46 | - } |
|
| 47 | - |
|
| 48 | - // premiere connexion |
|
| 49 | - $query = 'select min(tel.login_date) as "First connection", max(tel.logout_date) as "Latest connection" '; |
|
| 50 | - $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 51 | - $query .= 'left outer join '.Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN).' tel '; |
|
| 52 | - $query .= ' on tel.login_user_id = u.user_id '; |
|
| 53 | - $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 54 | - $query .= ' group by u.user_id '; |
|
| 55 | - $query .= ' order by u.user_id '; |
|
| 56 | - $queries[] = $query; |
|
| 57 | - |
|
| 58 | - return $queries; |
|
| 15 | + // settings |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + // Nom, prenom |
|
| 19 | + $query = 'select u.lastname as "Last name", u.firstname as "First name" '; |
|
| 20 | + $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 21 | + $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 22 | + $query .= ' order by u.user_id '; |
|
| 23 | + $queries[0] = $query; |
|
| 24 | + |
|
| 25 | + // Custom Field |
|
| 26 | + foreach (array(10 => "description") as $k => $v) { |
|
| 27 | + $query = 'select ufv.value as "'.$v.'" '; |
|
| 28 | + $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 29 | + $query .= 'left outer join '.Database::get_main_table(TABLE_EXTRA_FIELD_VALUES).' ufv '; |
|
| 30 | + $query .= ' on ufv.item_id = u.user_id and ufv.field_id = '.$k; |
|
| 31 | + $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 32 | + $query .= ' order by u.user_id '; |
|
| 33 | + $queries[] = $query; |
|
| 34 | + } |
|
| 35 | + |
|
| 36 | + // Stored Value |
|
| 37 | + $sv = array(); |
|
| 38 | + foreach ($sv as $k => $v) { |
|
| 39 | + $query = 'select sec_to_time(sv.sv_value) as "'.$v.'" '; |
|
| 40 | + $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 41 | + $query .= ' left outer join '.Database::get_main_table(TABLE_TRACK_STORED_VALUES).' sv '; |
|
| 42 | + $query .= 'on sv.user_id = u.user_id and sv_key = "'.$k.'" '; |
|
| 43 | + $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 44 | + $query .= ' order by u.user_id '; |
|
| 45 | + $queries[] = $query; |
|
| 46 | + } |
|
| 47 | + |
|
| 48 | + // premiere connexion |
|
| 49 | + $query = 'select min(tel.login_date) as "First connection", max(tel.logout_date) as "Latest connection" '; |
|
| 50 | + $query .= 'from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 51 | + $query .= 'left outer join '.Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN).' tel '; |
|
| 52 | + $query .= ' on tel.login_user_id = u.user_id '; |
|
| 53 | + $query .= ' where u.user_id in ('.reports_getVisibilitySQL().') '; |
|
| 54 | + $query .= ' group by u.user_id '; |
|
| 55 | + $query .= ' order by u.user_id '; |
|
| 56 | + $queries[] = $query; |
|
| 57 | + |
|
| 58 | + return $queries; |
|
| 59 | 59 | } |
| 60 | 60 | |
@@ -12,30 +12,30 @@ |
||
| 12 | 12 | ');*/ |
| 13 | 13 | |
| 14 | 14 | function reports_template_courseTime_getSQL() { |
| 15 | - // fetch columns |
|
| 16 | - $result = array(); |
|
| 17 | - $query = 'select r.id as kid, c.title as course '. |
|
| 18 | - 'from '. |
|
| 19 | - Database::get_main_table(TABLE_MAIN_REPORTS_KEYS).' r, '. |
|
| 20 | - Database::get_main_table(TABLE_MAIN_COURSE).' c '. |
|
| 21 | - 'where r.course_id=c.id and r.tool_id is null and r.child_id is null'. |
|
| 22 | - ' order by c.title'; |
|
| 23 | - $columns = Database::query($query); |
|
| 24 | - if (Database::num_rows($columns) == 0) |
|
| 25 | - die('<b>'.get_lang('no data found: '.$query).'</b>'); |
|
| 26 | - $columns = Database::store_result($columns); |
|
| 15 | + // fetch columns |
|
| 16 | + $result = array(); |
|
| 17 | + $query = 'select r.id as kid, c.title as course '. |
|
| 18 | + 'from '. |
|
| 19 | + Database::get_main_table(TABLE_MAIN_REPORTS_KEYS).' r, '. |
|
| 20 | + Database::get_main_table(TABLE_MAIN_COURSE).' c '. |
|
| 21 | + 'where r.course_id=c.id and r.tool_id is null and r.child_id is null'. |
|
| 22 | + ' order by c.title'; |
|
| 23 | + $columns = Database::query($query); |
|
| 24 | + if (Database::num_rows($columns) == 0) |
|
| 25 | + die('<b>'.get_lang('no data found: '.$query).'</b>'); |
|
| 26 | + $columns = Database::store_result($columns); |
|
| 27 | 27 | |
| 28 | - // fetch data |
|
| 29 | - $query = 'select u.lastname Name, u.firstname Firstname'; |
|
| 30 | - foreach ($columns as $key => $column) |
|
| 31 | - $query .= ', sec_to_time(k'.$key.'.report_time) as `'. |
|
| 32 | - $column['course'].'` '; |
|
| 33 | - $query .= ' from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 34 | - foreach ($columns as $key => $column) // fixme sessions |
|
| 35 | - $query .= 'left outer join '. |
|
| 36 | - Database::get_main_table(TABLE_MAIN_REPORTS_VALUES). |
|
| 37 | - ' k'.$key. |
|
| 38 | - ' on k'.$key.'.key_id = '.$column['kid']. |
|
| 39 | - ' and k'.$key.'.user_id = u.user_id '; |
|
| 40 | - return $query; |
|
| 28 | + // fetch data |
|
| 29 | + $query = 'select u.lastname Name, u.firstname Firstname'; |
|
| 30 | + foreach ($columns as $key => $column) |
|
| 31 | + $query .= ', sec_to_time(k'.$key.'.report_time) as `'. |
|
| 32 | + $column['course'].'` '; |
|
| 33 | + $query .= ' from '.Database::get_main_table(TABLE_MAIN_USER).' u '; |
|
| 34 | + foreach ($columns as $key => $column) // fixme sessions |
|
| 35 | + $query .= 'left outer join '. |
|
| 36 | + Database::get_main_table(TABLE_MAIN_REPORTS_VALUES). |
|
| 37 | + ' k'.$key. |
|
| 38 | + ' on k'.$key.'.key_id = '.$column['kid']. |
|
| 39 | + ' and k'.$key.'.user_id = u.user_id '; |
|
| 40 | + return $query; |
|
| 41 | 41 | } |
@@ -4,55 +4,55 @@ |
||
| 4 | 4 | require_once 'reports.lib.php'; |
| 5 | 5 | |
| 6 | 6 | $longopts = array( |
| 7 | - 'course:', |
|
| 8 | - 'tool:', |
|
| 9 | - 'ci:', |
|
| 10 | - 'cn:', |
|
| 11 | - 'sci:', |
|
| 12 | - 'scn:', |
|
| 13 | - 'ssci:', |
|
| 14 | - 'sscn:', |
|
| 15 | - 'link:', |
|
| 16 | - 'addValue', |
|
| 17 | - 'addKey', |
|
| 18 | - 'help', |
|
| 19 | - 'clearAll', |
|
| 20 | - 'score:', |
|
| 21 | - 'progress:', |
|
| 22 | - 'time:', |
|
| 23 | - 'attempt:', |
|
| 24 | - 'session:', |
|
| 25 | - 'attempt:', |
|
| 26 | - 'uid:', |
|
| 27 | - 'key:', |
|
| 28 | - 'addDBKeys', |
|
| 29 | - 'build'); |
|
| 7 | + 'course:', |
|
| 8 | + 'tool:', |
|
| 9 | + 'ci:', |
|
| 10 | + 'cn:', |
|
| 11 | + 'sci:', |
|
| 12 | + 'scn:', |
|
| 13 | + 'ssci:', |
|
| 14 | + 'sscn:', |
|
| 15 | + 'link:', |
|
| 16 | + 'addValue', |
|
| 17 | + 'addKey', |
|
| 18 | + 'help', |
|
| 19 | + 'clearAll', |
|
| 20 | + 'score:', |
|
| 21 | + 'progress:', |
|
| 22 | + 'time:', |
|
| 23 | + 'attempt:', |
|
| 24 | + 'session:', |
|
| 25 | + 'attempt:', |
|
| 26 | + 'uid:', |
|
| 27 | + 'key:', |
|
| 28 | + 'addDBKeys', |
|
| 29 | + 'build'); |
|
| 30 | 30 | |
| 31 | 31 | $options = getopt("", $longopts); |
| 32 | 32 | |
| 33 | 33 | echo "\n\n"; |
| 34 | 34 | |
| 35 | 35 | if (array_key_exists('help', $options)) |
| 36 | - echo "help message\n"; |
|
| 36 | + echo "help message\n"; |
|
| 37 | 37 | else if (array_key_exists('clearAll', $options)) { |
| 38 | - reports_clearAll(); |
|
| 38 | + reports_clearAll(); |
|
| 39 | 39 | } else if (array_key_exists('build', $options)) { |
| 40 | - reports_build(); |
|
| 40 | + reports_build(); |
|
| 41 | 41 | } else if (array_key_exists('addDBKeys', $options)) { |
| 42 | - reports_addDBKeys(); |
|
| 42 | + reports_addDBKeys(); |
|
| 43 | 43 | } else if (array_key_exists('addValue', $options)) { |
| 44 | - reports_addValue($options['key'], $options['session'], $options['uid'], |
|
| 45 | - $options['attempt'], $options['score'], |
|
| 46 | - $options['progress'], $options['time']); |
|
| 44 | + reports_addValue($options['key'], $options['session'], $options['uid'], |
|
| 45 | + $options['attempt'], $options['score'], |
|
| 46 | + $options['progress'], $options['time']); |
|
| 47 | 47 | } else if (array_key_exists('addKey', $options)) { |
| 48 | - echo reports_addKey($options['course'], $options['tool'], |
|
| 49 | - $options['ci'], $options['cn'], |
|
| 50 | - $options['sci'], $options['scn'], |
|
| 51 | - $options['ssci'], $options['sscn'], |
|
| 52 | - $options['link']); |
|
| 53 | - echo "\n"; |
|
| 48 | + echo reports_addKey($options['course'], $options['tool'], |
|
| 49 | + $options['ci'], $options['cn'], |
|
| 50 | + $options['sci'], $options['scn'], |
|
| 51 | + $options['ssci'], $options['sscn'], |
|
| 52 | + $options['link']); |
|
| 53 | + echo "\n"; |
|
| 54 | 54 | } else |
| 55 | - echo "action not found\n"; |
|
| 55 | + echo "action not found\n"; |
|
| 56 | 56 | |
| 57 | 57 | echo "\n"; |
| 58 | 58 | ?> |
@@ -34,21 +34,21 @@ discard block |
||
| 34 | 34 | |
| 35 | 35 | // "Link" type |
| 36 | 36 | if ($_REQUEST['format'] == 'link') { |
| 37 | - // converting post vars to get uri |
|
| 38 | - $params = ''; |
|
| 39 | - $kv = array(); |
|
| 40 | - foreach ($_POST as $key => $value) |
|
| 41 | - if ($key != 'format') |
|
| 42 | - $kv[] = $key.'='.urlencode($value); |
|
| 43 | - $query_string = join("&", $kv); |
|
| 44 | - die('<a href="reports.php?format=directlink&'.$query_string.'">'.get_lang('ReportTypeLink').'</a>'); |
|
| 37 | + // converting post vars to get uri |
|
| 38 | + $params = ''; |
|
| 39 | + $kv = array(); |
|
| 40 | + foreach ($_POST as $key => $value) |
|
| 41 | + if ($key != 'format') |
|
| 42 | + $kv[] = $key.'='.urlencode($value); |
|
| 43 | + $query_string = join("&", $kv); |
|
| 44 | + die('<a href="reports.php?format=directlink&'.$query_string.'">'.get_lang('ReportTypeLink').'</a>'); |
|
| 45 | 45 | } |
| 46 | 46 | |
| 47 | 47 | if ($_REQUEST['format'] == 'directlink') { |
| 48 | - foreach (array('jquery.dataTables.min.js') as $js) |
|
| 49 | - $htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/'.$js.'" type="text/javascript" language="javascript"></script>'."\n"; |
|
| 48 | + foreach (array('jquery.dataTables.min.js') as $js) |
|
| 49 | + $htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/'.$js.'" type="text/javascript" language="javascript"></script>'."\n"; |
|
| 50 | 50 | |
| 51 | - $htmlCSSXtra[] = 'dataTable.css'; |
|
| 51 | + $htmlCSSXtra[] = 'dataTable.css'; |
|
| 52 | 52 | |
| 53 | 53 | ?> |
| 54 | 54 | <script type="text/javascript"> |
@@ -63,62 +63,62 @@ discard block |
||
| 63 | 63 | } |
| 64 | 64 | </script> |
| 65 | 65 | <?php |
| 66 | - Display::display_header($tool_name); |
|
| 67 | - echo '<div id="result" class="result">'; |
|
| 66 | + Display::display_header($tool_name); |
|
| 67 | + echo '<div id="result" class="result">'; |
|
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 | // outputing a link to csv file instead of outputing csv data directly |
| 71 | 71 | if ($_REQUEST['format'] == 'csv') { |
| 72 | - // converting post vars to get uri |
|
| 73 | - $params = ''; |
|
| 74 | - $kv = array(); |
|
| 75 | - foreach ($_POST as $key => $value) |
|
| 76 | - if ($key != 'format') |
|
| 77 | - $kv[] = $key.'='.urlencode($value); |
|
| 78 | - $query_string = join("&", $kv); |
|
| 79 | - die('<a href="reports.php?format=downloadcsv&'.$query_string.'">'.get_lang('DownloadFile').'</a>'); |
|
| 72 | + // converting post vars to get uri |
|
| 73 | + $params = ''; |
|
| 74 | + $kv = array(); |
|
| 75 | + foreach ($_POST as $key => $value) |
|
| 76 | + if ($key != 'format') |
|
| 77 | + $kv[] = $key.'='.urlencode($value); |
|
| 78 | + $query_string = join("&", $kv); |
|
| 79 | + die('<a href="reports.php?format=downloadcsv&'.$query_string.'">'.get_lang('DownloadFile').'</a>'); |
|
| 80 | 80 | } else if ($_REQUEST['format'] == 'downloadcsv') { |
| 81 | - if ((strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') == false)) { |
|
| 82 | - header("Pragma: must-revalidate"); |
|
| 83 | - header("Cache-Control: must-revalidate"); |
|
| 84 | - header("Content-type: application/vnd.ms-excel"); |
|
| 85 | - } |
|
| 86 | - else { |
|
| 87 | - header("Content-type: text/csv"); |
|
| 88 | - } |
|
| 89 | - $date = date("Y-m-d"); |
|
| 90 | - $filename = "reporting-$date.csv"; |
|
| 91 | - header("Content-Disposition: attachment; filename=$filename"); |
|
| 92 | - $_REQUEST['format'] = 'csv'; |
|
| 81 | + if ((strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') == false)) { |
|
| 82 | + header("Pragma: must-revalidate"); |
|
| 83 | + header("Cache-Control: must-revalidate"); |
|
| 84 | + header("Content-type: application/vnd.ms-excel"); |
|
| 85 | + } |
|
| 86 | + else { |
|
| 87 | + header("Content-type: text/csv"); |
|
| 88 | + } |
|
| 89 | + $date = date("Y-m-d"); |
|
| 90 | + $filename = "reporting-$date.csv"; |
|
| 91 | + header("Content-Disposition: attachment; filename=$filename"); |
|
| 92 | + $_REQUEST['format'] = 'csv'; |
|
| 93 | 93 | } |
| 94 | 94 | |
| 95 | 95 | |
| 96 | 96 | |
| 97 | 97 | if (is_array($reports_template[$_REQUEST['type']])) { |
| 98 | - $query = $reports_template[$_REQUEST['type']]['getSQL'](); |
|
| 99 | - if (! is_array($query)) |
|
| 100 | - $query = array($query); |
|
| 101 | - if ($_REQUEST['format'] == 'sql') |
|
| 102 | - die(var_export($query, true)); |
|
| 98 | + $query = $reports_template[$_REQUEST['type']]['getSQL'](); |
|
| 99 | + if (! is_array($query)) |
|
| 100 | + $query = array($query); |
|
| 101 | + if ($_REQUEST['format'] == 'sql') |
|
| 102 | + die(var_export($query, true)); |
|
| 103 | 103 | |
| 104 | - $result = multiquery_query($query); |
|
| 104 | + $result = multiquery_query($query); |
|
| 105 | 105 | |
| 106 | 106 | |
| 107 | - // check number of result |
|
| 108 | - $numberOfResult = multiquery_num_rows($result); |
|
| 109 | - if ($numberOfResult == 0) { |
|
| 110 | - // This case should be taken care of by the display template itself, we should let the script run |
|
| 111 | - //die(get_lang('NoDataAvailable')); |
|
| 112 | - } |
|
| 107 | + // check number of result |
|
| 108 | + $numberOfResult = multiquery_num_rows($result); |
|
| 109 | + if ($numberOfResult == 0) { |
|
| 110 | + // This case should be taken care of by the display template itself, we should let the script run |
|
| 111 | + //die(get_lang('NoDataAvailable')); |
|
| 112 | + } |
|
| 113 | 113 | } else { |
| 114 | - die('<b>'.get_lang('ErrorWhileBuildingReport').'</b>'); |
|
| 114 | + die('<b>'.get_lang('ErrorWhileBuildingReport').'</b>'); |
|
| 115 | 115 | } |
| 116 | 116 | |
| 117 | 117 | if ($_REQUEST['format'] == 'html' || $_REQUEST['format'] == 'directlink') { |
| 118 | - if (isset($reports_template[$_REQUEST['type']]['html_header'])) { |
|
| 119 | - echo $reports_template[$_REQUEST['type']]['html_header']; |
|
| 120 | - } |
|
| 121 | - echo '<script type="text/javascript" charset="utf-8"> |
|
| 118 | + if (isset($reports_template[$_REQUEST['type']]['html_header'])) { |
|
| 119 | + echo $reports_template[$_REQUEST['type']]['html_header']; |
|
| 120 | + } |
|
| 121 | + echo '<script type="text/javascript" charset="utf-8"> |
|
| 122 | 122 | $(document).ready(function() { |
| 123 | 123 | |
| 124 | 124 | $("#reportsData'.$idsuffix.'").dataTable({ |
@@ -143,50 +143,50 @@ discard block |
||
| 143 | 143 | }); |
| 144 | 144 | } ); |
| 145 | 145 | </script>'; |
| 146 | - echo '<table id="reportsData'.$idsuffix.'" class="display">'; // FIXME style |
|
| 147 | - |
|
| 148 | - // counting fields |
|
| 149 | - $nfields = multiquery_num_fields($result); |
|
| 150 | - $columns = array(); |
|
| 151 | - $columns_islink = array(); |
|
| 152 | - echo '<thead><tr>'; |
|
| 153 | - for ($i=0; $i < $nfields; $i++) { |
|
| 154 | - $columns[$i] = multiquery_field_name($result, $i); |
|
| 155 | - if (substr($columns[$i], -5, 5) != '_link') { |
|
| 156 | - $column_islink[$i] = false; |
|
| 157 | - echo '<th>'.$columns[$i].'</th>'; |
|
| 158 | - } else |
|
| 159 | - $columns_islink[$i] = true; |
|
| 160 | - } |
|
| 161 | - |
|
| 162 | - // checking resolving link column id |
|
| 163 | - $columns_flip = array_flip($columns); |
|
| 164 | - $columns_link = array(); |
|
| 165 | - for ($i=0; $i < $nfields; $i++) |
|
| 166 | - if ($column_islink[$i] == false && array_key_exists($columns[$i].'_link', $columns_flip)) |
|
| 167 | - $columns_link[$i] = $columns_flip[$columns[$i].'_link']; |
|
| 168 | - else |
|
| 169 | - $columns_link[$i] = ''; |
|
| 170 | - echo '</tr></thead><tbody>'; |
|
| 171 | - while ($row = multiquery_fetch_row($result)) { |
|
| 172 | - echo '<tr>'; |
|
| 173 | - for ($i = 0; $i<$nfields; $i++) |
|
| 174 | - if (!$columns_islink[$i]){ // ignore links |
|
| 175 | - if ($columns_link[$i] != '') // link is defined |
|
| 176 | - if (substr($columns_link[$i],0,10) == 'javascript') { |
|
| 177 | - echo '<td><a href="#" onclick="'.$row[$columns_link[$i]].'">'.$row[$i].'</a></td>'; |
|
| 178 | - } |
|
| 179 | - else { |
|
| 180 | - echo '<td><a href="'.$row[$columns_link[$i]].'">'.$row[$i].'</a></td>'; |
|
| 181 | - } |
|
| 182 | - else |
|
| 183 | - echo '<td>'.$row[$i].'</td>'; |
|
| 184 | - } |
|
| 185 | - echo "</tr>\n"; |
|
| 186 | - } |
|
| 187 | - echo '</tbody></table>'; |
|
| 188 | - if ($_REQUEST['format'] == 'directlink') { |
|
| 189 | - echo '</div> |
|
| 146 | + echo '<table id="reportsData'.$idsuffix.'" class="display">'; // FIXME style |
|
| 147 | + |
|
| 148 | + // counting fields |
|
| 149 | + $nfields = multiquery_num_fields($result); |
|
| 150 | + $columns = array(); |
|
| 151 | + $columns_islink = array(); |
|
| 152 | + echo '<thead><tr>'; |
|
| 153 | + for ($i=0; $i < $nfields; $i++) { |
|
| 154 | + $columns[$i] = multiquery_field_name($result, $i); |
|
| 155 | + if (substr($columns[$i], -5, 5) != '_link') { |
|
| 156 | + $column_islink[$i] = false; |
|
| 157 | + echo '<th>'.$columns[$i].'</th>'; |
|
| 158 | + } else |
|
| 159 | + $columns_islink[$i] = true; |
|
| 160 | + } |
|
| 161 | + |
|
| 162 | + // checking resolving link column id |
|
| 163 | + $columns_flip = array_flip($columns); |
|
| 164 | + $columns_link = array(); |
|
| 165 | + for ($i=0; $i < $nfields; $i++) |
|
| 166 | + if ($column_islink[$i] == false && array_key_exists($columns[$i].'_link', $columns_flip)) |
|
| 167 | + $columns_link[$i] = $columns_flip[$columns[$i].'_link']; |
|
| 168 | + else |
|
| 169 | + $columns_link[$i] = ''; |
|
| 170 | + echo '</tr></thead><tbody>'; |
|
| 171 | + while ($row = multiquery_fetch_row($result)) { |
|
| 172 | + echo '<tr>'; |
|
| 173 | + for ($i = 0; $i<$nfields; $i++) |
|
| 174 | + if (!$columns_islink[$i]){ // ignore links |
|
| 175 | + if ($columns_link[$i] != '') // link is defined |
|
| 176 | + if (substr($columns_link[$i],0,10) == 'javascript') { |
|
| 177 | + echo '<td><a href="#" onclick="'.$row[$columns_link[$i]].'">'.$row[$i].'</a></td>'; |
|
| 178 | + } |
|
| 179 | + else { |
|
| 180 | + echo '<td><a href="'.$row[$columns_link[$i]].'">'.$row[$i].'</a></td>'; |
|
| 181 | + } |
|
| 182 | + else |
|
| 183 | + echo '<td>'.$row[$i].'</td>'; |
|
| 184 | + } |
|
| 185 | + echo "</tr>\n"; |
|
| 186 | + } |
|
| 187 | + echo '</tbody></table>'; |
|
| 188 | + if ($_REQUEST['format'] == 'directlink') { |
|
| 189 | + echo '</div> |
|
| 190 | 190 | <div id="result2" class="result" style="margin: 50px;"> |
| 191 | 191 | </div> |
| 192 | 192 | <div id="result3" class="result" style="margin: 100px;"> |
@@ -194,36 +194,36 @@ discard block |
||
| 194 | 194 | <div id="result4" class="result" style="margin: 150px;"> |
| 195 | 195 | </div>'; |
| 196 | 196 | |
| 197 | - Display::display_footer(); |
|
| 197 | + Display::display_footer(); |
|
| 198 | 198 | |
| 199 | - } |
|
| 199 | + } |
|
| 200 | 200 | } else if ($_REQUEST['format'] == 'csv') { |
| 201 | - $nfields = multiquery_num_fields($result); |
|
| 202 | - $columns = array(); |
|
| 203 | - $columns_islink = array(); |
|
| 204 | - for ($i=0; $i < $nfields; $i++) { |
|
| 205 | - $columns[$i] = multiquery_field_name($result, $i); |
|
| 206 | - if (substr($columns[$i], -5, 5) != '_link') { |
|
| 207 | - $column_islink[$i] = false; |
|
| 208 | - echo csv_escaping($columns[$i]).','; |
|
| 209 | - } else |
|
| 210 | - $columns_islink[$i] = true; |
|
| 211 | - } |
|
| 212 | - |
|
| 213 | - echo "\n"; |
|
| 214 | - while ($row = multiquery_fetch_row($result)) { |
|
| 215 | - for ($i = 0; $i<$nfields; $i++) |
|
| 216 | - if (!$columns_islink[$i]) // ignore links |
|
| 217 | - echo csv_escaping($row[$i]).','; // fixme |
|
| 218 | - echo "\n"; |
|
| 219 | - } |
|
| 201 | + $nfields = multiquery_num_fields($result); |
|
| 202 | + $columns = array(); |
|
| 203 | + $columns_islink = array(); |
|
| 204 | + for ($i=0; $i < $nfields; $i++) { |
|
| 205 | + $columns[$i] = multiquery_field_name($result, $i); |
|
| 206 | + if (substr($columns[$i], -5, 5) != '_link') { |
|
| 207 | + $column_islink[$i] = false; |
|
| 208 | + echo csv_escaping($columns[$i]).','; |
|
| 209 | + } else |
|
| 210 | + $columns_islink[$i] = true; |
|
| 211 | + } |
|
| 212 | + |
|
| 213 | + echo "\n"; |
|
| 214 | + while ($row = multiquery_fetch_row($result)) { |
|
| 215 | + for ($i = 0; $i<$nfields; $i++) |
|
| 216 | + if (!$columns_islink[$i]) // ignore links |
|
| 217 | + echo csv_escaping($row[$i]).','; // fixme |
|
| 218 | + echo "\n"; |
|
| 219 | + } |
|
| 220 | 220 | } else die(get_lang('UnknownFormat')); |
| 221 | 221 | |
| 222 | 222 | function csv_escaping($value, $csv_separator = ',') { |
| 223 | - $value = str_replace('"','""',$value); |
|
| 224 | - if (strpos($value, '""') or strpos($value, $csv_separator) or $value != trim($value) ) { |
|
| 225 | - $value = '"'.$value.'"'; |
|
| 226 | - } |
|
| 227 | - return $value; |
|
| 223 | + $value = str_replace('"','""',$value); |
|
| 224 | + if (strpos($value, '""') or strpos($value, $csv_separator) or $value != trim($value) ) { |
|
| 225 | + $value = '"'.$value.'"'; |
|
| 226 | + } |
|
| 227 | + return $value; |
|
| 228 | 228 | } |
| 229 | 229 | ?> |
@@ -19,7 +19,7 @@ discard block |
||
| 19 | 19 | $interbreadcrumb[] = array ("url" => "index.php", "name" => get_lang('MySpace')); |
| 20 | 20 | |
| 21 | 21 | if (isset($_GET["id_student"])) { |
| 22 | - $interbreadcrumb[] = array ("url" => "student.php", "name" => get_lang('Students')); |
|
| 22 | + $interbreadcrumb[] = array ("url" => "student.php", "name" => get_lang('Students')); |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | Display :: display_header($nameTools); |
@@ -41,26 +41,26 @@ discard block |
||
| 41 | 41 | */ |
| 42 | 42 | |
| 43 | 43 | if (isset($_POST['export'])) { |
| 44 | - $order_clause = api_is_western_name_order(PERSON_NAME_DATA_EXPORT) ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname'; |
|
| 44 | + $order_clause = api_is_western_name_order(PERSON_NAME_DATA_EXPORT) ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname'; |
|
| 45 | 45 | } else { |
| 46 | - $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname'; |
|
| 46 | + $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname' : ' ORDER BY lastname, firstname'; |
|
| 47 | 47 | } |
| 48 | 48 | |
| 49 | 49 | if (isset($_GET["id_student"])) { |
| 50 | - $id_student = intval($_GET["id_student"]); |
|
| 51 | - $sql_coachs = "SELECT DISTINCT srcru.user_id as id_coach |
|
| 50 | + $id_student = intval($_GET["id_student"]); |
|
| 51 | + $sql_coachs = "SELECT DISTINCT srcru.user_id as id_coach |
|
| 52 | 52 | FROM $tbl_session_rel_course_rel_user as srcru |
| 53 | 53 | WHERE srcru.user_id='$id_student' AND srcru.status=2"; |
| 54 | 54 | } else { |
| 55 | - if (api_is_platform_admin()) { |
|
| 56 | - $sql_coachs = "SELECT DISTINCT |
|
| 55 | + if (api_is_platform_admin()) { |
|
| 56 | + $sql_coachs = "SELECT DISTINCT |
|
| 57 | 57 | srcru.user_id as id_coach, user_id, lastname, firstname |
| 58 | 58 | FROM $tbl_user, $tbl_session_rel_course_rel_user srcru |
| 59 | 59 | WHERE |
| 60 | 60 | srcru.user_id=user_id AND |
| 61 | 61 | srcru.status=2 ".$order_clause; |
| 62 | - } else { |
|
| 63 | - $sql_coachs = "SELECT DISTINCT user_id as id_coach, user.user_id, lastname, firstname |
|
| 62 | + } else { |
|
| 63 | + $sql_coachs = "SELECT DISTINCT user_id as id_coach, user.user_id, lastname, firstname |
|
| 64 | 64 | FROM |
| 65 | 65 | $tbl_user as user, |
| 66 | 66 | $tbl_session_rel_course_user as srcu, |
@@ -74,13 +74,13 @@ discard block |
||
| 74 | 74 | srcu.user_id = user.user_id AND |
| 75 | 75 | srcu.status = 2 |
| 76 | 76 | ".$order_clause; |
| 77 | - } |
|
| 77 | + } |
|
| 78 | 78 | } |
| 79 | 79 | |
| 80 | 80 | $result_coachs = Database::query($sql_coachs); |
| 81 | 81 | |
| 82 | 82 | if (api_is_western_name_order()) { |
| 83 | - echo '<table class="data_table"> |
|
| 83 | + echo '<table class="data_table"> |
|
| 84 | 84 | <tr> |
| 85 | 85 | <th>'.get_lang('FirstName').'</th> |
| 86 | 86 | <th>'.get_lang('LastName').'</th> |
@@ -89,7 +89,7 @@ discard block |
||
| 89 | 89 | <th>'.get_lang('Students').'</th> |
| 90 | 90 | </tr>'; |
| 91 | 91 | } else { |
| 92 | - echo '<table class="data_table"> |
|
| 92 | + echo '<table class="data_table"> |
|
| 93 | 93 | <tr> |
| 94 | 94 | <th>'.get_lang('LastName').'</th> |
| 95 | 95 | <th>'.get_lang('FirstName').'</th> |
@@ -100,79 +100,79 @@ discard block |
||
| 100 | 100 | } |
| 101 | 101 | |
| 102 | 102 | if (api_is_western_name_order(PERSON_NAME_DATA_EXPORT)) { |
| 103 | - $header[] = get_lang('FirstName', ''); |
|
| 104 | - $header[] = get_lang('LastName', ''); |
|
| 103 | + $header[] = get_lang('FirstName', ''); |
|
| 104 | + $header[] = get_lang('LastName', ''); |
|
| 105 | 105 | } else { |
| 106 | - $header[] = get_lang('LastName', ''); |
|
| 107 | - $header[] = get_lang('FirstName', ''); |
|
| 106 | + $header[] = get_lang('LastName', ''); |
|
| 107 | + $header[] = get_lang('FirstName', ''); |
|
| 108 | 108 | } |
| 109 | 109 | $header[] = get_lang('ConnectionTime', ''); |
| 110 | 110 | |
| 111 | 111 | if (Database::num_rows($result_coachs) > 0) { |
| 112 | - while ($coachs = Database::fetch_array($result_coachs)) { |
|
| 113 | - $id_coach = $coachs["id_coach"]; |
|
| 112 | + while ($coachs = Database::fetch_array($result_coachs)) { |
|
| 113 | + $id_coach = $coachs["id_coach"]; |
|
| 114 | 114 | |
| 115 | - if (isset($_GET["id_student"])) { |
|
| 116 | - $sql_infos_coach = "SELECT lastname, firstname |
|
| 115 | + if (isset($_GET["id_student"])) { |
|
| 116 | + $sql_infos_coach = "SELECT lastname, firstname |
|
| 117 | 117 | FROM $tbl_user |
| 118 | 118 | WHERE user_id='$id_coach'"; |
| 119 | - $result_coachs_infos = Database::query($sql_infos_coach); |
|
| 120 | - $lastname = Database::result($result_coachs_infos, 0, "lastname"); |
|
| 121 | - $firstname = Database::result($result_coachs_infos, 0, "firstname"); |
|
| 122 | - } else { |
|
| 123 | - $lastname = $coachs["lastname"]; |
|
| 124 | - $firstname = $coachs["firstname"]; |
|
| 125 | - } |
|
| 126 | - |
|
| 127 | - $sql_connection_time = "SELECT login_date, logout_date |
|
| 119 | + $result_coachs_infos = Database::query($sql_infos_coach); |
|
| 120 | + $lastname = Database::result($result_coachs_infos, 0, "lastname"); |
|
| 121 | + $firstname = Database::result($result_coachs_infos, 0, "firstname"); |
|
| 122 | + } else { |
|
| 123 | + $lastname = $coachs["lastname"]; |
|
| 124 | + $firstname = $coachs["firstname"]; |
|
| 125 | + } |
|
| 126 | + |
|
| 127 | + $sql_connection_time = "SELECT login_date, logout_date |
|
| 128 | 128 | FROM $tbl_track_login |
| 129 | 129 | WHERE login_user_id ='$id_coach' AND logout_date <> 'null'"; |
| 130 | - $result_connection_time = Database::query($sql_connection_time); |
|
| 131 | - |
|
| 132 | - $nb_seconds = 0; |
|
| 133 | - while ($connections = Database::fetch_array($result_connection_time)) { |
|
| 134 | - $login_date = $connections["login_date"]; |
|
| 135 | - $logout_date = $connections["logout_date"]; |
|
| 136 | - $timestamp_login_date = strtotime($login_date); |
|
| 137 | - $timestamp_logout_date = strtotime($logout_date); |
|
| 138 | - $nb_seconds += ($timestamp_logout_date - $timestamp_login_date); |
|
| 139 | - } |
|
| 140 | - |
|
| 141 | - if ($nb_seconds == 0) { |
|
| 142 | - $s_connection_time = ''; |
|
| 143 | - } else { |
|
| 144 | - $s_connection_time = api_time_to_hms($nb_seconds); |
|
| 145 | - } |
|
| 146 | - |
|
| 147 | - if ($i % 2 == 0) { |
|
| 148 | - $css_class = "row_odd"; |
|
| 149 | - if ($i % 20 == 0 && $i != 0) { |
|
| 150 | - if (api_is_western_name_order()) { |
|
| 151 | - echo '<tr> |
|
| 130 | + $result_connection_time = Database::query($sql_connection_time); |
|
| 131 | + |
|
| 132 | + $nb_seconds = 0; |
|
| 133 | + while ($connections = Database::fetch_array($result_connection_time)) { |
|
| 134 | + $login_date = $connections["login_date"]; |
|
| 135 | + $logout_date = $connections["logout_date"]; |
|
| 136 | + $timestamp_login_date = strtotime($login_date); |
|
| 137 | + $timestamp_logout_date = strtotime($logout_date); |
|
| 138 | + $nb_seconds += ($timestamp_logout_date - $timestamp_login_date); |
|
| 139 | + } |
|
| 140 | + |
|
| 141 | + if ($nb_seconds == 0) { |
|
| 142 | + $s_connection_time = ''; |
|
| 143 | + } else { |
|
| 144 | + $s_connection_time = api_time_to_hms($nb_seconds); |
|
| 145 | + } |
|
| 146 | + |
|
| 147 | + if ($i % 2 == 0) { |
|
| 148 | + $css_class = "row_odd"; |
|
| 149 | + if ($i % 20 == 0 && $i != 0) { |
|
| 150 | + if (api_is_western_name_order()) { |
|
| 151 | + echo '<tr> |
|
| 152 | 152 | <th>'.get_lang('FirstName').'</th> |
| 153 | 153 | <th>'.get_lang('LastName').'</th> |
| 154 | 154 | <th>'.get_lang('ConnectionTime').'</th> |
| 155 | 155 | <th>'.get_lang('AdminCourses').'</th> |
| 156 | 156 | <th>'.get_lang('Students').'</th> |
| 157 | 157 | </tr>'; |
| 158 | - } else { |
|
| 159 | - echo '<tr> |
|
| 158 | + } else { |
|
| 159 | + echo '<tr> |
|
| 160 | 160 | <th>'.get_lang('LastName').'</th> |
| 161 | 161 | <th>'.get_lang('FirstName').'</th> |
| 162 | 162 | <th>'.get_lang('ConnectionTime').'</th> |
| 163 | 163 | <th>'.get_lang('AdminCourses').'</th> |
| 164 | 164 | <th>'.get_lang('Students').'</th> |
| 165 | 165 | </tr>'; |
| 166 | - } |
|
| 167 | - } |
|
| 168 | - } else { |
|
| 169 | - $css_class = "row_even"; |
|
| 170 | - } |
|
| 166 | + } |
|
| 167 | + } |
|
| 168 | + } else { |
|
| 169 | + $css_class = "row_even"; |
|
| 170 | + } |
|
| 171 | 171 | |
| 172 | - $i++; |
|
| 172 | + $i++; |
|
| 173 | 173 | |
| 174 | - if (api_is_western_name_order()) { |
|
| 175 | - echo '<tr class="'.$css_class.'"> |
|
| 174 | + if (api_is_western_name_order()) { |
|
| 175 | + echo '<tr class="'.$css_class.'"> |
|
| 176 | 176 | <td>'.$firstname.'</td><td>'.$lastname.'</td><td>'.$s_connection_time.'</td> |
| 177 | 177 | <td> |
| 178 | 178 | <a href="course.php?type=coach&user_id='.$id_coach.'"> |
@@ -185,8 +185,8 @@ discard block |
||
| 185 | 185 | </a> |
| 186 | 186 | </td> |
| 187 | 187 | </tr>'; |
| 188 | - } else { |
|
| 189 | - echo '<tr class="'.$css_class.'"> |
|
| 188 | + } else { |
|
| 189 | + echo '<tr class="'.$css_class.'"> |
|
| 190 | 190 | <td>'.$lastname.'</td><td>'.$firstname.'</td> |
| 191 | 191 | <td>'.$s_connection_time.'</td> |
| 192 | 192 | <td> |
@@ -197,25 +197,25 @@ discard block |
||
| 197 | 197 | '.Display::return_icon('2rightarrow.png', get_lang('Details')).'</a> |
| 198 | 198 | </td> |
| 199 | 199 | </tr>'; |
| 200 | - } |
|
| 201 | - |
|
| 202 | - if (api_is_western_name_order(PERSON_NAME_DATA_EXPORT)) { |
|
| 203 | - $data[$id_coach]["firstname"] = $firstname; |
|
| 204 | - $data[$id_coach]["lastname"] = $lastname; |
|
| 205 | - } else { |
|
| 206 | - $data[$id_coach]["lastname"] = $lastname; |
|
| 207 | - $data[$id_coach]["firstname"] = $firstname; |
|
| 208 | - } |
|
| 209 | - $data[$id_coach]["connection_time"] = $s_connection_time; |
|
| 210 | - } |
|
| 200 | + } |
|
| 201 | + |
|
| 202 | + if (api_is_western_name_order(PERSON_NAME_DATA_EXPORT)) { |
|
| 203 | + $data[$id_coach]["firstname"] = $firstname; |
|
| 204 | + $data[$id_coach]["lastname"] = $lastname; |
|
| 205 | + } else { |
|
| 206 | + $data[$id_coach]["lastname"] = $lastname; |
|
| 207 | + $data[$id_coach]["firstname"] = $firstname; |
|
| 208 | + } |
|
| 209 | + $data[$id_coach]["connection_time"] = $s_connection_time; |
|
| 210 | + } |
|
| 211 | 211 | } else { |
| 212 | - // No results |
|
| 213 | - echo '<tr><td colspan="5">'.get_lang("NoResult").'</td></tr>'; |
|
| 212 | + // No results |
|
| 213 | + echo '<tr><td colspan="5">'.get_lang("NoResult").'</td></tr>'; |
|
| 214 | 214 | } |
| 215 | 215 | echo '</table>'; |
| 216 | 216 | |
| 217 | 217 | if (isset($_POST['export'])){ |
| 218 | - export_csv($header, $data, 'coaches.csv'); |
|
| 218 | + export_csv($header, $data, 'coaches.csv'); |
|
| 219 | 219 | } |
| 220 | 220 | |
| 221 | 221 | echo "<br /><br />"; |
@@ -36,8 +36,8 @@ |
||
| 36 | 36 | |
| 37 | 37 | function count_courses() |
| 38 | 38 | { |
| 39 | - global $nb_courses; |
|
| 40 | - return $nb_courses; |
|
| 39 | + global $nb_courses; |
|
| 40 | + return $nb_courses; |
|
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | //checking if the current coach is the admin coach |
@@ -457,8 +457,8 @@ |
||
| 457 | 457 | |
| 458 | 458 | // The post has been displayed => it can be removed from the what's new array |
| 459 | 459 | if (isset($whatsnew_post_info[$forumId][$threadId][$row['post_id']])) { |
| 460 | - unset($whatsnew_post_info[$forumId][$threadId][$row['post_id']]); |
|
| 461 | - unset($_SESSION['whatsnew_post_info'][$forumId][$threadId][$row['post_id']]); |
|
| 460 | + unset($whatsnew_post_info[$forumId][$threadId][$row['post_id']]); |
|
| 461 | + unset($_SESSION['whatsnew_post_info'][$forumId][$threadId][$row['post_id']]); |
|
| 462 | 462 | } |
| 463 | 463 | echo "</table>"; |
| 464 | 464 | |
@@ -500,7 +500,7 @@ |
||
| 500 | 500 | $html .= '</div>'; |
| 501 | 501 | $html .= '</div></div>'; |
| 502 | 502 | } |
| 503 | - echo $html; |
|
| 503 | + echo $html; |
|
| 504 | 504 | } |
| 505 | 505 | } |
| 506 | 506 | if (count($forum_list) == 0) { |
@@ -14,7 +14,7 @@ |
||
| 14 | 14 | api_block_anonymous_users(); |
| 15 | 15 | |
| 16 | 16 | if (isset($_REQUEST['userId'])) { |
| 17 | - $userId = intval($_REQUEST['userId']); |
|
| 17 | + $userId = intval($_REQUEST['userId']); |
|
| 18 | 18 | } else { |
| 19 | 19 | api_not_allowed(); |
| 20 | 20 | } |