|
|
|
|
|
<?php
|
|
|
|
|
|
/*
|
|
|
|
|
|
==============================================================================
|
|
|
|
|
|
Dokeos - elearning and course management software
|
|
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2008 Dokeos SPRL
|
|
|
|
|
|
|
|
|
|
|
|
For a full list of contributors, see "credits.txt".
|
|
|
|
|
|
The full license can be read in "license.txt".
|
|
|
|
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
|
|
Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
|
|
|
|
|
|
Mail: info@dokeos.com
|
|
|
|
|
|
==============================================================================
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include_once (dirname(__FILE__).'/../../../inc/global.inc.php');
|
|
|
|
|
|
include_once (dirname(__FILE__).'/../be.inc.php');
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Table to display categories, evaluations and links
|
|
|
|
|
|
* @author Stijn Konings
|
|
|
|
|
|
* @author Bert Stepp<EFBFBD> (refactored, optimised)
|
|
|
|
|
|
*/
|
|
|
|
|
|
class GradebookTable extends SortableTable
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
private $currentcat;
|
|
|
|
|
|
private $datagen;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Constructor
|
|
|
|
|
|
*/
|
|
|
|
|
|
function GradebookTable ($currentcat, $cats = array(), $evals = array(), $links = array(), $addparams = null)
|
|
|
|
|
|
{
|
|
|
|
|
|
parent :: SortableTable ('gradebooklist', null, null, (api_is_allowed_to_create_course()?1:0));
|
|
|
|
|
|
|
|
|
|
|
|
$this->currentcat = $currentcat;
|
|
|
|
|
|
|
|
|
|
|
|
$this->datagen = new GradebookDataGenerator($cats, $evals, $links);
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($addparams))
|
|
|
|
|
|
$this->set_additional_parameters($addparams);
|
|
|
|
|
|
|
|
|
|
|
|
$column= 0;
|
|
|
|
|
|
if (api_is_allowed_to_create_course())
|
|
|
|
|
|
$this->set_header($column++, '', false);
|
|
|
|
|
|
$this->set_header($column++, get_lang('Type'));
|
|
|
|
|
|
$this->set_header($column++, get_lang('Name'));
|
|
|
|
|
|
$this->set_header($column++, get_lang('Description'));
|
|
|
|
|
|
$this->set_header($column++, get_lang('Weight'));
|
|
|
|
|
|
$this->set_header($column++, get_lang('Date'),true, 'width="100"');
|
|
|
|
|
|
|
|
|
|
|
|
//admins get an edit column
|
|
|
|
|
|
if (api_is_allowed_to_create_course())
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
$this->set_header($column++, get_lang('Modify'), false, 'width="80"');
|
|
|
|
|
|
//actions on multiple selected documents
|
|
|
|
|
|
$this->set_form_actions(array (
|
|
|
|
|
|
'delete' => get_lang('DeleteSelected'),
|
|
|
|
|
|
'setvisible' => get_lang('SetVisible'),
|
|
|
|
|
|
'setinvisible' => get_lang('SetInvisible')));
|
|
|
|
|
|
}
|
|
|
|
|
|
//students get a result column
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
$this->set_header($column++, get_lang('Results'), false);
|
|
|
|
|
|
$this->set_header($column++, get_lang('Certificates'), false);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Function used by SortableTable to get total number of items in the table
|
|
|
|
|
|
*/
|
|
|
|
|
|
function get_total_number_of_items()
|
|
|
|
|
|
{
|
|
|
|
|
|
return $this->datagen->get_total_items_count();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Function used by SortableTable to generate the data to display
|
|
|
|
|
|
*/
|
|
|
|
|
|
function get_table_data($from = 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
// determine sorting type
|
|
|
|
|
|
$col_adjust = (api_is_allowed_to_create_course() ? 1 : 0);
|
|
|
|
|
|
switch ($this->column)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Type
|
|
|
|
|
|
case (0 + $col_adjust) :
|
|
|
|
|
|
$sorting = GradebookDataGenerator :: GDG_SORT_TYPE;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case (1 + $col_adjust) :
|
|
|
|
|
|
$sorting = GradebookDataGenerator :: GDG_SORT_NAME;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case (2 + $col_adjust) :
|
|
|
|
|
|
$sorting = GradebookDataGenerator :: GDG_SORT_DESCRIPTION;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case (3 + $col_adjust) :
|
|
|
|
|
|
$sorting = GradebookDataGenerator :: GDG_SORT_WEIGHT;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case (4 + $col_adjust) :
|
|
|
|
|
|
$sorting = GradebookDataGenerator :: GDG_SORT_DATE;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ($this->direction == 'DESC')
|
|
|
|
|
|
$sorting |= GradebookDataGenerator :: GDG_SORT_DESC;
|
|
|
|
|
|
else
|
|
|
|
|
|
$sorting |= GradebookDataGenerator :: GDG_SORT_ASC;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$data_array = $this->datagen->get_data($sorting, $from, $this->per_page);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// generate the data to display
|
|
|
|
|
|
$sortable_data = array();
|
|
|
|
|
|
foreach ($data_array as $data)
|
|
|
|
|
|
{
|
|
|
|
|
|
$row = array ();
|
|
|
|
|
|
|
|
|
|
|
|
$item = $data[0];
|
|
|
|
|
|
|
|
|
|
|
|
//if the item is invisible, wrap it in a span with class invisible
|
|
|
|
|
|
$invisibility_span_open = (api_is_allowed_to_create_course() && $item->is_visible() == '0') ? '<span class="invisible">' : '';
|
|
|
|
|
|
$invisibility_span_close = (api_is_allowed_to_create_course() && $item->is_visible() == '0') ? '</span>' : '';
|
|
|
|
|
|
|
|
|
|
|
|
if (api_is_allowed_to_create_course())
|
|
|
|
|
|
$row[] = $this->build_id_column ($item);
|
|
|
|
|
|
|
|
|
|
|
|
$row[] = $this->build_type_column ($item);
|
|
|
|
|
|
$row[] = $invisibility_span_open . $this->build_name_link ($item) . $invisibility_span_close;
|
|
|
|
|
|
$row[] = $invisibility_span_open . $data[2] . $invisibility_span_close;
|
|
|
|
|
|
$row[] = $invisibility_span_open . $data[3] . $invisibility_span_close;
|
|
|
|
|
|
$row[] = $invisibility_span_open . $data[4] . $invisibility_span_close;
|
|
|
|
|
|
|
|
|
|
|
|
//admins get an edit column
|
|
|
|
|
|
if (api_is_allowed_to_create_course())
|
|
|
|
|
|
{
|
|
|
|
|
|
$row[] = $this->build_edit_column ($item);
|
|
|
|
|
|
}
|
|
|
|
|
|
//students get the results and certificates columns
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
$row[] = $data[5];
|
|
|
|
|
|
$row[] = $data[6];
|
|
|
|
|
|
}
|
|
|
|
|
|
$sortable_data[] = $row;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $sortable_data;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Other functions
|
|
|
|
|
|
|
|
|
|
|
|
private function build_id_column ($item)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch ($item->get_item_type())
|
|
|
|
|
|
{
|
|
|
|
|
|
// category
|
|
|
|
|
|
case 'C' :
|
|
|
|
|
|
return 'CATE' . $item->get_id();
|
|
|
|
|
|
// evaluation
|
|
|
|
|
|
case 'E' :
|
|
|
|
|
|
return 'EVAL' . $item->get_id();
|
|
|
|
|
|
// link
|
|
|
|
|
|
case 'L' :
|
|
|
|
|
|
return 'LINK' . $item->get_id();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private function build_type_column ($item)
|
|
|
|
|
|
{
|
|
|
|
|
|
return build_type_icon_tag($item->get_icon_name());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private function build_name_link ($item)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch ($item->get_item_type())
|
|
|
|
|
|
{
|
|
|
|
|
|
// category
|
|
|
|
|
|
case 'C' :
|
|
|
|
|
|
return ' <a href="gradebook.php?selectcat=' . $item->get_id() . '">'
|
|
|
|
|
|
. $item->get_name()
|
|
|
|
|
|
. '</a>'
|
|
|
|
|
|
. ($item->is_course() ? ' [' . $item->get_course_code() . ']' : '');
|
|
|
|
|
|
// evaluation
|
|
|
|
|
|
case 'E' :
|
|
|
|
|
|
|
|
|
|
|
|
// course/platform admin can go to the view_results page
|
|
|
|
|
|
if (api_is_allowed_to_create_course())
|
|
|
|
|
|
return ' '
|
|
|
|
|
|
. '<a href="gradebook_view_result.php?selecteval=' . $item->get_id() . '">'
|
|
|
|
|
|
. $item->get_name()
|
|
|
|
|
|
. '</a>';
|
|
|
|
|
|
// students can go to the statistics page (if custom display enabled)
|
|
|
|
|
|
elseif (ScoreDisplay :: instance()->is_custom())
|
|
|
|
|
|
return ' '
|
|
|
|
|
|
. '<a href="gradebook_statistics.php?selecteval=' . $item->get_id() . '">'
|
|
|
|
|
|
. $item->get_name()
|
|
|
|
|
|
. '</a>';
|
|
|
|
|
|
else
|
|
|
|
|
|
return $item->get_name();
|
|
|
|
|
|
|
|
|
|
|
|
// link
|
|
|
|
|
|
case 'L' :
|
|
|
|
|
|
$url = $item->get_link();
|
|
|
|
|
|
if (isset($url))
|
|
|
|
|
|
$text = ' <a href="' . $item->get_link() . '">'
|
|
|
|
|
|
. $item->get_name()
|
|
|
|
|
|
. '</a>';
|
|
|
|
|
|
else
|
|
|
|
|
|
$text = $item->get_name();
|
|
|
|
|
|
$text .= ' [' . $item->get_type_name() . ']';
|
|
|
|
|
|
$cc = $this->currentcat->get_course_code();
|
|
|
|
|
|
if(empty($cc))
|
|
|
|
|
|
{
|
|
|
|
|
|
$text .= ' [<a href="'.api_get_path(REL_COURSE_PATH).$item->get_course_code().'/">'.$item->get_course_code().'</a>]';
|
|
|
|
|
|
}
|
|
|
|
|
|
return $text;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private function build_edit_column ($item)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch ($item->get_item_type())
|
|
|
|
|
|
{
|
|
|
|
|
|
// category
|
|
|
|
|
|
case 'C' :
|
|
|
|
|
|
return build_edit_icons_cat($item, $this->currentcat->get_id());
|
|
|
|
|
|
// evaluation
|
|
|
|
|
|
case 'E' :
|
|
|
|
|
|
return build_edit_icons_eval($item, $this->currentcat->get_id());
|
|
|
|
|
|
// link
|
|
|
|
|
|
case 'L' :
|
|
|
|
|
|
return build_edit_icons_link($item, $this->currentcat->get_id());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
?>
|