ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilLOTestAssignmentTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 
5 include_once './Modules/Course/classes/Objectives/class.ilLOSettings.php';
6 include_once './Services/Table/classes/class.ilTable2GUI.php';
7 include_once './Modules/Course/exceptions/class.ilLOInvalidConfiguationException.php';
8 
18 {
21 
22  private $test_type = 0;
23  private $assignment_type = self::TYPE_SINGLE_ASSIGNMENTS;
24  private $settings = null;
25  private $container_id = 0;
26 
27 
34  public function __construct($a_parent_obj, $a_parent_cmd, $a_container_id, $a_test_type, $a_assignment_type = self::TYPE_SINGLE_ASSIGNMENTS)
35  {
36  $this->test_type = $a_test_type;
37  $this->assignment_type = $a_assignment_type;
38  $this->container_id = $a_container_id;
39 
40  $this->setId('obj_loc_' . $a_container_id);
41  parent::__construct($a_parent_obj, $a_parent_cmd);
42 
43  $this->settings = ilLOSettings::getInstanceByObjId($a_container_id);
44  $this->initTitle();
45  $this->setTopCommands(false);
46  }
47 
48  public function initTitle()
49  {
50  switch ($this->test_type) {
52  if ($this->getAssignmentType() == self::TYPE_SINGLE_ASSIGNMENTS) {
53  if ($this->getSettings()->isInitialTestQualifying()) {
54  $this->setTitle($this->lng->txt('crs_loc_settings_tbl_its_q_all'));
55  } else {
56  $this->setTitle($this->lng->txt('crs_loc_settings_tbl_its_nq_all'));
57  }
58  } else {
59  if ($this->getSettings()->isInitialTestQualifying()) {
60  $this->setTitle($this->lng->txt('crs_loc_settings_tbl_it_q'));
61  } else {
62  $this->setTitle($this->lng->txt('crs_loc_settings_tbl_it_nq'));
63  }
64  }
65  break;
66 
67 
69  if ($this->getAssignmentType() == self::TYPE_SINGLE_ASSIGNMENTS) {
70  $this->setTitle($this->lng->txt('crs_loc_settings_tbl_qts_all'));
71  } else {
72  $this->setTitle($this->lng->txt('crs_loc_settings_tbl_qt'));
73  }
74  break;
75  }
76  }
77 
82  public function getSettings()
83  {
84  return $this->settings;
85  }
86 
87  public function getAssignmentType()
88  {
90  }
91 
95  public function init()
96  {
97  $this->addColumn('', '', '20px');
98  $this->addColumn($this->lng->txt('title'), 'title');
99 
100  if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
101  $this->addColumn($this->lng->txt('crs_objectives'), 'objective');
102  }
103 
104  $this->addColumn($this->lng->txt('crs_loc_tbl_tst_type'), 'ttype');
105  $this->addColumn($this->lng->txt('crs_loc_tbl_tst_qst_qpl'), 'qstqpl');
106 
107 
108  $this->setRowTemplate("tpl.crs_loc_tst_row.html", "Modules/Course");
109  $this->setFormAction($GLOBALS['DIC']['ilCtrl']->getFormAction($this->getParentObject()));
110 
111  if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
112  $this->addMultiCommand('confirmDeleteTests', $this->lng->txt('crs_loc_delete_assignment'));
113  $this->setDefaultOrderField('objective');
114  $this->setDefaultOrderDirection('asc');
115  } else {
116  $this->addMultiCommand('confirmDeleteTest', $this->lng->txt('crs_loc_delete_assignment'));
117  $this->setDefaultOrderField('title');
118  $this->setDefaultOrderDirection('asc');
119  }
120  }
121 
126  public function fillRow($set)
127  {
128  global $DIC;
129 
130  $ilCtrl = $DIC['ilCtrl'];
131 
132  if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
133  $this->tpl->setVariable('VAL_ID', $set['assignment_id']);
134  } else {
135  $this->tpl->setVariable('VAL_ID', $set['ref_id']);
136  }
137  $this->tpl->setVariable('VAL_TITLE', $set['title']);
138  include_once './Services/Link/classes/class.ilLink.php';
139 
140  $ilCtrl->setParameterByClass('ilobjtestgui', 'ref_id', $set['ref_id']);
141  $ilCtrl->setParameterByClass('ilobjtestgui', 'cmd', 'questionsTabGateway');
142  $this->tpl->setVariable(
143  'TITLE_LINK',
144  $ilCtrl->getLinkTargetByClass('ilobjtestgui')
145  );
146 
147  if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
148  $this->tpl->setCurrentBlock('objectives');
149  $this->tpl->setVariable('VAL_OBJECTIVE', (string) $set['objective']);
150  $this->tpl->parseCurrentBlock();
151  }
152 
153 
154 
155  #$this->tpl->setVariable('TITLE_LINK',ilLink::_getLink($set['ref_id']));
156  if (strlen($set['description'])) {
157  $this->tpl->setVariable('VAL_DESC', $set['description']);
158  }
159 
160  switch ($set['ttype']) {
162  $type = $this->lng->txt('tst_question_set_type_fixed');
163  break;
164 
166  $type = $this->lng->txt('tst_question_set_type_random');
167  break;
168  }
169 
170  $this->tpl->setVariable('VAL_TTYPE', $type);
171  $this->tpl->setVariable('VAL_QST_QPL', $set['qst_info']);
172 
173  if (isset($set['qpls']) && is_array($set['qpls']) && count($set['qpls']) > 0) {
174  foreach ($set['qpls'] as $title) {
175  $this->tpl->setCurrentBlock('qpl');
176  $this->tpl->setVariable('MAT_TITLE', $title);
177  $this->tpl->parseCurrentBlock();
178  }
179  $this->tpl->touchBlock('ul_begin');
180  $this->tpl->touchBlock('ul_end');
181  }
182  }
183 
184  public function parseMultipleAssignments()
185  {
186  include_once './Modules/Course/classes/Objectives/class.ilLOTestAssignments.php';
187  $assignments = ilLOTestAssignments::getInstance($this->container_id);
188 
189  $available = $assignments->getAssignmentsByType($this->test_type);
190  $data = array();
191  foreach ($available as $assignment) {
192  try {
193  $tmp = $this->doParse($assignment->getTestRefId(), $assignment->getObjectiveId());
194  } catch (ilLOInvalidConfigurationException $e) {
195  $assignment->delete();
196  continue;
197  }
198  if ($tmp) {
199  // add assignment id
200  $tmp['assignment_id'] = $assignment->getAssignmentId();
201  $data[] = $tmp;
202  }
203  }
204 
205  $this->setData($data);
206  }
207 
213  public function parse($a_tst_ref_id)
214  {
215  $this->setData(array($this->doParse($a_tst_ref_id)));
216  return true;
217  }
218 
223  protected function doParse($a_tst_ref_id, $a_objective_id = 0)
224  {
225  include_once './Modules/Test/classes/class.ilObjTest.php';
226  $tst = ilObjectFactory::getInstanceByRefId($a_tst_ref_id, false);
227 
228  if (!$tst instanceof ilObjTest) {
229  throw new ilLOInvalidConfigurationException('No valid test given');
230  }
231  $tst_data['ref_id'] = $tst->getRefId();
232  $tst_data['title'] = $tst->getTitle();
233  $tst_data['description'] = $tst->getLongDescription();
234  $tst_data['ttype'] = $tst->getQuestionSetType();
235 
236 
237  if ($this->getAssignmentType() == self::TYPE_MULTIPLE_ASSIGNMENTS) {
238  include_once './Modules/Course/classes/class.ilCourseObjective.php';
239  $tst_data['objective'] = ilCourseObjective::lookupObjectiveTitle($a_objective_id);
240  }
241 
242  switch ($tst->getQuestionSetType()) {
244  $tst_data['qst_info'] = $this->lng->txt('crs_loc_tst_num_qst');
245  $tst_data['qst_info'] .= (' ' . count($tst->getAllQuestions()));
246  break;
247 
248  default:
249  // get available assiged question pools
250  include_once './Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionFactory.php';
251  include_once './Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionList.php';
252 
254  $GLOBALS['DIC']['ilDB'],
255  $tst,
257  $GLOBALS['DIC']['ilDB'],
258  $tst
259  )
260  );
261 
262  $list->loadDefinitions();
263 
264  // tax translations
265  include_once './Modules/Test/classes/class.ilTestTaxonomyFilterLabelTranslater.php';
266  $translater = new ilTestTaxonomyFilterLabelTranslater($GLOBALS['DIC']['ilDB']);
267  $translater->loadLabels($list);
268 
269  $tst_data['qst_info'] = $this->lng->txt('crs_loc_tst_qpls');
270  $num = 0;
271  foreach ($list as $definition) {
273  $title = $definition->getPoolTitle();
274  // fau: taxFilter/typeFilter - get title for extended filter conditions
275  $filterTitle = array();
276  $filterTitle[] = $translater->getTaxonomyFilterLabel($definition->getMappedTaxonomyFilter());
277  $filterTitle[] = $translater->getTypeFilterLabel($definition->getTypeFilter());
278  if (!empty($filterTitle)) {
279  $title .= ' -> ' . implode(' / ', $filterTitle);
280  }
281  #$tax_id = $definition->getMappedFilterTaxId();
282  #if($tax_id)
283  #{
284  # $title .= (' -> '. $translater->getTaxonomyTreeLabel($tax_id));
285  #}
286  #$tax_node = $definition->getMappedFilterTaxNodeId();
287  #if($tax_node)
288  #{
289  # $title .= (' -> ' .$translater->getTaxonomyNodeLabel($tax_node));
290  #}
291  // fau.
292  $tst_data['qpls'][] = $title;
293  ++$num;
294  }
295  if (!$num) {
296  $tst_data['qst_info'] .= (' ' . (int) 0);
297  }
298  break;
299  }
300  return $tst_data;
301  }
302 }
static getInstanceByObjId($a_obj_id)
get singleton instance
static getInstance($a_container_id)
Get instance by container id.
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
static lookupObjectiveTitle($a_objective_id, $a_add_description=false)
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
settings()
Definition: settings.php:2
$type
const QUESTION_SET_TYPE_RANDOM
type setting value for random question set
global $DIC
Definition: saml.php:7
getParentObject()
Get parent object.
setId($a_val)
Set id.
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
__construct($a_parent_obj, $a_parent_cmd, $a_container_id, $a_test_type, $a_assignment_type=self::TYPE_SINGLE_ASSIGNMENTS)
Constructor.
setTopCommands($a_val)
Set top commands (display command buttons on top of table, too)
Class ilTable2GUI.
Class ilLOTestAssignmentTableGUI.
addMultiCommand($a_cmd, $a_text)
Add Command button.
Class ilLOInvalidConfigurationException.
getFormAction()
Get Form action parameter.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
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.
const QUESTION_SET_TYPE_FIXED
type setting value for fixed question set
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
parse($a_tst_ref_id)
Parse single test assignment.
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.