ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5
class.ilObjStudyProgrammeIndividualPlanGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 2015 Richard Klees <richard.klees@concepts-and-training.de> Extended GPL, see docs/LICENSE */
4 
5 
16  public $ctrl;
17 
21  public $tpl;
22 
26  protected $ilAccess;
27 
31  public $object;
32 
36  protected $ilLog;
37 
41  public $ilias;
42 
46  public $lng;
47 
51  public $toolbar;
52 
56  public $user;
57 
58  protected $parent_gui;
59 
60  public function __construct($a_parent_gui, $a_ref_id) {
61  global $tpl, $ilCtrl, $ilAccess, $ilToolbar, $ilLocator, $tree, $lng, $ilLog, $ilias, $ilUser;
62 
63  $this->ref_id = $a_ref_id;
64  $this->parent_gui = $a_parent_gui;
65  $this->tpl = $tpl;
66  $this->ctrl = $ilCtrl;
67  $this->ilAccess = $ilAccess;
68  $this->ilLocator = $ilLocator;
69  $this->tree = $tree;
70  $this->toolbar = $ilToolbar;
71  $this->ilLog = $ilLog;
72  $this->ilias = $ilias;
73  $this->lng = $lng;
74  $this->user = $ilUser;
75  $this->assignment_object = null;
76 
77  $this->object = null;
78 
79  $lng->loadLanguageModule("prg");
80 
81  $this->tpl->addCss("Modules/StudyProgramme/templates/css/ilStudyProgramme.css");
82  }
83 
84  public function executeCommand() {
85  $cmd = $this->ctrl->getCmd();
86 
87  if ($cmd == "") {
88  $cmd = "view";
89  }
90 
91  switch ($cmd) {
92  case "view":
93  case "manage":
94  case "updateFromCurrentPlan":
95  case "updateFromInput":
96  $cont = $this->$cmd();
97  break;
98  default:
99  throw new ilException("ilObjStudyProgrammeMembersGUI: ".
100  "Command not supported: $cmd");
101  }
102 
103  $this->tpl->setContent($cont);
104  }
105 
106  protected function getAssignmentId() {
107  require_once("Modules/StudyProgramme/classes/class.ilStudyProgrammeUserAssignment.php");
108  if (!is_numeric($_GET["ass_id"])) {
109  throw new ilException("Expected integer 'ass_id'");
110  }
111  return (int)$_GET["ass_id"];
112  }
113 
114  protected function getAssignmentObject() {
115  if ($this->assignment_object === null) {
116  $id = $this->getAssignmentId();
117  $this->assignment_object = ilStudyProgrammeUserAssignment::getInstance($id);
118  }
119  return $this->assignment_object;
120  }
121 
122  protected function view() {
123  require_once("Modules/StudyProgramme/classes/class.ilStudyProgrammeIndividualPlanProgressListGUI.php");
124  $gui = new ilStudyProgrammeIndividualPlanProgressListGUI($this->getAssignmentObject()->getRootProgress());
125  $gui->setOnlyRelevant(true);
126  // Wrap a frame around the original gui element to correct rendering.
127  $tpl = new ilTemplate("tpl.individual_plan_tree_frame.html", false, false, "Modules/StudyProgramme");
128  $tpl->setVariable("CONTENT", $gui->getHTML());
129  return $this->buildFrame("view", $tpl->get());
130  }
131 
132  protected function manage() {
133  require_once("Modules/StudyProgramme/classes/class.ilStudyProgrammeIndividualPlanTableGUI.php");
134  $ass = $this->getAssignmentObject();
135  $this->ctrl->setParameter($this, "ass_id", $ass->getId());
136  $this->ctrl->setParameter($this, "cmd", "manage");
137  $table = new ilStudyProgrammeIndividualPlanTableGUI($this, $ass);
138  $frame = $this->buildFrame("manage", $table->getHTML());
139  $this->ctrl->setParameter($this, "ass_id", null);
140  return $frame;
141  }
142 
143  protected function updateFromCurrentPlan() {
144  $ass = $this->getAssignmentObject();
145  $ass->updateFromProgram();
146  $this->ctrl->setParameter($this, "ass_id", $ass->getId());
147  $this->showSuccessMessage("update_from_plan_successful");
148  $this->ctrl->redirect($this, "manage");
149  }
150 
151  protected function updateFromInput() {
152  require_once("Modules/StudyProgramme/classes/class.ilStudyProgrammeUserProgress.php");
153 
154  $changed = false;
155 
156  $changed = $this->updateStatus();
157 
158  $this->ctrl->setParameter($this, "ass_id", $this->getAssignmentId());
159  if ($changed) {
160  $this->showSuccessMessage("update_successful");
161  }
162  $this->ctrl->redirect($this, "manage");
163  }
164 
165  protected function updateStatus() {
166  $status_updates = $this->getManualStatusUpdates();
167  $changed = false;
168  foreach ($status_updates as $prgrs_id => $status) {
170  $cur_status = $prgrs->getStatus();
171  if ($status == self::MANUAL_STATUS_NONE && $cur_status == ilStudyProgrammeProgress::STATUS_ACCREDITED) {
172  $prgrs->unmarkAccredited($this->user->getId());
173  $changed = true;
174  }
175  else if ($status == self::MANUAL_STATUS_NONE && $cur_status == ilStudyProgrammeProgress::STATUS_NOT_RELEVANT) {
176  $prgrs->markRelevant($this->user->getId());
177  $changed = true;
178  }
179  else if($status == self::MANUAL_STATUS_NOT_RELEVANT && $cur_status != ilStudyProgrammeProgress::STATUS_NOT_RELEVANT) {
180  $prgrs->markNotRelevant($this->user->getId());
181  $changed = true;
182  }
183  else if($status == self::MANUAL_STATUS_ACCREDITED && $cur_status != ilStudyProgrammeProgress::STATUS_ACCREDITED) {
184  $prgrs->markAccredited($this->user->getId());
185  $changed = true;
186  }
187 
189  $changed = $this->updateRequiredPoints($prgrs_id) || $changed;
190  }
191  }
192  return $changed;
193  }
194 
195  protected function updateRequiredPoints($prgrs_id) {
196  $required_points = $this->getRequiredPointsUpdates($prgrs_id);
197  $changed = false;
198 
200  $cur_status = $prgrs->getStatus();
202  return false;
203  }
204 
205  if ($required_points < 0) {
206  $required_points = 0;
207  }
208 
209  if ($required_points == $prgrs->getAmountOfPoints()) {
210  return false;
211  }
212 
213  $prgrs->setRequiredAmountOfPoints($required_points, $this->user->getId());
214  return true;
215 
216  }
217 
218  protected function showSuccessMessage($a_lng_var) {
219  require_once("Services/Utilities/classes/class.ilUtil.php");
220  ilUtil::sendSuccess($this->lng->txt("prg_$a_lng_var"), true);
221  }
222 
223  protected function getManualStatusUpdates() {
224  $post_var = $this->getManualStatusPostVarTitle();
225  if (!array_key_exists($post_var, $_POST)) {
226  throw new ilException("Expected array $post_var in POST");
227  }
228  return $_POST[$post_var];
229  }
230 
231  protected function getRequiredPointsUpdates($prgrs_id) {
232  $post_var = $this->getRequiredPointsPostVarTitle();
233  if (!array_key_exists($post_var, $_POST)) {
234  throw new ilException("Expected array $post_var in POST");
235  }
236 
237  $post_value = $_POST[$post_var];
238  return (int)$post_value[$prgrs_id];
239  }
240 
241 
242  protected function buildFrame($tab, $content) {
243  $tpl = new ilTemplate("tpl.indivdual_plan_frame.html", true, true, "Modules/StudyProgramme");
244  $ass = $this->getAssignmentObject();
245 
246  $tpl->setVariable("USERNAME", ilObjUser::_lookupFullname($ass->getUserId()));
247  foreach (array("view", "manage") as $_tab) {
248  $tpl->setCurrentBlock("sub_tab");
249  $tpl->setVariable("CLASS", $_tab == $tab ? "active" : "");
250  $tpl->setVariable("LINK", $this->getLinkTargetForSubTab($_tab, $ass->getId()));
251  $tpl->setVariable("TITLE", $this->lng->txt("prg_$_tab"));
252  $tpl->parseCurrentBlock();
253  }
254  $tpl->setVariable("CONTENT", $content);
255 
256  return $tpl->get();
257  }
258 
259  protected function getLinkTargetForSubTab($a_tab, $a_ass_id) {
260  $this->ctrl->setParameter($this, "ass_id", $a_ass_id);
261  $lnk = $this->ctrl->getLinkTarget($this, $a_tab);
262  $this->ctrl->setParameter($this, "ass_id", null);
263  return $lnk;
264  }
265 
266  public function appendIndividualPlanActions(ilTable2GUI $a_table) {
267  $a_table->setFormAction($this->ctrl->getFormAction($this));
268  $a_table->addCommandButton("updateFromCurrentPlan", $this->lng->txt("prg_update_from_current_plan"));
269  $a_table->addCommandButton("updateFromInput", $this->lng->txt("save"));
270  }
271 
275 
276  public function getManualStatusPostVarTitle() {
277  return "status";
278  }
279 
280  public function getRequiredPointsPostVarTitle() {
281  return "required_points";
282  }
283 
284  public function getManualStatusNone() {
285  return self::MANUAL_STATUS_NONE;
286  }
287 
288  public function getManualStatusNotRelevant() {
289  return self::MANUAL_STATUS_NOT_RELEVANT;
290  }
291 
292  public function getManualStatusAccredited() {
293  return self::MANUAL_STATUS_ACCREDITED;
294  }
295 
296  static public function getLinkTargetView($ctrl, $a_ass_id) {
297  $cl = "ilObjStudyProgrammeIndividualPlanGUI";
298  $ctrl->setParameterByClass($cl, "ass_id", $a_ass_id);
299  $link = $ctrl->getLinkTargetByClass($cl, "view");
300  $ctrl->setParameterByClass($cl, "ass_id", null);
301  return $link;
302  }
303 }
304 
305 ?>
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
Base class for ILIAS Exception handling.
$_POST['username']
Definition: cron.php:12
$_GET["client_id"]
$cmd
Definition: sahs_server.php:35
logging
Definition: class.ilLog.php:18
_lookupFullname($a_user_id)
Lookup Full Name.
global $ilCtrl
Definition: ilias.php:18
Class ilTable2GUI.
special template class to simplify handling of ITX/PEAR
redirection script todo: (a better solution should control the processing via a xml file) ...
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
global $ilUser
Definition: imgupload.php:15
static getInstanceById($a_prgrs_id)
Get an instance by progress id.