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