ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilExParticipantTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once("./Services/Table/classes/class.ilTable2GUI.php");
5 include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
6 include_once("./Modules/Exercise/classes/class.ilFSStorageExercise.php");
7 include_once("./Services/Rating/classes/class.ilRatingGUI.php");
8 
18 {
19 
23  function __construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_part_id)
24  {
25  global $ilCtrl, $lng, $ilAccess, $lng;
26 
27  $this->exc = $a_exc;
28  $this->exc_id = $this->exc->getId();
29 
30  include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
31 
32  $this->part_id = $a_part_id;
33 
34  $this->setId("exc_part_".$this->exc_id."_".$this->part_id);
35 
36  include_once("./Services/User/classes/class.ilObjUser.php");
37 
38  if ($this->part_id > 0)
39  {
40  $name = ilObjUser::_lookupName($this->part_id);
41  if(trim($name["login"]))
42  {
43  $this->user = new ilObjUser($this->part_id);
44  }
45  // #14650 - invalid user
46  else
47  {
48  $ilCtrl->setParameter($a_parent_obj, "part_id", "");
49  $ilCtrl->redirect($a_parent_obj, $a_parent_cmd);
50  }
51  }
52 
53  parent::__construct($a_parent_obj, $a_parent_cmd);
54 
55  //$this->setData(ilExAssignment::getMemberListData($this->exc_id, $this->ass_id));
57  $this->setData($data);
58 
59 //var_dump($data);
60 
61  if ($this->part_id > 0)
62  {
63  $this->setTitle($lng->txt("exc_participant").": ".
64  $name["lastname"].", ".$name["firstname"]." [".$name["login"]."]");
65  }
66  else
67  {
68  $this->setTitle($lng->txt("exc_participant"));
69  }
70 
71  $this->setTopCommands(true);
72  //$this->setLimit(9999);
73 
74 // $this->addColumn("", "", "1", true);
75  $this->addColumn($this->lng->txt("exc_assignment"), "order_val");
76  $this->addColumn($this->lng->txt("exc_submission"), "submission");
77  $this->addColumn($this->lng->txt("exc_grading"), "solved_time");
78 // $this->addColumn($this->lng->txt("mail"), "feedback_time");
79  $this->addColumn($this->lng->txt("feedback"), "feedback_time");
80 
81  $this->setDefaultOrderField("order_val");
82  $this->setDefaultOrderDirection("asc");
83 
84  $this->setEnableHeader(true);
85  $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
86  $this->setRowTemplate("tpl.exc_participant_row.html", "Modules/Exercise");
87  //$this->disable("footer");
88  $this->setEnableTitle(true);
89 // $this->setSelectAllCheckbox("assid");
90 
91  if ($this->part_id > 0)
92  {
93  $this->addCommandButton("saveStatusParticipant", $lng->txt("exc_save_changes"));
94  }
95  }
96 
100  function numericOrdering($a_f)
101  {
102  if (in_array($a_f, array("order_val")))
103  {
104  return true;
105  }
106  return false;
107  }
108 
109 
113  protected function fillRow($d)
114  {
115  global $lng, $ilCtrl;
116 
117  $this->tpl->setVariable("TXT_ASS_TITLE", $d["title"]);
118 
119  $file_info = ilExAssignment::getDownloadedFilesInfoForTableGUIS($this->parent_obj, $this->exc_id, $d["type"], $d["id"], $this->part_id, $this->parent_cmd);
120 
121  $has_no_team_yet = false;
122  if($d["type"] == ilExAssignment::TYPE_UPLOAD_TEAM)
123  {
124  $members = ilExAssignment::getTeamMembersByAssignmentId($d["id"], $this->part_id);
125 
126  // #11957
127  if(sizeof($members))
128  {
129  $this->tpl->setCurrentBlock("ass_members");
130  foreach($members as $member_id)
131  {
132  $this->tpl->setVariable("TXT_MEMBER_NAME",
133  ilObjUser::_lookupFullname($member_id));
134  $this->tpl->parseCurrentBlock();
135  }
136 
137  $ilCtrl->setParameter($this->parent_obj, "lpart", $this->part_id);
138  $this->tpl->setVariable("HREF_LOG",
139  $ilCtrl->getLinkTarget($this->parent_obj, "showTeamLog"));
140  $this->tpl->setVariable("TXT_LOG", $lng->txt("exc_team_log"));
141  $ilCtrl->setParameter($this->parent_obj, "lpart", "");
142  }
143  else
144  {
145  // #11957
146  $has_no_team_yet = true;
147  $this->tpl->setCurrentBlock("team_info");
148  $this->tpl->setVariable("TXT_TEAM_INFO", $lng->txt("exc_no_team_yet"));
149  $this->tpl->setVariable("TXT_CREATE_TEAM", $lng->txt("exc_create_team"));
150 
151  $ilCtrl->setParameter($this->parent_obj, "ass_id", $d["id"]);
152  $ilCtrl->setParameter($this->parent_obj, "lpart", $this->part_id);
153  $this->tpl->setVariable("URL_CREATE_TEAM",
154  $ilCtrl->getLinkTarget($this->getParentObject(), "createSingleMemberTeam"));
155  $ilCtrl->setParameter($this->parent_obj, "lpart", "");
156  $ilCtrl->setParameter($this->parent_obj, "ass_id", "");
157 
158  if($file_info["files"]["count"])
159  {
160  $this->tpl->setVariable("TEAM_FILES_INFO", "<br />".
161  $file_info["files"]["txt"].": ".
162  $file_info["files"]["count"]);
163  }
164  $this->tpl->parseCurrentBlock();
165  }
166  }
167 
168  if(!$has_no_team_yet)
169  {
170  $this->tpl->setVariable("VAL_CHKBOX",
171  ilUtil::formCheckbox(0, "assid[".$d["id"]."]",1));
172  $this->tpl->setVariable("VAL_ID",
173  $d["id"]);
174 
175  $this->tpl->setVariable("VAL_LAST_SUBMISSION", $file_info["last_submission"]["value"]);
176  $this->tpl->setVariable("TXT_LAST_SUBMISSION", $file_info["last_submission"]["txt"]);
177 
178  $this->tpl->setVariable("TXT_SUBMITTED_FILES", $file_info["files"]["txt"]);
179  $this->tpl->setVariable("VAL_SUBMITTED_FILES", $file_info["files"]["count"]);
180 
181  if($file_info["files"]["download_url"])
182  {
183  $this->tpl->setCurrentBlock("download_link");
184  $this->tpl->setVariable("LINK_DOWNLOAD", $file_info["files"]["download_url"]);
185  $this->tpl->setVariable("TXT_DOWNLOAD", $file_info["files"]["download_txt"]);
186  $this->tpl->parseCurrentBlock();
187  }
188 
189  if($file_info["files"]["download_new_url"])
190  {
191  $this->tpl->setCurrentBlock("download_link");
192  $this->tpl->setVariable("LINK_NEW_DOWNLOAD", $file_info["files"]["download_new_url"]);
193  $this->tpl->setVariable("TXT_NEW_DOWNLOAD", $file_info["files"]["download_new_txt"]);
194  $this->tpl->parseCurrentBlock();
195  }
196 
197  // note
198  $this->tpl->setVariable("TXT_NOTE", $lng->txt("note"));
199  $this->tpl->setVariable("NAME_NOTE",
200  "notice[".$d["id"]."]");
201  $this->tpl->setVariable("VAL_NOTE",
203 
204  // comment for learner
205  $this->tpl->setVariable("TXT_LCOMMENT", $lng->txt("exc_comment_for_learner"));
206  $this->tpl->setVariable("NAME_LCOMMENT",
207  "lcomment[".$d["id"]."]");
208  $lpcomment = ilExAssignment::lookupCommentForUser($d["id"], $this->part_id);
209  $this->tpl->setVariable("VAL_LCOMMENT",
210  ilUtil::prepareFormOutput($lpcomment));
211 
212  // solved
213  //$this->tpl->setVariable("CHKBOX_SOLVED",
214  // ilUtil::formCheckbox($this->exc->members_obj->getStatusByMember($member_id),"solved[$member_id]",1));
215  $status = ilExAssignment::lookupStatusOfUser($d["id"], $this->part_id);
216  $this->tpl->setVariable("SEL_".strtoupper($status), ' selected="selected" ');
217  $this->tpl->setVariable("TXT_NOTGRADED", $lng->txt("exc_notgraded"));
218  $this->tpl->setVariable("TXT_PASSED", $lng->txt("exc_passed"));
219  $this->tpl->setVariable("TXT_FAILED", $lng->txt("exc_failed"));
220  if (($sd = ilExAssignment::lookupStatusTimeOfUser($d["id"], $this->part_id)) > 0)
221  {
222  $this->tpl->setCurrentBlock("status_date");
223  $this->tpl->setVariable("TXT_LAST_CHANGE", $lng->txt("last_change"));
224  $this->tpl->setVariable('VAL_STATUS_DATE',
226  $this->tpl->parseCurrentBlock();
227  }
228  switch($status)
229  {
230  case "passed": $pic = "scorm/passed.png"; break;
231  case "failed": $pic = "scorm/failed.png"; break;
232  default: $pic = "scorm/not_attempted.png"; break;
233  }
234  $this->tpl->setVariable("IMG_STATUS", ilUtil::getImagePath($pic));
235  $this->tpl->setVariable("ALT_STATUS", $lng->txt("exc_".$status));
236 
237  // mark
238  $this->tpl->setVariable("TXT_MARK", $lng->txt("exc_mark"));
239  $this->tpl->setVariable("NAME_MARK",
240  "mark[".$d["id"]."]");
241  $mark = ilExAssignment::lookupMarkOfUser($d["id"], $this->part_id);
242  $this->tpl->setVariable("VAL_MARK",
244 
245  // feedback
246  $ilCtrl->setParameter($this->parent_obj, "member_id", $this->part_id);
247  if (($ft = ilExAssignment::lookupFeedbackTimeOfUser($d["id"], $this->part_id)) > 0)
248  {
249  $this->tpl->setCurrentBlock("feedback_date");
250  $this->tpl->setVariable("TXT_FEEDBACK_MAIL_SENT",
251  sprintf($lng->txt("exc_sent_at"),
253  $this->tpl->parseCurrentBlock();
254  }
255  $ilCtrl->setParameter($this, "rcp_to", $this->user->getLogin());
256  $this->tpl->setVariable("LINK_FEEDBACK",
257  $ilCtrl->getLinkTarget($this->parent_obj, "redirectFeedbackMail"));
258  //"ilias.php?baseClass=ilMailGUI&type=new&rcp_to=".$mem_obj->getLogin());
259  $this->tpl->setVariable("TXT_FEEDBACK",
260  $lng->txt("exc_send_mail"));
261  $ilCtrl->setParameter($this->parent_obj, "rcp_to", "");
262 
263  if($d["type"] == ilExAssignment::TYPE_UPLOAD_TEAM)
264  {
265  $feedback_id = "t".ilExAssignment::getTeamIdByAssignment($d["id"], $this->part_id);
266  }
267  else
268  {
269  $feedback_id = $this->part_id;
270  }
271 
272  $storage = new ilFSStorageExercise($this->exc_id, $d["id"]);
273  $cnt_files = $storage->countFeedbackFiles($feedback_id);
274  $ilCtrl->setParameter($this->parent_obj, "fsmode", "feedbackpart");
275  $this->tpl->setVariable("LINK_FILE_FEEDBACK",
276  $ilCtrl->getLinkTargetByClass("ilfilesystemgui", "listFiles"));
277  if ($cnt_files == 0)
278  {
279  $this->tpl->setVariable("TXT_FILE_FEEDBACK",
280  $lng->txt("exc_add_feedback_file"));
281  }
282  else
283  {
284  $this->tpl->setVariable("TXT_FILE_FEEDBACK",
285  $lng->txt("exc_fb_files")." (".$cnt_files.")");
286  }
287 
288  // peer review / rating
289  if($d["type"] != ilExAssignment::TYPE_UPLOAD_TEAM && $d["peer"])
290  {
291  $this->tpl->setCurrentBlock("peer_review_bl");
292  $this->tpl->setVariable("TXT_PEER_REVIEW", $lng->txt("exc_peer_review_show"));
293 
294  $ilCtrl->setParameter($this->parent_obj, "grd", 2);
295  $this->tpl->setVariable("LINK_PEER_REVIEW",
296  $ilCtrl->getLinkTarget($this->parent_obj, "showPersonalPeerReview"));
297  $ilCtrl->setParameter($this->parent_obj, "grd", "");
298 
299  $rating = new ilRatingGUI();
300  $rating->setObject($d["id"], "ass", $this->part_id, "peer");
301  $rating->setUserId(0);
302  $this->tpl->setVariable("VAL_RATING", $rating->getHTML(true, false));
303 
304  $this->tpl->parseCurrentBlock();
305  }
306 
307  $ilCtrl->setParameter($this->parent_obj, "ass_id", $_GET["ass_id"]);
308  }
309  else
310  {
311  $this->tpl->touchBlock("member_has_no_team_bl");
312  }
313  }
314 
315 }
316 ?>