ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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
281 return "required_points";
282 }
283
284 public function getManualStatusNone() {
286 }
287
288 public function getManualStatusNotRelevant() {
290 }
291
292 public function getManualStatusAccredited() {
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?>
$_GET["client_id"]
Base class for ILIAS Exception handling.
logging
Definition: class.ilLog.php:19
_lookupFullname($a_user_id)
Lookup Full Name.
static getInstanceById($a_prgrs_id)
Get an instance by progress id.
Class ilTable2GUI.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
special template class to simplify handling of ITX/PEAR
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
$_POST['username']
Definition: cron.php:12
global $ilCtrl
Definition: ilias.php:18
redirection script todo: (a better solution should control the processing via a xml file)
$cmd
Definition: sahs_server.php:35
global $ilUser
Definition: imgupload.php:15