00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00035 require_once "class.ilObjectGUI.php";
00036
00037 class ilObjExerciseGUI extends ilObjectGUI
00038 {
00043 function ilObjExerciseGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00044 {
00045 $this->type = "exc";
00046 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00047 }
00048
00049 function getFiles()
00050 {
00051 return $this->files ? $this->files : array();
00052 }
00053 function setFiles($a_files)
00054 {
00055 $this->files = $a_files;
00056 }
00057
00058 function createObject()
00059 {
00060 parent::createObject();
00061
00062
00063 $this->tpl->setVariable("TXT_INSTRUCTION",$this->lng->txt("exc_instruction"));
00064 $this->tpl->setVariable("TXT_EDIT_UNTIL",$this->lng->txt("exc_edit_until"));
00065 $this->tpl->setVariable("SELECT_DAY",$this->__getDateSelect("day",(int) date("d",time())));
00066 $this->tpl->setVariable("SELECT_MONTH",$this->__getDateSelect("month",(int) date("m",time())));
00067 $this->tpl->setVariable("SELECT_YEAR",$this->__getDateSelect("year",1));
00068
00069 return true;
00070 }
00071
00072 function viewObject()
00073 {
00074 global $rbacsystem;
00075
00076 if (!$rbacsystem->checkAccess("read", $this->ref_id))
00077 {
00078 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00079 }
00080 $this->getTemplateFile("view","exc");
00081
00082 $this->tpl->setVariable("FORM_DOWNLOAD_ACTION",$this->getFormAction("downloadFile",
00083 "adm_object.php?cmd=downloadFile&ref_id=".$this->ref_id));
00084 $this->tpl->setVariable("TITLE",$this->object->getTitle());
00085 $this->tpl->setVariable("DESCRIPTION",$this->object->getDescription());
00086 $this->tpl->setVariable("INSTRUCTION_TXT",$this->lng->txt("exc_instruction"));
00087 $this->tpl->setVariable("INSTRUCTION",nl2br($this->object->getInstruction()));
00088 $this->tpl->setVariable("EDIT_UNTIL_TXT",$this->lng->txt("exc_edit_until"));
00089 $this->tpl->setVariable("EDIT_UNTIL",date("d.m.Y",$this->object->getTimestamp()));
00090
00091 foreach($this->object->getFiles() as $file)
00092 {
00093 $this->tpl->setCurrentBlock("FILES_ROW");
00094 $this->tpl->setVariable("FILE_DATA",$file["name"]);
00095 $this->tpl->setVariable("FILE_CHECK",ilUtil::formRadioButton(0,"file",urlencode($file["name"])));
00096 $this->tpl->parseCurrentBlock();
00097 }
00098
00099 $this->tpl->setCurrentBlock("FILES");
00100 $this->tpl->setVariable("FILES_TXT",$this->lng->txt("exc_files"));
00101 $this->tpl->setVariable("TXT_DOWNLOAD",$this->lng->txt("download"));
00102 $this->tpl->setVariable("IMG",ilUtil::getImagePath("arrow_downright.gif"));
00103 $this->tpl->parseCurrentBlock();
00104
00105 return true;
00106 }
00107
00113 function deliverObject()
00114 {
00115 global $ilUser;
00116 require_once "./classes/class.ilUtil.php";
00117
00118 if (mktime() > $this->object->getTimestamp())
00119 {
00120 sendInfo($this->lng->txt("exercise_time_over"));
00121 }
00122 else
00123 {
00124 if ($_POST["cmd"]["delete"])
00125 {
00126 if (count($_POST["delivered"]))
00127 {
00128 $this->object->deleteDeliveredFiles($_POST["delivered"], $ilUser->id);
00129 }
00130 else
00131 {
00132 sendInfo($this->lng->txt("please_select_a_delivered_file_to_delete"));
00133 }
00134 }
00135
00136 if ($_POST["cmd"]["download"])
00137 {
00138 if (count($_POST["delivered"]))
00139 {
00140 $this->object->members_obj->downloadSelectedFiles($_POST["delivered"]);
00141 }
00142 else
00143 {
00144 sendInfo($this->lng->txt("please_select_a_delivered_file_to_download"));
00145 }
00146 }
00147
00148 $this->getTemplateFile("deliver_file", "exc");
00149 $delivered_files = $this->object->getDeliveredFiles($ilUser->id);
00150 $color_class = array("tblrow1", "tblrow2");
00151 $counter = 0;
00152 foreach ($delivered_files as $index => $file)
00153 {
00154 $this->tpl->setCurrentBlock("delivered_row");
00155 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00156 $this->tpl->setVariable("FILE_ID", $file["returned_id"]);
00157 $this->tpl->setVariable("DELIVERED_FILE", $file["filetitle"]);
00158 preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $file["TIMESTAMP14"], $matches);
00159 $stamp = strtotime(sprintf("%04d-%02d-%02d %02d:%02d:%02d", $matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[6]));
00160 $date = date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], $stamp);
00161 $this->tpl->setVariable("DELIVERED_DATE", $date);
00162 $this->tpl->parseCurrentBlock();
00163 $counter++;
00164 }
00165 if (count($delivered_files))
00166 {
00167 $this->tpl->setCurrentBlock("footer_content");
00168 $this->tpl->setVariable("ARROW_SIGN", ilUtil::getImagePath("arrow_downright.gif"));
00169 $this->tpl->setVariable("BUTTON_DELETE", $this->lng->txt("delete"));
00170 $this->tpl->setVariable("BUTTON_DOWNLOAD", $this->lng->txt("download"));
00171 $this->tpl->parseCurrentBlock();
00172 }
00173 else
00174 {
00175 $this->tpl->setCurrentBlock("footer_empty");
00176 $this->tpl->setVariable("TEXT_NO_DELIVERED_FILES", $this->lng->txt("message_no_delivered_files"));
00177 $this->tpl->parseCurrentBlock();
00178 }
00179 $this->tpl->setCurrentBlock("delivered_files");
00180 $this->tpl->setVariable("DELIVER_FORMACTION", $this->getFormAction("deliver", "exercise.php?cmd=deliver&ref_id=".$this->ref_id));
00181 $this->tpl->setVariable("TEXT_DATE", $this->lng->txt("date"));
00182 $this->tpl->setVariable("TEXT_DELIVERED_FILENAME", $this->lng->txt("filename"));
00183 $this->tpl->setVariable("TEXT_HEADING_DELIVERED_FILES", $this->lng->txt("already_delivered_files"));
00184 $this->tpl->parseCurrentBlock();
00185 $this->tpl->setCurrentBlock("adm_content");
00186 $this->tpl->setVariable("FORMACTION", $this->getFormAction("deliverFile", "exercise.php?cmd=deliverFile&ref_id=".$this->ref_id));
00187 $this->tpl->setVariable("BUTTON_DELIVER", $this->lng->txt("upload"));
00188 $this->tpl->setVariable("TEXT_FILENAME", $this->lng->txt("enter_filename_deliver"));
00189 $this->tpl->parseCurrentBlock();
00190 }
00191 }
00192
00193 function deliverFileObject()
00194 {
00195 global $ilUser;
00196
00197 if(!$this->object->deliverFile($_FILES["deliver"], $ilUser->id))
00198 {
00199 sendInfo($this->lng->txt("exc_upload_error"),true);
00200 }
00201 $this->deliverObject();
00202 }
00203
00204 function downloadFileObject()
00205 {
00206 global $rbacsystem;
00207
00208 if (!$rbacsystem->checkAccess("read", $this->ref_id))
00209 {
00210 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00211 }
00212 if(!isset($_POST["file"]))
00213 {
00214 sendInfo($this->lng->txt("exc_select_one_file"),true);
00215 header("location: ".$this->getReturnLocation("view",
00216 "adm_object.php?cmd=view&ref_id=".$this->ref_id));
00217 exit;
00218 }
00219 $files = $this->object->getFiles();
00220 $file_exist = false;
00221
00222 foreach($this->object->getFiles() as $file)
00223 {
00224 if($file["name"] == urldecode($_POST["file"]))
00225 {
00226 $file_exist = true;
00227 break;
00228 }
00229 }
00230 if(!$file_exist)
00231 {
00232 echo "FILE DOES NOT EXIST";
00233 exit;
00234 }
00235 ilUtil::deliverFile($this->object->file_obj->getAbsolutePath(urldecode($_POST["file"])),
00236 urldecode($_POST["file"]));
00237
00238 return true;
00239 }
00240
00245 function saveObject()
00246 {
00247 global $rbacadmin;
00248
00249
00250 include_once("./classes/class.ilObjExercise.php");
00251 $tmp_obj =& new ilObjExercise();
00252
00253 $tmp_obj->setDate($_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00254 if(!$tmp_obj->checkDate())
00255 {
00256 $this->ilias->raiseError($this->lng->txt("exc_date_not_valid"), $this->ilias->error_obj->MESSAGE);
00257 }
00258 unset($tmp_obj);
00259
00260
00261
00262 $newObj = parent::saveObject();
00263
00264
00265
00266
00267
00268 $newObj->setDate($_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00269 $newObj->setInstruction(ilUtil::stripSlashes($_POST["Fobject"]["instruction"]));
00270 $newObj->saveData();
00271
00272
00273 sendInfo($this->lng->txt("exc_added"),true);
00274
00275 header("Location:".$this->getReturnLocation("save","adm_object.php?".$this->link_params));
00276 exit();
00277 }
00278
00279 function editObject()
00280 {
00281 global $rbacsystem;
00282
00283 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00284 {
00285 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00286 }
00287
00288 $title = $_SESSION["error_post_vars"]["Fobject"]["title"] ?
00289 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true) :
00290 ilUtil::prepareFormOutput($this->object->getTitle());
00291 $desc = $_SESSION["error_post_vars"]["Fobject"]["desc"] ?
00292 $_SESSION["error_post_vars"]["Fobject"]["desc"] :
00293 $this->object->getDescription();
00294
00295 $instruction = $_SESSION["error_post_vars"]["Fobject"]["instruction"] ?
00296 $_SESSION["error_post_vars"]["Fobject"]["instruction"] :
00297 $this->object->getInstruction();
00298
00299 $day = $_SESSION["error_post_vars"]["Fobject"]["d_day"] ?
00300 $_SESSION["error_post_vars"]["Fobject"]["d_day"] :
00301 date("d",$this->object->getTimestamp());
00302
00303 $month = $_SESSION["error_post_vars"]["Fobject"]["d_month"] ?
00304 $_SESSION["error_post_vars"]["Fobject"]["d_month"] :
00305 date("m",$this->object->getTimestamp());
00306
00307 $year = $_SESSION["error_post_vars"]["Fobject"]["year"] ?
00308 $_SESSION["error_post_vars"]["Fobject"]["year"] :
00309 date("Y",$this->object->getTimestamp());
00310
00311
00312 $this->getTemplateFile("edit","exc");
00313
00314
00315 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
00316 $this->tpl->setVariable("TXT_DESC", $this->lng->txt("desc"));
00317 $this->tpl->setVariable("TXT_INSTRUCTION", $this->lng->txt("exc_instruction"));
00318 $this->tpl->setVariable("TXT_HEADER",$this->lng->txt("exc_edit_exercise"));
00319 $this->tpl->setVariable("FORMACTION",
00320 $this->getFormAction("gateway","adm_object.php?ref_id=".$this->ref_id."&cmd=gateway"));
00321 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
00322 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00323 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
00324 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("save"));
00325 $this->tpl->setVariable("TXT_EDIT_UNTIL",$this->lng->txt("exc_edit_until"));
00326
00327
00328
00329 $this->tpl->setVariable("TITLE",$title);
00330 $this->tpl->setVariable("DESC",$desc);
00331 $this->tpl->setVariable("INSTRUCTION",$instruction);
00332
00333
00334
00335 $this->tpl->setVariable("SELECT_DAY",$this->__getDateSelect("day",$day));
00336 $this->tpl->setVariable("SELECT_MONTH",$this->__getDateSelect("month",$month));
00337 $this->tpl->setVariable("SELECT_YEAR",$this->__getDateSelect("year",$year));
00338
00339 $this->tpl->setVariable("CMD_SUBMIT","update");
00340
00341
00342 if(count($files = $this->object->getFiles()))
00343 {
00344 foreach($files as $file)
00345 {
00346 $this->tpl->setCurrentBlock("FILE_ROW");
00347 $this->tpl->setVariable("ROW_FILE",$file["name"]);
00348 $this->tpl->setVariable("ROW_CHECKBOX",$this->lng->txt("exc_ask_delete")." ".
00349 ilUtil::formCheckbox(0,"delete_file[]",$file["name"]));
00350 $this->tpl->parseCurrentBlock();
00351 }
00352 $this->tpl->setCurrentBlock("FILE_DATA");
00353 $this->tpl->setVariable("TXT_FILES",$this->lng->txt("exc_files").":");
00354 $this->tpl->parseCurrentBlock();
00355 }
00356
00357 $this->tpl->setCurrentBlock("FILES");
00358 $this->tpl->setVariable("TXT_HEADER_FILE",$this->lng->txt("file_add"));
00359 $this->tpl->setVariable("TXT_FILE",$this->lng->txt("file"));
00360 $this->tpl->setVariable("TXT_UPLOAD",$this->lng->txt("upload"));
00361 $this->tpl->setVariable("FORMACTION_FILE",
00362 $this->getFormAction("gateway","adm_object.php?ref_id=".$this->ref_id."&cmd=gateway"));
00363 $this->tpl->setVariable("CMD_FILE_SUBMIT","uploadFile");
00364 $this->tpl->parseCurrentBlock();
00365
00366 }
00367
00368 function updateObject()
00369 {
00370 global $rbacsystem;
00371
00372 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00373 {
00374 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00375 }
00376
00377 $this->object->setInstruction(ilUtil::stripSlashes($_POST["Fobject"]["instruction"]));
00378 $this->object->setDate($_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00379 if($_POST["delete_file"])
00380 {
00381 $this->object->deleteFiles($_POST["delete_file"]);
00382 }
00383 parent::updateObject();
00384 }
00385
00386 function uploadFileObject()
00387 {
00388 global $rbacsystem;
00389 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00390 {
00391 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00392 }
00393 if(!$this->object->addUploadedFile($_FILES["file"]))
00394 {
00395 sendInfo($this->lng->txt("exc_upload_error"),true);
00396 }
00397 header("location: ".$this->getReturnLocation("uploadFile","adm_object.php?ref_id=$_GET[ref_id]"));
00398 exit;
00399 }
00400 function updateMembersObject()
00401 {
00402 global $rbacsystem;
00403
00404 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00405 {
00406 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00407 }
00408
00409 if ($_POST["downloadReturned"])
00410 {
00411 $this->object->members_obj->deliverReturnedFiles(key($_POST["downloadReturned"]));
00412 exit;
00413 }
00414 else
00415 {
00416 switch($_POST["action"])
00417 {
00418 case "save_status":
00419 $this->__saveStatus();
00420 sendInfo($this->lng->txt("exc_status_saved"),true);
00421 break;
00422 case "send_member":
00423 if(!count($_POST["member"]))
00424 {
00425 sendInfo($this->lng->txt("select_one"),true);
00426 }
00427 else
00428 {
00429 $this->object->send($_POST["member"]);
00430 sendInfo($this->lng->txt("exc_sent"),true);
00431 }
00432 break;
00433 case "delete_member":
00434 $this->__deassignMembers();
00435 break;
00436 }
00437 }
00438 header("location: ".$this->getReturnLocation("members","adm_object.php?ref_id=$_GET[ref_id]&cmd=members"));
00439 exit;
00440 }
00441
00442 function membersObject()
00443 {
00444 global $rbacsystem;
00445
00446 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00447 {
00448 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00449 }
00450
00451 $this->getTemplateFile("members","exc");
00452
00453 if(!count($this->object->members_obj->getMembers()))
00454 {
00455 sendInfo($this->lng->txt("exc_no_members_assigned"));
00456 }
00457 else
00458 {
00459 $counter = 0;
00460 foreach($this->object->members_obj->getMembers() as $member_id)
00461 {
00462 include_once "./classes/class.ilObjectFactory.php";
00463
00464 if(!($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false)))
00465 {
00466 continue;
00467 }
00468 $f_result[$counter][] = ilUtil::formCheckbox(0,"member[$member_id]",1);
00469 $f_result[$counter][] = $tmp_obj->getLogin();
00470 $f_result[$counter][] = $tmp_obj->getFirstname();
00471 $f_result[$counter][] = $tmp_obj->getLastname();
00472 $f_result[$counter][] = array("notice[$member_id]",
00473 ilUtil::prepareFormOutput($this->object->members_obj->getNoticeByMember($member_id)));
00474 if ($this->object->members_obj->hasReturned($member_id))
00475 {
00476 $f_result[$counter][] = "<input class=\"submit\" type=\"submit\" name=\"downloadReturned[$member_id]\" value=\"" . $this->lng->txt("download") . "\" />";
00477 }
00478 else
00479 {
00480 $f_result[$counter][] = "";
00481 }
00482 $f_result[$counter][] = ilUtil::formCheckbox($this->object->members_obj->getStatusReturnedByMember($member_id),
00483 "returned[$member_id]",1);
00484 $f_result[$counter][] = ilUtil::formCheckbox($this->object->members_obj->getStatusSolvedByMember($member_id),
00485 "solved[$member_id]",1);
00486 $f_result[$counter][] = ilUtil::formCheckbox($this->object->members_obj->getStatusSentByMember($member_id),
00487 "sent[$member_id]",1);
00488
00489 unset($tmp_obj);
00490 ++$counter;
00491 }
00492 $this->__showMembersTableContent($this->__showMembersTable($f_result));
00493
00494 $this->tpl->addBlockFile("SPECIAL_BUTTONS", "special_buttons", "tpl.exc_download_all.html");
00495 $this->tpl->setCurrentBlock("download_all");
00496 $this->tpl->setVariable("BUTTON_DOWNLOAD_ALL", $this->lng->txt("download_all_returned_files"));
00497 $this->tpl->setVariable("FORMACTION", $this->getFormAction("downloadAll", "exercise.php?cmd=downloadAll&ref_id=".$this->ref_id));
00498 $this->tpl->parseCurrentBlock();
00499 }
00500 }
00501
00502 function downloadAllObject()
00503 {
00504 $members = array();
00505 foreach($this->object->members_obj->getMembers() as $member_id)
00506 {
00507 $tmp_obj =& ilObjectFactory::getInstanceByObjId($member_id);
00508 $members[$member_id] = $tmp_obj->getFirstname() . " " . $tmp_obj->getLastname();
00509 unset($tmp_obj);
00510 }
00511 $this->object->file_obj->downloadAllDeliveredFiles($members);
00512 }
00513
00514 function newMembersObject()
00515 {
00516 global $rbacsystem;
00517
00518 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00519 {
00520 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00521 }
00522
00523
00524 if(isset($_POST["cancel"]))
00525 {
00526 header("location: ".$this->getReturnLocation("members","adm_object.php?ref_id=$_GET[ref_id]"));
00527 exit;
00528 }
00529
00530 if(isset($_POST["select"]))
00531 {
00532 if(is_array($_POST["id"]))
00533 {
00534 if(!$this->object->members_obj->assignMembers($_POST["id"]))
00535 {
00536 sendInfo($this->lng->txt("exc_members_already_assigned"),true);
00537 }
00538 else
00539 {
00540 sendInfo($this->lng->txt("exc_members_assigned"),true);
00541 }
00542 header("location: ".$this->getReturnLocation("members","adm_object.php?ref_id=$_GET[ref_id]"));
00543 exit;
00544 }
00545 }
00546 $show_search = true;
00547
00548 $this->getTemplateFile("add_member","exc");
00549 $this->tpl->setVariable("F_ACTION",
00550 $this->getFormAction("newMembers","adm_object.php?ref_id=$_GET[ref_id]&cmd=newMembers"));
00551
00552 if($_POST["search_str"])
00553 {
00554 $result = $this->__searchMembers(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"]);
00555
00556 switch(count($result))
00557 {
00558 case 0:
00559
00560 sendInfo($this->lng->txt("cont_no_object_found"));
00561 break;
00562
00563 case 1:
00564 $result = $this->__getMembersOfObject($result,$_POST["search_for"]);
00565 $this->__showMembersSelect($result);
00566 $show_search = false;
00567 break;
00568
00569 default:
00570 if($_POST["search_for"] == 'usr')
00571 {
00572 $this->__showMembersSelect($result);
00573 }
00574 else
00575 {
00576 $this->__showObjectSelect($result,$_POST["search_for"]);
00577 }
00578 $show_search = false;
00579 break;
00580 }
00581 }
00582 if($_POST["obj_select"])
00583 {
00584 if(count($_POST["obj"]))
00585 {
00586 $result = $this->__getMembersOfObject($_POST["obj"],"grp");
00587 $this->__showMembersSelect($result);
00588 $show_search = false;
00589 }
00590 }
00591
00592
00593 if($show_search)
00594 {
00595 $this->lng->loadLanguageModule("content");
00596 $this->lng->loadLanguageModule("search");
00597
00598 $search_for = array("usr" => $this->lng->txt("exc_users"),
00599 "grp" => $this->lng->txt("exc_groups"));
00600 # "role" => $this->lng->txt("!!Rollen"));
00601
00602 $counter = 0;
00603 foreach($search_for as $key => $value)
00604 {
00605 $this->tpl->setCurrentBlock("USR_SEARCH_ROW");
00606 $this->tpl->setVariable("SEARCH_ROW_CHECK",ilUtil::formRadioButton(++$counter == 1 ? 1 : 0,"search_for",$key));
00607 $this->tpl->setVariable("SEARCH_ROW_TXT",$value);
00608 $this->tpl->parseCurrentBlock();
00609 }
00610 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("add_member"));
00611 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
00612 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
00613 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
00614 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
00615 }
00616
00617
00618 }
00619
00620
00621 function __showMembersTableContent($a_data)
00622 {
00623
00624 $counter = 0;
00625 foreach($a_data as $row)
00626 {
00627 foreach($row as $key => $column)
00628 {
00629 switch($key)
00630 {
00631 case 4:
00632 $this->tpl->setCurrentBlock("form_input");
00633 $this->tpl->setVariable("ROW_INPUT_NAME",$column[0]);
00634 $this->tpl->setVariable("ROW_INPUT_VALUE",$column[1]);
00635 $this->tpl->parseCurrentBlock();
00636 break;
00637
00638 default:
00639 $this->tpl->setCurrentBlock("text");
00640 $this->tpl->setVariable("ROW_TEXT",$column);
00641 $this->tpl->parseCurrentBlock();
00642
00643 break;
00644 }
00645 $this->tpl->setCurrentBlock("table_cell");
00646 $this->tpl->parseCurrentBlock();
00647 }
00648 $this->tpl->setCurrentBlock("row");
00649 $this->tpl->setVariable("ROW_CSS",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00650 $this->tpl->parseCurrentBlock();
00651 }
00652 $this->tpl->setCurrentBlock("tbl_content");
00653 $this->tpl->parseCurrentBlock();
00654
00655 return true;
00656 }
00657
00658 function __getMembersOfObject($a_result,$a_type)
00659 {
00660
00661 switch($a_type)
00662 {
00663 case "usr":
00664 return $a_result;
00665
00666 case "grp":
00667 include_once "./classes/class.ilObjGroup.php";
00668
00669 $all_members = array();
00670 foreach($a_result as $group)
00671 {
00672 $tmp_grp_obj = ilObjectFactory::getInstanceByRefId($group["id"]);
00673
00674 $members = $tmp_grp_obj->getGroupMemberIds();
00675 $all_members = array_merge($all_members,$members);
00676 }
00677
00678 $all_members = array_unique($all_members);
00679 foreach($all_members as $member)
00680 {
00681 $result[] = array("id" => $member);
00682 }
00683 return $result;
00684 }
00685 return true;
00686 }
00687
00688 function __showObjectSelect($a_result,$a_type)
00689 {
00690 include_once "./classes/class.ilObjectFactory.php";
00691
00692 foreach($a_result as $obj)
00693 {
00694 $tmp_obj =& ilObjectFactory::getInstanceByRefId($obj["id"]);
00695
00696 $this->tpl->setCurrentBlock("OBJ_SELECT_ROW");
00697 $this->tpl->setVariable("OBJ_ROW_TITLE",$tmp_obj->getTitle());
00698 $this->tpl->setVariable("OBJ_ROW_ID",$tmp_obj->getRefId());
00699 $this->tpl->setVariable("OBJ_ROW_DESCRIPTION",$tmp_obj->getDescription());
00700 $this->tpl->parseCurrentBlock();
00701
00702 unset($tmp_obj);
00703 }
00704 $this->tpl->setCurrentBlock("OBJ_SELECT");
00705 $this->tpl->setVariable("OBJ_SELECT_TITLE",$this->lng->txt("title"));
00706 $this->tpl->setVariable("OBJ_SELECT_DESCRIPTION",$this->lng->txt("description"));
00707
00708 $this->tpl->setVariable("OBJ_BTN1_VALUE",$this->lng->txt("select"));
00709 $this->tpl->setVariable("OBJ_BTN2_VALUE",$this->lng->txt("cancel"));
00710
00711 $this->tpl->parseCurrentBlock();
00712 }
00713
00714 function __showMembersSelect($a_result)
00715 {
00716 include_once "./classes/class.ilObjectFactory.php";
00717
00718 foreach($a_result as $user)
00719 {
00720 $tmp_obj =& ilObjectFactory::getInstanceByObjId($user["id"]);
00721
00722 $this->tpl->setCurrentBlock("USR_SELECT_ROW");
00723 $this->tpl->setVariable("ROW_LOGIN",$tmp_obj->getLogin());
00724 $this->tpl->setVariable("ROW_ID",$tmp_obj->getId());
00725 $this->tpl->setVariable("ROW_FIRSTNAME",$tmp_obj->getFirstname());
00726 $this->tpl->setVariable("ROW_LASTNAME",$tmp_obj->getLastname());
00727 $this->tpl->parseCurrentBlock();
00728
00729 unset($tmp_obj);
00730 }
00731 $this->tpl->setCurrentBlock("USR_SELECT");
00732 $this->tpl->setVariable("SELECT_LOGIN",$this->lng->txt("login"));
00733 $this->tpl->setVariable("SELECT_FIRSTNAME",$this->lng->txt("firstname"));
00734 $this->tpl->setVariable("SELECT_LASTNAME",$this->lng->txt("lastname"));
00735
00736 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("assign"));
00737 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
00738
00739 $this->tpl->parseCurrentBlock();
00740 }
00741 function __searchMembers($a_search_str,$a_search_for)
00742 {
00743 include_once("./classes/class.ilSearch.php");
00744
00745 $this->lng->loadLanguageModule("content");
00746
00747 $search =& new ilSearch($_SESSION["AccountId"]);
00748 $search->setPerformUpdate(false);
00749 $search->setSearchString(ilUtil::stripSlashes($_POST["search_str"]));
00750 $search->setCombination("and");
00751 $search->setSearchFor(array(0 => $a_search_for));
00752 $search->setSearchType('new');
00753
00754 if($search->validate($message))
00755 {
00756 $search->performSearch();
00757 }
00758 else
00759 {
00760 sendInfo($message,true);
00761 header("location: ".$this->getReturnLocation("newMembers",
00762 "adm_object.php?ref_id=".$this->object->getRefId()."&cmd=newMembers"));
00763 exit;
00764 }
00765 return $search->getResultByType($a_search_for);
00766 }
00767 function __deassignMembers()
00768 {
00769 if(is_array($_POST["member"]))
00770 {
00771 foreach($_POST["member"] as $usr_id => $member)
00772 {
00773 $this->object->members_obj->deassignMember($usr_id);
00774 }
00775 return true;
00776 }
00777 else
00778 {
00779 sendInfo($this->lng->txt("select_one"),true);
00780 return false;
00781 }
00782 }
00783
00784 function __saveStatus()
00785 {
00786 foreach($this->object->members_obj->getMembers() as $member)
00787 {
00788 $this->object->members_obj->setNoticeForMember($member,ilUtil::stripSlashes($_POST["notice"][$member]));
00789 $this->object->members_obj->setStatusSolvedForMember($member,$_POST["solved"][$member] ? 1 : 0);
00790 $this->object->members_obj->setStatusSentForMember($member,$_POST["sent"][$member] ? 1 : 0);
00791 $this->object->members_obj->setStatusReturnedForMember($member,$_POST["returned"][$member] ? 1 : 0);
00792 }
00793 return true;
00794 }
00795
00796 function __showMembersTable($a_data)
00797 {
00798 $actions = array("save_status" => $this->lng->txt("exc_save_changes"),
00799 "send_member" => $this->lng->txt("exc_send_exercise"),
00800 "delete_member" => $this->lng->txt("exc_deassign_members"));
00801
00802 $this->tpl->addBlockFile("MEMBER_TABLE","member_table","tpl.table.html");
00803 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.exc_members_row.html");
00804
00805
00806
00807 $this->tpl->setCurrentBlock("tbl_form_header");
00808 $this->tpl->setVariable("FORMACTION",
00809 $this->getFormAction("updateMembers","adm_object.php?ref_id=$_GET[ref_id]&cmd=updateMembers"));
00810 $this->tpl->parseCurrentBlock();
00811
00812
00813 $this->tpl->setCurrentBlock("tbl_action_row");
00814 $this->tpl->setVariable("COLUMN_COUNTS",6);
00815 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00816
00817 $this->tpl->setCurrentBlock("tbl_action_select");
00818 $this->tpl->setVariable("SELECT_ACTION",ilUtil::formSelect(1,"action",$actions,false,true));
00819 $this->tpl->setVariable("BTN_NAME","execute");
00820 $this->tpl->setVariable("BTN_VALUE",$this->lng->txt("execute"));
00821 $this->tpl->parseCurrentBlock();
00822
00823 $this->tpl->setCurrentBlock("tbl_action_row");
00824 $this->tpl->setVariable("COLUMN_COUNTS",9);
00825 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00826 $this->tpl->parseCurrentBlock();
00827
00828 include_once "./classes/class.ilTableGUI.php";
00829
00830 $tbl = new ilTableGUI();
00831
00832 $tbl->setTitle($this->lng->txt("exc_header_members"),"icon_usr_b.gif",$this->lng->txt("exc_header_members"));
00833 $tbl->setHeaderNames(array('',$this->lng->txt("login"),$this->lng->txt("firstname")
00834 ,$this->lng->txt("lastname"),$this->lng->txt("exc_notices"),$this->lng->txt("exc_files_returned"), $this->lng->txt("exc_status_returned"),
00835 $this->lng->txt("exc_status_solved"),$this->lng->txt("sent")));
00836 $tbl->setHeaderVars(array("","login","firstname","lastname","","","","",""),
00837 array("ref_id" => $this->object->getRefId(),
00838 "cmd" => "members"));
00839 $tbl->setColumnWidth(array("5%","10%","10%","10%","30%","15%","7%","7%","7%"));
00840 $tbl->disable('content');
00841
00842 $tbl->setOrderColumn($_GET["sort_by"]);
00843 $tbl->setOrderDirection($_GET["sort_order"]);
00844 $tbl->setLimit(10);
00845 $tbl->setMaxCount(count($a_data));
00846 $tbl->setOffset($_GET["offset"] ? $_GET["offset"] : 0);
00847 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00848 $tbl->setData($a_data);
00849 $tbl->sortData();
00850 $tbl->render();
00851
00852 return $tbl->getData();
00853 }
00854
00855 function __getDateSelect($a_type,$a_selected)
00856 {
00857 switch($a_type)
00858 {
00859 case "day":
00860 for($i=1;$i<32;$i++)
00861 {
00862 $days[$i] = $i < 10 ? "0".$i : $i;
00863 }
00864 return ilUtil::formSelect($a_selected,"d_day",$days,false,true);
00865
00866 case "month":
00867 for($i=1;$i<13;$i++)
00868 {
00869 $month[$i] = $i < 10 ? "0".$i : $i;
00870 }
00871 return ilUtil::formSelect($a_selected,"d_month",$month,false,true);
00872
00873 case "year":
00874 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
00875 {
00876 $year[$i] = $i;
00877 }
00878 return ilUtil::formSelect($a_selected,"d_year",$year,false,true);
00879 }
00880 }
00881
00882 function __filterAssignedUsers($a_result)
00883 {
00884 foreach($a_result as $user)
00885 {
00886 if(!$this->object->members_obj->isAssigned($user["id"]))
00887 {
00888 $filtered[] = $user;
00889 }
00890 }
00891 return $filtered ? $filtered : array();
00892 }
00893
00894 }
00895 ?>