dokeos-tracking
[ class tree: dokeos-tracking ] [ index: dokeos-tracking ] [ all elements ]

Source for file courseLog.php

Documentation is available at courseLog.php

  1. <?php
  2. /*
  3.  * ==============================================================================
  4.     Dokeos - elearning and course management software
  5.  
  6.     Copyright (c) 2004 Dokeos SPRL
  7.     Copyright (c) 2003 Ghent University (UGent)
  8.     Copyright (c) 2001 Universite catholique de Louvain (UCL)
  9.  
  10.     For a full list of contributors, see "credits.txt".
  11.     The full license can be read in "license.txt".
  12.  
  13.     This program is free software; you can redistribute it and/or
  14.     modify it under the terms of the GNU General Public License
  15.     as published by the Free Software Foundation; either version 2
  16.     of the License, or (at your option) any later version.
  17.  
  18.     See the GNU General Public License for more details.
  19.  
  20.     Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
  21.     Mail: info@dokeos.com
  22. ==============================================================================
  23. */
  24. /**
  25. ==============================================================================
  26. *    @author Thomas Depraetere
  27. *    @author Hugues Peeters
  28. *    @author Christophe Gesche
  29. *    @author Sebastien Piraux
  30. *    @author Toon Keppens (Vi-Host.net)
  31. *
  32. *    @package dokeos.tracking
  33. ==============================================================================
  34. */
  35.  
  36. /*
  37. ==============================================================================
  38.         INIT SECTION
  39. ==============================================================================
  40. */
  41. $pathopen = isset($_REQUEST['pathopen']$_REQUEST['pathopen'null;
  42. // name of the language file that needs to be included 
  43.  
  44. $language_file['tracking';
  45. $language_file['scorm';
  46.  
  47. include('../inc/global.inc.php');
  48.  
  49.  
  50. $is_allowedToTrack $is_courseAdmin || $is_platformAdmin || $is_courseCoach || $is_sessionAdmin;
  51.  
  52. if(!$is_allowedToTrack)
  53. {
  54.     Display :: display_header(null);
  55.     api_not_allowed();
  56.     Display :: display_footer();
  57. }
  58.  
  59. //includes for SCORM and LP
  60. require_once('../newscorm/learnpath.class.php');
  61. require_once('../newscorm/learnpathItem.class.php');
  62. require_once('../newscorm/learnpathList.class.php');
  63. require_once('../newscorm/scorm.class.php');
  64. require_once('../newscorm/scormItem.class.php');
  65. require_once(api_get_path(LIBRARY_PATH).'tracking.lib.php');
  66. require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
  67. require_once(api_get_path(LIBRARY_PATH).'usermanager.lib.php');
  68. require_once (api_get_path(LIBRARY_PATH).'export.lib.inc.php');
  69. require_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php');
  70.  
  71.  
  72.  
  73. $export_csv = isset($_GET['export']&& $_GET['export'== 'csv' true false;
  74. if($export_csv)
  75. {
  76.     ob_start();
  77. }
  78. $csv_content array();
  79.  
  80. // charset determination
  81. if (!empty($_GET['scormcontopen']))
  82. {
  83.     $tbl_lp Database::get_course_table('lp');
  84.     $contopen = (int) $_GET['scormcontopen'];
  85.     $sql "SELECT default_encoding FROM $tbl_lp WHERE id = ".$contopen;
  86.     $res api_sql_query($sql,__FILE__,__LINE__);
  87.     $row Database::fetch_array($res);
  88.     $lp_charset $row['default_encoding'];
  89.     //header('Content-Type: text/html; charset='. $row['default_encoding']);
  90. }
  91.  
  92. $htmlHeadXtra["<style type='text/css'>
  93. /*<![CDATA[*/
  94. .secLine {background-color : #E6E6E6;}
  95. .content {padding-left : 15px;padding-right : 15px; }
  96. .specialLink{color : #0000FF;}
  97. /*]]>*/
  98. </style>
  99. <style media='print' type='text/css'>
  100.  
  101. </style>";
  102.  
  103.  
  104. /*
  105. -----------------------------------------------------------
  106.     Constants and variables
  107. -----------------------------------------------------------
  108. */
  109. // regroup table names for maintenance purpose
  110. $TABLETRACK_LINKS       Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LINKS);
  111. $TABLECOURSUSER            Database::get_main_table(TABLE_MAIN_COURSE_USER);
  112. $TABLECOURSE            Database::get_main_table(TABLE_MAIN_COURSE);
  113. $TABLECOURSE_LINKS      Database::get_course_table(TABLE_LINK);
  114.  
  115. //$table_scormdata = Database::get_scorm_table(TABLE_SCORM_SCO_DATA);
  116. //$table_scormmain = Database::get_scorm_table(TABLE_SCORM_MAIN);
  117. //$tbl_learnpath_main = Database::get_course_table(TABLE_LEARNPATH_MAIN);
  118. //$tbl_learnpath_item = Database::get_course_table(TABLE_LEARNPATH_ITEM);
  119. //$tbl_learnpath_chapter = Database::get_course_table(TABLE_LEARNPATH_CHAPTER);
  120.  
  121. $tbl_learnpath_main Database::get_course_table(TABLE_LP_MAIN);
  122. $tbl_learnpath_item Database::get_course_table(TABLE_LP_ITEM);
  123. $tbl_learnpath_view Database::get_course_table(TABLE_LP_VIEW);
  124. $tbl_learnpath_item_view Database::get_course_table(TABLE_LP_ITEM_VIEW);
  125.  
  126. $view (isset($_REQUEST['view'])?$_REQUEST['view']:'');
  127.  
  128. $nameTools get_lang('Tracking');
  129.  
  130. Display::display_header($nameTools"Tracking");
  131. include(api_get_path(LIBRARY_PATH)."statsUtils.lib.inc.php");
  132. include("../resourcelinker/resourcelinker.inc.php");
  133.  
  134.  
  135.  
  136. $a_students CourseManager :: get_student_list_from_course_code($_course['id']true(empty($_SESSION['id_session'])?null:$_SESSION['id_session']));
  137. $nbStudents count($a_students);
  138.  
  139. /**
  140.  * count the number of students in this course (used for SortableTable)
  141.  */
  142. {
  143.     global $nbStudents;
  144.     return $nbStudents;
  145. }
  146.  
  147.  
  148.  
  149. function sort_users($a,$b){
  150.     $a trim(strtolower($a[$_SESSION['tracking_column']]));
  151.     $b trim(strtolower($b[$_SESSION['tracking_column']]));
  152.     if($_SESSION['tracking_direction'== 'DESC')
  153.         return strcmp($b$a);
  154.     else
  155.         return strcmp($a$b);
  156. }
  157.  
  158. /*
  159. ==============================================================================
  160.         MAIN CODE
  161. ==============================================================================
  162. */
  163.  
  164.  
  165. if($_GET['studentlist'== 'false')
  166. {
  167.     echo '<div style="float:left; clear:left">
  168.             <a href="courseLog.php?'.api_get_cidreq().'&studentlist=true">'.get_lang('StudentsTracking').'</a>&nbsp;|
  169.             '.get_lang('CourseTracking').'
  170.           </div>';
  171. }
  172. else
  173. {
  174.     echo '<div style="float:left; clear:left">
  175.             '.get_lang('StudentsTracking').' |
  176.             <a href="courseLog.php?'.api_get_cidreq().'&studentlist=false">'.get_lang('CourseTracking').'</a>&nbsp;
  177.           </div>';
  178. }
  179. echo '<div style="float:right; clear:right">';
  180. echo '&nbsp;<a href="#" onclick="window.print()"><img align="absbottom" src="../img/printmgr.gif">&nbsp;'.get_lang('Print').'</a>';
  181. if($_GET['studentlist'== 'false'){    
  182.     echo '<a href="'.api_get_self().'?'.api_get_cidreq().'&export=csv&studentlist=false"><img align="absbottom" src="../img/excel.gif">&nbsp;'.get_lang('ExportAsCSV').'</a></div>';
  183. }
  184. else{
  185.     echo '<a href="'.api_get_self().'?'.api_get_cidreq().'&export=csv"><img align="absbottom" src="../img/excel.gif">&nbsp;'.get_lang('ExportAsCSV').'</a></div>';
  186. }
  187. echo '<div class="clear"></div>';
  188. if($_GET['studentlist'== 'false')
  189. {
  190.     echo'<br /><br />';
  191.     
  192.     
  193.     /***************************
  194.      * LEARNING PATHS
  195.      ***************************/
  196.      
  197.      echo "<div class='admin_section'>
  198.                 <h4>
  199.                     <img src='../img/scormbuilder.gif' align='absbottom'>&nbsp;".get_lang('AverageProgressInLearnpath')."
  200.                 </h4>
  201.             <table class='data_table'>";
  202.             
  203.     $list new LearnpathList($student);
  204.     $flat_list $list->get_flat_list();
  205.     
  206.     if($export_csv){
  207.         $temp=array(get_lang('AverageProgressInLearnpath'),'');
  208.         $csv_content[array('','');
  209.         $csv_content[$temp;
  210.     }
  211.     
  212.     if(count($flat_list)>0)
  213.     {
  214.         foreach($flat_list as $lp_id => $lp)
  215.         {
  216.             $lp_avg_progress 0;
  217.             foreach($a_students as $student_id => $student)
  218.             {
  219.                 
  220.                 // get the progress in learning pathes    
  221.                 $lp_avg_progress += learnpath::get_db_progress($lp_id,$student_id);
  222.                 
  223.                 
  224.             }
  225.             if($nbStudents 0)
  226.             {
  227.                 $lp_avg_progress $lp_avg_progress $nbStudents;
  228.             }
  229.             echo '<tr><td>'.$lp['lp_name'].'</td><td align="right">'.round($lp_avg_progress,1).' %</td></tr>';
  230.             if($export_csv){
  231.                 $temp=array($lp['lp_name'],$lp_avg_progress);
  232.                 $csv_content[$temp;
  233.             }
  234.         }
  235.     }
  236.     else
  237.     {
  238.         echo '<tr><td>'.get_lang('NoLearningPath').'</td></tr>';
  239.         if($export_csv){
  240.             $temp=array(get_lang('NoLearningPath'),'');
  241.             $csv_content[$temp;
  242.         }
  243.     }
  244.     
  245.     echo '</table></div>';
  246.     
  247.     
  248.     echo '<div class="clear"></div>';
  249.     
  250.     
  251.     /***************************
  252.      * EXERCICES
  253.      ***************************/
  254.      
  255.      echo "<div class='admin_section'>
  256.                 <h4>
  257.                     <img src='../img/quiz.gif' align='absbottom'>&nbsp;".get_lang('AverageResultsToTheExercices')." <a href='../exercice/exercice.php?".api_get_cidreq()."&show=result'>".get_lang('SeeDetail')."</a>
  258.                 </h4>
  259.             <table class='data_table'>";
  260.             
  261.     $sql "SELECT id, title
  262.             FROM ".Database :: get_course_table(TABLE_QUIZ_TEST);
  263.     $rs api_sql_query($sql__FILE____LINE__);
  264.     
  265.     if($export_csv){
  266.         $temp=array(get_lang('AverageProgressInLearnpath'),'');
  267.         $csv_content[array('','');
  268.         $csv_content[$temp;
  269.     }
  270.     
  271.     if(Database::num_rows($rs)>0)
  272.     {
  273.         while($quiz Database::fetch_array($rs))
  274.         {
  275.             $quiz_avg_score 0;
  276.             
  277.             // get the progress in learning pathes    
  278.             $sql 'SELECT exe_result , exe_weighting
  279.                     FROM '.Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES).'
  280.                     WHERE exe_exo_id = '.$quiz['id'].'
  281.                     ORDER BY exe_date DESC
  282.                     LIMIT 0, 1';
  283.             $rsAttempt api_sql_query($sql__FILE____LINE__);
  284.             $nb_attempts 0;
  285.             while($attempt Database::fetch_array($rsAttempt))
  286.             {
  287.                 $nb_attempts++;
  288.                 $exe_weight=$attempt['exe_weighting'];
  289.                 if ($exe_weight>0)
  290.                 {
  291.                     $quiz_avg_score += $attempt['exe_result']/$exe_weight*100;
  292.                 }
  293.             }
  294.             if($nb_attempts>0)
  295.                 $quiz_avg_score $quiz_avg_score $nb_attempts;
  296.             
  297.             echo '<tr><td>'.$quiz['title'].'</td><td align="right">'.round($quiz_avg_score,1).' %</td></tr>';
  298.             if($export_csv){
  299.                 $temp=array($quiz['title'],$quiz_avg_score);
  300.                 $csv_content[$temp;
  301.             }
  302.         }
  303.     }
  304.     else
  305.     {
  306.         echo '<tr><td>'.get_lang('NoExercises').'</td></tr>';
  307.         if($export_csv){
  308.             $temp=array(get_lang('NoExercises'),'');
  309.             $csv_content[$temp;
  310.         }
  311.     }
  312.     
  313.     echo '</table></div>';
  314.     echo '<div class="clear"></div>';
  315.     
  316.     
  317.     /**********************
  318.      * TOOLS
  319.      **********************/
  320.     
  321.     echo "<div class='admin_section'>
  322.                 <h4>
  323.                     <img src='../img/acces_tool.gif' align='absbottom'>&nbsp;".get_lang('ToolsMostUsed')."
  324.                 </h4>
  325.             <table class='data_table'>";
  326.              
  327.     $sql "SELECT `access_tool`, COUNT(DISTINCT `access_user_id`),count( `access_tool` ) as count_access_tool
  328.             FROM $TABLETRACK_ACCESS
  329.             WHERE `access_tool` IS NOT NULL
  330.                 AND `access_cours_code` = '$_cid'
  331.             GROUP BY `access_tool`
  332.             ORDER BY count_access_tool DESC
  333.             LIMIT 0, 3";
  334.     $rs api_sql_query($sql__FILE____LINE__);
  335.     
  336.      if($export_csv){
  337.         $temp=array(get_lang('ToolsMostUsed'),'');
  338.         $csv_content[$temp;
  339.     }
  340.     
  341.     while ($row Database::fetch_array($rs))
  342.     {
  343.         echo '    <tr>
  344.                     <td>'.get_lang(ucfirst($row['access_tool'])).'</td>
  345.                     <td align="right">'.$row['count_access_tool'].' '.get_lang('Clicks').'</td>
  346.                 </tr>';
  347.         if($export_csv){
  348.             $temp=array(get_lang(ucfirst($row['access_tool'])),$row['count_access_tool'].' '.get_lang('Clicks'));
  349.             $csv_content[$temp;
  350.         }
  351.     }
  352.     
  353.     echo '</table></div>';
  354.     
  355.     echo '<div class="clear"></div>';
  356.     
  357.     
  358.     /***************************
  359.      * DOCUMENTS
  360.      ***************************/
  361.      
  362.      echo "<div class='admin_section'>
  363.                 <h4>
  364.                     <img src='../img/documents.gif' align='absbottom'>&nbsp;".get_lang('DocumentsMostDownloaded')."
  365.                 </h4>
  366.             <table class='data_table'>";
  367.             
  368.     $sql "SELECT `down_doc_path`, COUNT(DISTINCT `down_user_id`), COUNT(`down_doc_path`) as count_down
  369.             FROM $TABLETRACK_DOWNLOADS
  370.             WHERE `down_cours_id` = '$_cid'
  371.             GROUP BY `down_doc_path`
  372.             ORDER BY count_down DESC
  373.             LIMIT 0, 3";
  374.     $rs api_sql_query($sql__FILE____LINE__);
  375.     
  376.     if($export_csv){
  377.         $temp=array(get_lang('DocumentsMostDownloaded'),'');
  378.         $csv_content[array('','');
  379.         $csv_content[$temp;
  380.     }
  381.     
  382.     if(Database::num_rows($rs)>0)
  383.     {
  384.         while($row Database::fetch_array($rs))
  385.         {
  386.             echo '    <tr>
  387.                         <td>'.$row['down_doc_path'].'</td>
  388.                         <td align="right">'.$row['count_down'].' '.get_lang('Clicks').'</td>
  389.                     </tr>';
  390.                     
  391.             if($export_csv){
  392.                 $temp=array($row['down_doc_path'],$row['count_down'].' '.get_lang('Clicks'));
  393.                 $csv_content[$temp;
  394.             }
  395.         }
  396.     }
  397.     else
  398.     {
  399.         echo '<tr><td>'.get_lang('NoDocumentDownloaded').'</td></tr>';
  400.         if($export_csv){
  401.             $temp=array(get_lang('NoDocumentDownloaded'),'');
  402.             $csv_content[$temp;
  403.         }
  404.     }
  405.     echo '</table></div>';
  406.     
  407.     echo '<div class="clear"></div>';
  408.     
  409.     
  410.     /***************************
  411.      * LINKS
  412.      ***************************/
  413.      
  414.      echo "<div class='admin_section'>
  415.                 <h4>
  416.                     <img src='../img/link.gif' align='absbottom'>&nbsp;".get_lang('LinksMostClicked')."
  417.                 </h4>
  418.             <table class='data_table'>";
  419.             
  420.     $sql "SELECT `cl`.`title`, `cl`.`url`,count(DISTINCT `sl`.`links_user_id`), count(`cl`.`title`) as count_visits
  421.             FROM $TABLETRACK_LINKS AS sl, $TABLECOURSE_LINKS AS cl
  422.             WHERE `sl`.`links_link_id` = `cl`.`id`
  423.                 AND `sl`.`links_cours_id` = '$_cid'
  424.             GROUP BY `cl`.`title`, `cl`.`url`
  425.             ORDER BY count_visits DESC
  426.             LIMIT 0, 3";
  427.     $rs api_sql_query($sql__FILE____LINE__);
  428.     
  429.     if($export_csv){
  430.         $temp=array(get_lang('LinksMostClicked'),'');
  431.         $csv_content[array('','');
  432.         $csv_content[$temp;
  433.     }
  434.     
  435.     if(Database::num_rows($rs)>0)
  436.     {
  437.         while($row Database::fetch_array($rs))
  438.         {
  439.             echo '    <tr>
  440.                         <td>'.$row['title'].'</td>
  441.                         <td align="right">'.$row['count_visits'].' '.get_lang('Clicks').'</td>
  442.                     </tr>';
  443.             if($export_csv){
  444.                 $temp=array($row['title'],$row['count_visits'].' '.get_lang('Clicks'));
  445.                 $csv_content[$temp;
  446.             }
  447.         }
  448.     }
  449.     else
  450.     {
  451.         echo '<tr><td>'.get_lang('NoLinkVisited').'</td></tr>';
  452.         if($export_csv){
  453.             $temp=array(get_lang('NoLinkVisited'),'');
  454.             $csv_content[$temp;
  455.         }
  456.     }
  457.     echo '</table></div>';
  458.     
  459.     
  460.     echo '<div class="clear"></div>';    
  461.     
  462.     // send the csv file if asked
  463.     if($export_csv)
  464.     {
  465.         ob_end_clean();
  466.         Export :: export_table_csv($csv_content'reporting_course_tracking');
  467.     }
  468.     
  469. }
  470. // else display student list with all the informations
  471. else {
  472.     
  473.     // BEGIN : form to remind inactives susers
  474.     $form new FormValidator('reminder_form','get',api_get_path(REL_CODE_PATH).'announcements/announcements.php');
  475.     
  476.     $renderer $form->defaultRenderer();
  477.     $renderer->setElementTemplate('<span>{label} {element}</span>&nbsp;<input type="submit" value="'.get_lang('Ok').'"','since');
  478.     
  479.     $options array(
  480.                 => '2 '.get_lang('Days'),
  481.                 => '3 '.get_lang('Days'),
  482.                 => '4 '.get_lang('Days'),
  483.                 => '5 '.get_lang('Days'),
  484.                 => '6 '.get_lang('Days'),
  485.                 => '7 '.get_lang('Days'),
  486.                 15 => '15 '.get_lang('Days'),
  487.                 30 => '30 '.get_lang('Days')
  488.                 );
  489.     
  490.     $el $form -> addElement('select','since','<img width="22" align="middle" src="'.api_get_path(WEB_IMG_PATH).'messagebox_warning.gif" border="0" />'.get_lang('RemindInactivesLearnersSince'),$options);
  491.     $el -> setSelected(7);
  492.     
  493.     $form -> addElement('hidden','action','add');
  494.     $form -> addElement('hidden','remindallinactives','true');
  495.     
  496.     $form -> display();
  497.     // END : form to remind inactives susers
  498.     
  499.  
  500.     $tracking_column = isset($_GET['tracking_column']$_GET['tracking_column'0;
  501.     $tracking_direction = isset($_GET['tracking_direction']$_GET['tracking_direction''DESC';
  502.     
  503.     if(count($a_students)>0)
  504.     {
  505.         $table new SortableTable('tracking''count_student_in_course');
  506.         $table -> set_header(0get_lang('OfficialCode')false'align="center"');
  507.         $table -> set_header(1get_lang('LastName')true'align="center"');
  508.         $table -> set_header(2get_lang('FirstName')false'align="center"');
  509.         $table -> set_header(3get_lang('Time'),false);
  510.         $table -> set_header(4get_lang('Progress'),false);
  511.         $table -> set_header(5get_lang('Score'),false);    
  512.         $table -> set_header(6get_lang('Student_publication'),false);
  513.         $table -> set_header(7get_lang('Messages'),false);
  514.         $table -> set_header(8get_lang('FirstLogin')false'align="center"');
  515.         $table -> set_header(9get_lang('LatestLogin')false'align="center"');
  516.         $table -> set_header(10get_lang('Details'),false);
  517.          
  518.         if($export_csv)
  519.         {
  520.             $csv_content[array 
  521.                                     get_lang('OfficialCode'),
  522.                                     get_lang('LastName'),
  523.                                     get_lang('FirstName'),
  524.                                     get_lang('Time'),
  525.                                     get_lang('Progress'),
  526.                                     get_lang('Score'),
  527.                                     get_lang('Student_publication'),
  528.                                     get_lang('Messages'),
  529.                                     get_lang('FirstLogin'),
  530.                                     get_lang('LatestLogin')
  531.                                    );
  532.         }
  533.         
  534.         $all_datas array();
  535.         $course_code $_course['id'];
  536.         foreach($a_students as $student_id => $student)
  537.         {
  538.             $student_datas UserManager :: get_user_info_by_id($student_id);
  539.             
  540.             $avg_time_spent $avg_student_score $avg_student_progress $total_assignments $total_messages ;
  541.             $nb_courses_student 0;
  542.             $avg_time_spent Tracking :: get_time_spent_on_the_course($student_id$course_code);
  543.             $avg_student_score Tracking :: get_avg_student_score($student_id$course_code);
  544.             $avg_student_progress Tracking :: get_avg_student_progress($student_id$course_code);
  545.             $total_assignments Tracking :: count_student_assignments($student_id$course_code);
  546.             $total_messages Tracking :: count_student_messages($student_id$course_code);
  547.             
  548.             $row array();
  549.             $row[$student_datas['official_code'];
  550.             $row[$student_datas['lastname'];
  551.             $row[=     $student_datas['firstname'];
  552.             $row[api_time_to_hms($avg_time_spent);
  553.             $row[$avg_student_progress.' %';
  554.             $row[$avg_student_score.' %';        
  555.             $row[$total_assignments;
  556.             $row[$total_messages;
  557.             $row[Tracking :: get_first_connection_date_on_the_course($student_id$course_code);
  558.             $row[Tracking :: get_last_connection_date_on_the_course($student_id$course_code);
  559.             
  560.             if($export_csv)
  561.             {
  562.                 $row[8strip_tags($row[8]);
  563.                 $csv_content[$row;
  564.             }
  565.             
  566.             $row['<a href="../mySpace/myStudents.php?student='.$student_id.'&details=true&course='.$course_code.'&origin=tracking_course"><img src="'.api_get_path(WEB_IMG_PATH).'2rightarrow.gif" border="0" /></a>';
  567.             
  568.             $all_datas[$row;        
  569.     
  570.         }
  571.         
  572.         usort($all_datas'sort_users');
  573.         $page $table->get_pager()->getCurrentPageID();
  574.         $all_datas array_slice($all_datas($page-1)*$table -> per_page$table -> per_page);
  575.         
  576.         if($export_csv)
  577.         {
  578.             usort($csv_content'sort_users');
  579.         }
  580.         
  581.         foreach($all_datas as $row)
  582.         {
  583.             $table -> addRow($row,'align="right"');    
  584.         }
  585.         $table -> setColAttributes(0,array('align'=>'left'));
  586.         $table -> setColAttributes(1,array('align'=>'left'));
  587.         $table -> setColAttributes(2,array('align'=>'left'));
  588.         $table -> setColAttributes(7,array('align'=>'right'));
  589.         $table -> setColAttributes(8,array('align'=>'center'));
  590.         $table -> setColAttributes(9,array('align'=>'center'));
  591.         $table -> display();
  592.         
  593.     }
  594.     else
  595.     {
  596.         echo get_lang('NoUsersInCourseTracking');
  597.     }
  598.     
  599.     // send the csv file if asked
  600.     if($export_csv)
  601.     {
  602.         ob_end_clean();
  603.         Export :: export_table_csv($csv_content'reporting_student_list');
  604.     }
  605.     
  606. }
  607. ?>
  608. </table>
  609.  
  610. <?php
  611. ?>

Documentation generated on Thu, 12 Jun 2008 13:11:57 -0500 by phpDocumentor 1.4.1