ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilTestToplistGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Modules/Test/classes/inc.AssessmentConstants.php';
5 require_once 'Modules/Test/classes/class.ilTestTopList.php';
6 require_once 'Services/Table/classes/class.ilTable2GUI.php';
7 
15 {
17  protected $object;
18 
22  protected $toplist;
23 
27  public function __construct(ilObjTestGUI $a_object)
28  {
29  $this->object = $a_object->object;
30  $this->toplist = new ilTestTopList($a_object->object);
31  }
32 
33  public function executeCommand()
34  {
40  global $ilCtrl, $ilTabs, $lng;
41 
42  if(!$this->object->getHighscoreEnabled())
43  {
44  ilUtil::sendFailure($lng->txt('permission_denied'), true);
45  $ilCtrl->redirectByClass('ilObjTestGUI');
46  }
47 
48  $cmd = $ilCtrl->getCmd();
49 
50  $ilCtrl->saveParameter($this, 'active_id');
51 
52  switch($cmd)
53  {
54  case 'showResultsToplistByTime':
55  $this->manageTabs($ilTabs, $ilCtrl, $lng, 'toplist_by_time');
56  $this->showResultsToplistByTime();
57  break;
58 
59  case 'showResultsToplistByScore':
60  default:
61  $this->manageTabs($ilTabs, $ilCtrl, $lng, 'toplist_by_score');
63  }
64  }
65 
66  protected function manageTabs(ilTabsGUI $tabsGUI, ilCtrl $ctrl, ilLanguage $lng, $activeTabId)
67  {
68  $tabsGUI->clearTargets();
69 
70  $tabsGUI->setBackTarget(
71  $lng->txt('tst_results_back_introduction'), $ctrl->getLinkTargetByClass('ilObjTestGUI', 'infoScreen')
72  );
73 
74  $tabsGUI->addTab(
75  'toplist_by_score', $lng->txt('toplist_by_score'), $ctrl->getLinkTarget($this, 'showResultsToplistByScore')
76  );
77 
78  $tabsGUI->addTab(
79  'toplist_by_time', $lng->txt('toplist_by_time'), $ctrl->getLinkTarget($this, 'showResultsToplistByTime')
80  );
81 
82  $tabsGUI->setTabActive($activeTabId);
83  }
84 
85  public function showResultsToplistByScore()
86  {
87  global $ilUser, $lng, $tpl;
88 
89  $html = '';
90 
91  if($this->object->getHighscoreMode() != ilObjTest::HIGHSCORE_SHOW_OWN_TABLE)
92  {
93  $table_gui = new ilTable2GUI($this);
94  $this->prepareTable($table_gui);
95 
96  $data = $this->toplist->getGeneralToplistByPercentage($_GET['ref_id'], $ilUser->getId());
97 
98  $table_gui->setRowTemplate('tpl.toplist_tbl_rows.html', 'Modules/Test');
99  $table_gui->setData($data);
100  $table_gui->setTitle(sprintf($lng->txt('toplist_top_n_results'), $this->object->getHighscoreTopNum()));
101 
102  $html .= $table_gui->getHTML();
103  }
104 
105  if($this->object->getHighscoreMode() != ilObjTest::HIGHSCORE_SHOW_TOP_TABLE)
106  {
107  $table_gui2 = new ilTable2GUI($this);
108 
109  $this->prepareTable($table_gui2);
110 
111  $data2 = $this->toplist->getUserToplistByPercentage($_GET['ref_id'], $ilUser->getID());
112 
113  $table_gui2->setRowTemplate('tpl.toplist_tbl_rows.html', 'Modules/Test');
114  $table_gui2->setData($data2);
115  $table_gui2->setTitle($lng->txt('toplist_your_result'));
116 
117  $html .= $table_gui2->getHTML();
118  }
119 
120  $tpl->setVariable("ADM_CONTENT", $html);
121  }
122 
123  public function showResultsToplistByTime()
124  {
125  global $ilUser, $lng, $tpl;
126 
127  $html = '';
128 
129  if($this->object->getHighscoreMode() != ilObjTest::HIGHSCORE_SHOW_OWN_TABLE)
130  {
131  $table_gui = new ilTable2GUI($this);
132  $this->prepareTable($table_gui);
133 
134  $data = $this->toplist->getGeneralToplistByWorkingtime($_GET['ref_id'], $ilUser->getId());
135 
136  $table_gui->setRowTemplate('tpl.toplist_tbl_rows.html', 'Modules/Test');
137  $table_gui->setData($data);
138  $table_gui->setTitle(sprintf($lng->txt('toplist_top_n_results'), $this->object->getHighscoreTopNum()));
139 
140  $html .= $table_gui->getHTML();
141  }
142 
143  if($this->object->getHighscoreMode() != ilObjTest::HIGHSCORE_SHOW_TOP_TABLE)
144  {
145  $table_gui2 = new ilTable2GUI($this);
146 
147  $this->prepareTable($table_gui2);
148 
149  $data2 = $this->toplist->getUserToplistByWorkingtime($_GET['ref_id'], $ilUser->getID());
150 
151  $table_gui2->setRowTemplate('tpl.toplist_tbl_rows.html', 'Modules/Test');
152  $table_gui2->setData($data2);
153  $table_gui2->setTitle($lng->txt('toplist_your_result'));
154 
155  $html .= $table_gui2->getHTML();
156  }
157 
158  $tpl->setVariable("ADM_CONTENT", $html);
159 
160  }
161 
165  private function prepareTable(ilTable2GUI $table_gui)
166  {
167  global $lng;
168 
169  $table_gui->addColumn($lng->txt('toplist_col_rank'));
170  $table_gui->addColumn($lng->txt('toplist_col_participant'));
171  if($this->object->getHighscoreAchievedTS())
172  {
173  $table_gui->addColumn($lng->txt('toplist_col_achieved'));
174  }
175 
176  if($this->object->getHighscoreScore())
177  {
178  $table_gui->addColumn($lng->txt('toplist_col_score'));
179  }
180 
181  if($this->object->getHighscorePercentage())
182  {
183  $table_gui->addColumn($lng->txt('toplist_col_percentage'));
184  }
185 
186  if($this->object->getHighscoreHints())
187  {
188  $table_gui->addColumn($lng->txt('toplist_col_hints'));
189  }
190 
191  if($this->object->getHighscoreWTime())
192  {
193  $table_gui->addColumn($lng->txt('toplist_col_wtime'));
194  }
195  $table_gui->setEnableNumInfo(false);
196  $table_gui->setLimit(10);
197  }
198 }
Scoring class for tests.
This class provides processing control methods.
setTabActive($a_id)
DEPRECATED.
Class ilObjTestGUI.
Class ilTestTopList.
Tabs GUI.
$_GET["client_id"]
setEnableNumInfo($a_val)
Set enable num info.
$cmd
Definition: sahs_server.php:35
getLinkTargetByClass($a_class, $a_cmd="", $a_anchor="", $a_asynch=false, $xml_style=true)
Get link target for command using gui class name.
setBackTarget($a_title, $a_target, $a_frame="")
back target for upper context
global $tpl
Definition: ilias.php:8
global $ilCtrl
Definition: ilias.php:18
prepareTable(ilTable2GUI $table_gui)
Class ilTable2GUI.
$ilUser
Definition: imgupload.php:18
clearTargets()
clear all targets
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
__construct(ilObjTestGUI $a_object)
const HIGHSCORE_SHOW_TOP_TABLE
Create new PHPExcel object
obj_idprivate
global $lng
Definition: privfeed.php:17
const HIGHSCORE_SHOW_OWN_TABLE
getLinkTarget($a_gui_obj, $a_cmd="", $a_anchor="", $a_asynch=false, $xml_style=true)
Get link target for command using gui object.
manageTabs(ilTabsGUI $tabsGUI, ilCtrl $ctrl, ilLanguage $lng, $activeTabId)
addTab($a_id, $a_text, $a_link, $a_frame="")
Add a Tab.
language handling
txt($a_topic, $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
$html
Definition: example_001.php:87
setLimit($a_limit=0, $a_default_limit=0)