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') ? '' : '';
$invisibility_span_close = (api_is_allowed_to_create_course() && $item->is_visible() == '0') ? '' : '';
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 ' '
. $item->get_name()
. ''
. ($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 ' '
. ''
. $item->get_name()
. '';
// students can go to the statistics page (if custom display enabled)
elseif (ScoreDisplay :: instance()->is_custom())
return ' '
. ''
. $item->get_name()
. '';
else
return $item->get_name();
// link
case 'L' :
$url = $item->get_link();
if (isset($url))
$text = ' '
. $item->get_name()
. '';
else
$text = $item->get_name();
$text .= ' [' . $item->get_type_name() . ']';
$cc = $this->currentcat->get_course_code();
if(empty($cc))
{
$text .= ' ['.$item->get_course_code().']';
}
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());
}
}
}
?>