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
00038 require_once "./classes/class.ilContainerGUI.php";
00039 require_once "./course/classes/class.ilCourseRegisterGUI.php";
00040
00041
00042 class ilObjCourseGUI extends ilContainerGUI
00043 {
00048 function ilObjCourseGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00049 {
00050 global $ilCtrl;
00051
00052
00053 $this->ctrl =& $ilCtrl;
00054 $this->ctrl->saveParameter($this,array("ref_id","cmdClass"));
00055
00056 $this->type = "crs";
00057 $this->ilContainerGUI($a_data,$a_id,$a_call_by_reference,false);
00058
00059 $this->lng->loadLanguageModule('crs');
00060
00061 $this->SEARCH_USER = 1;
00062 $this->SEARCH_GROUP = 2;
00063 $this->SEARCH_COURSE = 3;
00064 }
00065
00066 function gatewayObject()
00067 {
00068 switch($_POST["action"])
00069 {
00070 case "deleteMembersObject":
00071 $this->deleteMembers();
00072 break;
00073
00074 case "deleteSubscribers":
00075 $this->deleteSubscribers();
00076 break;
00077
00078 case "addSubscribers":
00079 $this->addSubscribers();
00080 break;
00081
00082 case "addFromWaitingList":
00083 $this->addFromWaitingList();
00084 break;
00085
00086 case "removeFromWaitingList":
00087 $this->removeFromWaitingList();
00088 break;
00089
00090 default:
00091 $this->viewObject();
00092 break;
00093 }
00094 return true;
00095 }
00096
00097
00102 function cancelMemberObject()
00103 {
00104 $this->__unsetSessionVariables();
00105
00106 $return_location = "members";
00107
00108 sendInfo($this->lng->txt("action_aborted"),true);
00109 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00110 }
00111
00112 function createObject()
00113 {
00114 global $rbacsystem;
00115
00116
00117 if(!$rbacsystem->checkAccess("create",$_GET["ref_id"],'crs'))
00118 {
00119 $this->ilias->raiseError($this->lng->txt("msg_no_perm_create"),$this->ilias->error_obj->MESSAGE);
00120 }
00121 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_create.html","course");
00122 $this->tpl->setVariable("FORMACTION",'repository.php?ref_id='.$_GET["ref_id"].'&cmd=post&new_type=crs');
00123 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt("crs_new"));
00124 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00125 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("crs_add"));
00126 $this->tpl->setVariable("CMD_SUBMIT", "save");
00127 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00128 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt('title'));
00129 $this->tpl->setVariable("TXT_DESC",$this->lng->txt('desc'));
00130
00131
00132
00133 $this->tpl->setVariable("TXT_IMPORT_CRS", $this->lng->txt("import_crs"));
00134 $this->tpl->setVariable("TXT_CRS_FILE", $this->lng->txt("file"));
00135 $this->tpl->setVariable("TXT_IMPORT", $this->lng->txt("import"));
00136
00137
00138 $umf=get_cfg_var("upload_max_filesize");
00139
00140 $pms=get_cfg_var("post_max_size");
00141
00142
00143 $max_filesize=min($umf, $pms);
00144 if (!$max_filesize)
00145 $max_filesize=max($umf, $pms);
00146
00147
00148 $this->tpl->setVariable("TXT_FILE_INFO", $this->lng->txt("file_notice").$max_filesize);
00149
00150 return true;
00151 }
00152
00153 function importFileObject()
00154 {
00155 global $_FILES, $rbacsystem, $ilDB;
00156
00157
00158 if($_FILES['xmldoc']['tmp_name'] == 'none' or !$_FILES['xmldoc']['tmp_name'])
00159 {
00160 $this->ilias->raiseError("No file selected!",$this->ilias->error_obj->MESSAGE);
00161 }
00162
00163
00164 $info = pathinfo($_FILES["xmldoc"]["name"]);
00165 if (strtolower($info["extension"]) != "zip")
00166 {
00167 $this->ilias->raiseError("File must be a zip file!",$this->ilias->error_obj->MESSAGE);
00168 }
00169
00170
00171 include_once("course/classes/class.ilObjCourse.php");
00172
00173 $newObj = new ilObjCourse();
00174 $newObj->setType('crs');
00175 $newObj->setTitle($_FILES["xmldoc"]["name"]);
00176 $newObj->setDescription("");
00177 $newObj->create(true);
00178 $newObj->createReference();
00179 $newObj->putInTree($_GET["ref_id"]);
00180 $newObj->setPermissions($_GET["ref_id"]);
00181 $newObj->initDefaultRoles();
00182
00183
00184 include_once 'course/classes/class.ilFileDataCourse.php';
00185
00186 $course_files = new ilFileDataCourse($newObj);
00187
00188 $course_files->createImportFile($_FILES["xmldoc"]["tmp_name"],$_FILES['xmldoc']['name']);
00189 $course_files->unpackImportFile();
00190 $course_files->validateImportFile();
00191
00192 include_once 'course/classes/class.ilCourseXMLParser.php';
00193
00194 $xml_parser = new ilCourseXMLParser($newObj,$course_files->getImportFile());
00195
00196 $xml_parser->startParsing();
00197
00198
00199 $newObj->MDUpdateListener('General');
00200
00201
00202 #$course_files->deleteImportFile();
00203
00204 sendInfo($this->lng->txt('crs_added'),true);
00205
00206 $this->ctrl->setParameter($this, "ref_id", $newObj->getRefId());
00207 ilUtil::redirect($this->getReturnLocation("save",
00208 $this->ctrl->getLinkTarget($this, "edit")));
00209
00210
00211
00212 }
00213
00214 function viewObject()
00215 {
00216 global $rbacsystem,$ilUser;
00217
00218
00219 if(!$rbacsystem->checkAccess("read", $this->ref_id))
00220 {
00221 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00222 }
00223 if (strtolower($_GET["baseClass"]) == "iladministrationgui")
00224 {
00225 parent::viewObject();
00226 return true;
00227 }
00228 else
00229 {
00230 if($rbacsystem->checkAccess("write", $this->ref_id) or
00231 ($this->object->isActivated() and !$this->object->isArchived()))
00232 {
00233 $this->initCourseContentInterface();
00234 $this->cci_obj->cci_setContainer($this);
00235 $this->cci_obj->cci_view();
00236 }
00237 elseif(ilObjCourse::_registrationEnabled($this->object->getId()))
00238 {
00239 $this->infoScreenObject();
00240 }
00241 else
00242 {
00243 $this->archiveObject();
00244 }
00245
00246 include_once 'Services/Tracking/classes/class.ilLearningProgress.php';
00247
00248 ilLearningProgress::_tracProgress($ilUser->getId(),$this->object->getId(),'crs');
00249 }
00250 }
00251
00257 function infoScreenObject()
00258 {
00259 $this->ctrl->setCmd("showSummary");
00260 $this->ctrl->setCmdClass("ilinfoscreengui");
00261 $this->infoScreen();
00262 }
00263
00267 function infoScreen()
00268 {
00269 global $rbacsystem;
00270
00271 $this->tabs_gui->setTabActive('info_short');
00272
00273 if(!$rbacsystem->checkAccess("visible", $this->ref_id))
00274 {
00275 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00276 }
00277
00278 include_once("classes/class.ilInfoScreenGUI.php");
00279 $info = new ilInfoScreenGUI($this);
00280 $info->enablePrivateNotes();
00281
00282
00283
00284 $info->addSection($this->lng->txt("crs_syllabus"));
00285 $info->addProperty("", nl2br($this->object->getSyllabus() ?
00286 $this->object->getSyllabus() :
00287 $this->lng->txt("crs_not_available")));
00288
00289
00290 $info->addSection($this->lng->txt("crs_contact"));
00291 $info->addProperty($this->lng->txt("crs_contact_name"),
00292 $this->object->getContactName() ?
00293 $this->object->getContactName() :
00294 $this->lng->txt("crs_not_available"));
00295 $info->addProperty($this->lng->txt("crs_contact_responsibility"),
00296 $this->object->getContactResponsibility() ?
00297 $this->object->getContactResponsibility() :
00298 $this->lng->txt("crs_not_available"));
00299 $info->addProperty($this->lng->txt("crs_contact_phone"),
00300 $this->object->getContactPhone() ?
00301 $this->object->getContactPhone() :
00302 $this->lng->txt("crs_not_available"));
00303 if($this->object->getContactEmail())
00304 {
00305 $etpl = new ilTemplate("tpl.crs_contact_email.html", true, true , "course");
00306 $etpl->setVariable("EMAIL_LINK","mail_new.php?type=new&rcp_to=".$this->object->getContactEmail());
00307 $etpl->setVariable("CONTACT_EMAIL",$this->object->getContactEmail());
00308 $info->addProperty($this->lng->txt("crs_contact_email"),
00309 $etpl->get());
00310 }
00311 $info->addProperty($this->lng->txt("crs_contact_consultation"),
00312 nl2br($this->object->getContactConsultation() ?
00313 $this->object->getContactConsultation() :
00314 $this->lng->txt("crs_not_available")));
00315
00316
00317
00318
00319 $info->addSection($this->lng->txt("access"));
00320
00321
00322 if($this->object->getOfflineStatus())
00323 {
00324 $info->addProperty($this->lng->txt('crs_visibility'),
00325 $this->lng->txt('crs_visibility_unvisible'));
00326 }
00327 elseif($this->object->getActivationUnlimitedStatus())
00328 {
00329 $info->addProperty($this->lng->txt("crs_visibility"),
00330 $this->lng->txt('crs_unlimited'));
00331 }
00332 else
00333 {
00334 $info->addProperty($this->lng->txt("crs_visibility"),
00335 ilFormat::formatUnixTime($this->object->getActivationStart(),true)." - ".
00336 ilFormat::formatUnixTime($this->object->getActivationEnd(),true));
00337 }
00338 switch($this->object->getSubscriptionType())
00339 {
00340 case $this->object->SUBSCRIPTION_DEACTIVATED:
00341 $txt = $this->lng->txt("crs_info_reg_deactivated");
00342 break;
00343 case $this->object->SUBSCRIPTION_CONFIRMATION:
00344 $txt = $this->lng->txt("crs_info_reg_confirmation");
00345 break;
00346 case $this->object->SUBSCRIPTION_DIRECT:
00347 $txt = $this->lng->txt("crs_info_reg_direct");
00348 break;
00349 case $this->object->SUBSCRIPTION_PASSWORD:
00350 $txt = $this->lng->txt("crs_info_reg_password");
00351 break;
00352 }
00353
00354
00355 $info->addProperty($this->lng->txt("crs_info_reg"),$txt);
00356
00357
00358 if($this->object->getSubscriptionType() != $this->object->SUBSCRIPTION_DEACTIVATED)
00359 {
00360 if($this->object->getSubscriptionUnlimitedStatus())
00361 {
00362 $info->addProperty($this->lng->txt("crs_reg_until"),
00363 $this->lng->txt('crs_unlimited'));
00364 }
00365 elseif($this->object->getSubscriptionStart() < time())
00366 {
00367 $info->addProperty($this->lng->txt("crs_reg_until"),
00368 $this->lng->txt('crs_to').' '.
00369 ilFormat::formatUnixTime($this->object->getSubscriptionEnd(),true));
00370 }
00371 elseif($this->object->getSubscriptionStart() > time())
00372 {
00373 $info->addProperty($this->lng->txt("crs_reg_until"),
00374 $this->lng->txt('crs_from').' '.
00375 ilFormat::formatUnixTime($this->object->getSubscriptionStart(),true));
00376 }
00377 }
00378
00379
00380 if($this->object->getArchiveType() != $this->object->ARCHIVE_DISABLED)
00381 {
00382 $info->addProperty($this->lng->txt("crs_archive"),
00383 ilFormat::formatUnixTime($this->object->getArchiveStart(),true)." - ".
00384 ilFormat::formatUnixTime($this->object->getArchiveEnd(),true));
00385 }
00386
00387 $info->enableLearningProgress(true);
00388
00389
00390 $this->ctrl->forwardCommand($info);
00391 }
00392
00393 function listStructureObject()
00394 {
00395 include_once './course/classes/class.ilCourseStart.php';
00396
00397 global $rbacsystem;
00398
00399 if(!$rbacsystem->checkAccess("write", $this->ref_id))
00400 {
00401 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00402 }
00403
00404 $this->setSubTabs("properties");
00405 $this->tabs_gui->setSubTabActive('crs_crs_structure');
00406
00407
00408 $crs_start =& new ilCourseStart($this->object->getRefId(),$this->object->getId());
00409
00410 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_list_starter.html","course");
00411 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00412
00413 if(!count($starter = $crs_start->getStartObjects()))
00414 {
00415 $this->tpl->setCurrentBlock("btn_cell");
00416 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTarget($this,'selectStarter'));
00417 $this->tpl->setVariable("BTN_TXT",$this->lng->txt('crs_add_starter'));
00418 $this->tpl->parseCurrentBlock();
00419
00420 sendInfo($this->lng->txt('crs_no_starter_created'));
00421
00422 return true;
00423 }
00424
00425 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00426 $this->tpl->setVariable("TBL_TITLE_IMG",ilUtil::getImagePath('icon_crs.gif'));
00427 $this->tpl->setVariable("TBL_TITLE_IMG_ALT",$this->lng->txt('crs'));
00428 $this->tpl->setVariable("TBL_TITLE",$this->lng->txt('crs_start_objects'));
00429 $this->tpl->setVariable("HEADER_DESC",$this->lng->txt('description'));
00430 $this->tpl->setVariable("HEADER_OPT",$this->lng->txt('options'));
00431 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('crs_add_starter'));
00432
00433 $counter = 0;
00434 foreach($starter as $start_id => $data)
00435 {
00436 $tmp_obj =& ilObjectFactory::getInstanceByRefId($data['item_ref_id']);
00437
00438 if(strlen($tmp_obj->getDescription()))
00439 {
00440 $this->tpl->setCurrentBlock("description");
00441 $this->tpl->setVariable("DESCRIPTION_STARTER",$tmp_obj->getDescription());
00442 $this->tpl->parseCurrentBlock();
00443 }
00444
00445 $this->tpl->setCurrentBlock("starter_row");
00446 $this->tpl->setVariable("ROW_CLASS",ilUtil::switchColor(++$counter,'tblrow1','tblrow2'));
00447 $this->tpl->setVariable("STARTER_TITLE",$tmp_obj->getTitle());
00448
00449 $this->ctrl->setParameter($this,'del_starter',$start_id);
00450 $this->tpl->setVariable("DELETE_LINK",$this->ctrl->getLinkTarget($this,'deleteStarter'));
00451 $this->tpl->setVariable("DELETE_IMG",ilUtil::getImagePath('delete.gif'));
00452 $this->tpl->setVariable("DELETE_ALT",$this->lng->txt('delete'));
00453 $this->tpl->parseCurrentBlock();
00454 }
00455 }
00456
00457 function deleteStarterObject()
00458 {
00459 include_once './course/classes/class.ilCourseStart.php';
00460
00461 global $rbacsystem;
00462
00463 if(!$rbacsystem->checkAccess("write", $this->ref_id))
00464 {
00465 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00466 }
00467
00468 $crs_start =& new ilCourseStart($this->object->getRefId(),$this->object->getId());
00469 $crs_start->delete((int) $_GET['del_starter']);
00470
00471 sendInfo($this->lng->txt('crs_starter_deleted'));
00472 $this->listStructureObject();
00473
00474 return true;
00475 }
00476
00477
00478 function selectStarterObject()
00479 {
00480 include_once './course/classes/class.ilCourseStart.php';
00481
00482 $this->setSubTabs("properties");
00483 $this->tabs_gui->setTabActive('settings');
00484 $this->tabs_gui->setSubTabActive('crs_crs_structure');
00485
00486 global $rbacsystem;
00487
00488 if(!$rbacsystem->checkAccess("write", $this->ref_id))
00489 {
00490 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00491 }
00492
00493 $crs_start =& new ilCourseStart($this->object->getRefId(),$this->object->getId());
00494
00495 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_add_starter.html","course");
00496
00497 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00498 $this->tpl->setVariable("TBL_TITLE_IMG",ilUtil::getImagePath('icon_crs.gif'));
00499 $this->tpl->setVariable("TBL_TITLE_IMG_ALT",$this->lng->txt('crs'));
00500 $this->tpl->setVariable("TBL_TITLE",$this->lng->txt('crs_select_starter'));
00501 $this->tpl->setVariable("HEADER_DESC",$this->lng->txt('description'));
00502 $this->tpl->setVariable("BTN_ADD",$this->lng->txt('crs_add_starter'));
00503
00504
00505 $this->object->initCourseItemObject();
00506 $counter = 0;
00507 foreach($crs_start->getPossibleStarters($this->object->items_obj) as $item_ref_id)
00508 {
00509 $tmp_obj =& ilObjectFactory::getInstanceByRefId($item_ref_id);
00510
00511 if(strlen($tmp_obj->getDescription()))
00512 {
00513 $this->tpl->setCurrentBlock("description");
00514 $this->tpl->setVariable("DESCRIPTION_STARTER",$tmp_obj->getDescription());
00515 $this->tpl->parseCurrentBlock();
00516 }
00517
00518 $this->tpl->setCurrentBlock("starter_row");
00519 $this->tpl->setVariable("ROW_CLASS",ilUtil::switchColor(++$counter,'tblrow1','tblrow2'));
00520 $this->tpl->setVariable("CHECK_STARTER",ilUtil::formCheckbox(0,'starter[]',$item_ref_id));
00521 $this->tpl->setVariable("STARTER_TITLE",$tmp_obj->getTitle());
00522 $this->tpl->parseCurrentBlock();
00523 }
00524 }
00525
00526 function addStarterObject()
00527 {
00528 include_once './course/classes/class.ilCourseStart.php';
00529
00530 global $rbacsystem;
00531
00532 if(!$rbacsystem->checkAccess("write", $this->ref_id))
00533 {
00534 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00535 }
00536 if(!count($_POST['starter']))
00537 {
00538 sendInfo($this->lng->txt('crs_select_one_object'));
00539 $this->selectStarterObject();
00540
00541 return false;
00542 }
00543
00544 $crs_start =& new ilCourseStart($this->object->getRefId(),$this->object->getId());
00545 $added = 0;
00546 foreach($_POST['starter'] as $item_ref_id)
00547 {
00548 if(!$crs_start->exists($item_ref_id))
00549 {
00550 ++$added;
00551 $crs_start->add($item_ref_id);
00552 }
00553 }
00554 if($added)
00555 {
00556 sendInfo($this->lng->txt('crs_added_starters'));
00557 $this->listStructureObject();
00558
00559 return true;
00560 }
00561 else
00562 {
00563 sendInfo($this->lng->txt('crs_starters_already_assigned'));
00564 $this->selectStarterObject();
00565
00566 return false;
00567 }
00568 }
00569 function editObject()
00570 {
00571 global $rbacsystem;
00572
00573 if(!$rbacsystem->checkAccess("write", $this->ref_id))
00574 {
00575 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00576 }
00577
00578 $this->ctrl->setReturn($this,'editObject');
00579
00580 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_edit.html","course");
00581 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00582
00583
00584 if($this->ctrl->getTargetScript() != 'adm_object.php')
00585 {
00586 $this->setSubTabs("properties");
00587 }
00588
00589 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00590
00591 $this->tpl->setVariable("TBL_TITLE_IMG",ilUtil::getImagePath('icon_crs.gif'));
00592 $this->tpl->setVariable("TBL_TITLE_IMG_ALT",$this->lng->txt('edit_prpoperties'));
00593
00594
00595 $syllabus = $_SESSION["error_post_vars"]["crs"]["syllabus"] ?
00596 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["syllabus"],true) :
00597 ilUtil::prepareFormOutput($this->object->getSyllabus());
00598
00599 $contact_name= $_SESSION["error_post_vars"]["crs"]["contact_name"] ?
00600 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["contact_name"],true) :
00601 ilUtil::prepareFormOutput($this->object->getContactName());
00602
00603 $contact_responsibility = $_SESSION["error_post_vars"]["crs"]["contact_responsibility"] ?
00604 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["contact_responsibility"],true) :
00605 ilUtil::prepareFormOutput($this->object->getContactResponsibility());
00606
00607 $contact_email = $_SESSION["error_post_vars"]["crs"]["contact_email"] ?
00608 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["contact_email"],true) :
00609 ilUtil::prepareFormOutput($this->object->getContactEmail());
00610
00611 $contact_phone = $_SESSION["error_post_vars"]["crs"]["contact_phone"] ?
00612 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["contact_phone"],true) :
00613 ilUtil::prepareFormOutput($this->object->getContactPhone());
00614
00615 $contact_email = $_SESSION["error_post_vars"]["crs"]["contact_email"] ?
00616 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["contact_email"],true) :
00617 ilUtil::prepareFormOutput($this->object->getContactEmail());
00618
00619 $contact_consultation = $_SESSION["error_post_vars"]["crs"]["contact_consultation"] ?
00620 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["contact_consultation"],true) :
00621 ilUtil::prepareFormOutput($this->object->getContactConsultation());
00622
00623
00624 $offline = $_SESSION["error_post_vars"]["crs"]["activation_type"] == 1 ? 1 : (int) $this->object->getOfflineStatus();
00625
00626 $activation_unlimited = $_SESSION["error_post_vars"]["crs"]["activation_type"] == 2 ?
00627 1 :
00628 (int) $this->object->getActivationUnlimitedStatus();
00629
00630 $activation_unlimited = $offline ? 0 : $activation_unlimited;
00631
00632 $activation_limit = ($_SESSION['error_post_vars']['crs']['activation_type'] == 3) ?
00633 1 :
00634 ((!$offline and !$activation_unlimited) ? 1 : 0);
00635
00636 $activation_start = $_SESSION["error_post_vars"]["crs"]["activation_start"] ?
00637 $this->__toUnix($_SESSION["error_post_vars"]["crs"]["activation_start"]) :
00638 $this->object->getActivationStart();
00639
00640 $activation_end = $_SESSION["error_post_vars"]["crs"]["activation_end"] ?
00641 $this->__toUnix($_SESSION["error_post_vars"]["crs"]["activation_end"]) :
00642 $this->object->getActivationEnd();
00643
00644
00645 $subscription_unlimited = $_SESSION["error_post_vars"]["crs"]["subscription_unlimited"] ?
00646 1 :
00647 (int) $this->object->getSubscriptionUnlimitedStatus();
00648
00649 $subscription_start = $_SESSION["error_post_vars"]["crs"]["subscription_start"] ?
00650 $this->__toUnix($_SESSION["error_post_vars"]["crs"]["subscription_start"]) :
00651 $this->object->getSubscriptionStart();
00652
00653 $subscription_end = $_SESSION["error_post_vars"]["crs"]["subscription_end"] ?
00654 $this->__toUnix($_SESSION["error_post_vars"]["crs"]["subscription_end"]) :
00655 $this->object->getSubscriptionEnd();
00656
00657 $subscription_type = $_SESSION["error_post_vars"]["crs"]["subscription_type"] ?
00658 $_SESSION["error_post_vars"]["crs"]["subscription_type"] :
00659 $this->object->getSubscriptionType();
00660
00661 $subscription_password = $_SESSION["error_post_vars"]["crs"]["subscription_password"] ?
00662 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["subscription_password"],true) :
00663 ilUtil::prepareFormOutput($this->object->getSubscriptionPassword());
00664
00665 $subscription_max_members = $_SESSION["error_post_vars"]["crs"]["subscription_max_members"] ?
00666 ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["crs"]["subscription_max_members"],true) :
00667 ilUtil::prepareFormOutput($this->object->getSubscriptionMaxMembers());
00668
00669 $subscription_notify = $_SESSION["error_post_vars"]["crs"]["subscription_notify"] ? 1
00670 : (int) $this->object->getSubscriptionNotify();
00671
00672 $subscription_wait = $_SESSION["error_post_vars"]["crs"]["subscription_wait"] ? 1
00673 : (int) $this->object->enabledWaitingList();
00674
00675
00676 $sortorder_type = $_SESSION["error_post_vars"]["crs"]["sortorder_type"] ?
00677 $_SESSION["error_post_vars"]["crs"]["sortorder_type"] :
00678 $this->object->getOrderType();
00679
00680 $archive_start = $_SESSION["error_post_vars"]["crs"]["archive_start"] ?
00681 $this->__toUnix($_SESSION["error_post_vars"]["crs"]["archive_start"]) :
00682 $this->object->getArchiveStart();
00683
00684 $archive_end = $_SESSION["error_post_vars"]["crs"]["archive_end"] ?
00685 $this->__toUnix($_SESSION["error_post_vars"]["crs"]["archive_end"]) :
00686 $this->object->getArchiveEnd();
00687
00688 $archive_type = $_SESSION["error_post_vars"]["crs"]["archive_type"] ?
00689 $_SESSION["error_post_vars"]["crs"]["archive_type"] :
00690 $this->object->getArchiveType();
00691
00692 $abo_status = $_SESSION["error_post_vars"]["crs"]["abo_status"] ?
00693 $_SESSION["error_post_vars"]["crs"]["abo_status"] :
00694 $this->object->getAboStatus();
00695
00696 $objective_view_status = $_SESSION["error_post_vars"]["crs"]["objective_view"] ?
00697 $_SESSION["error_post_vars"]["crs"]["objective_view"] :
00698 $this->object->enabledObjectiveView();
00699
00700
00701 $registration_deactivated = $_SESSION['error_post_vars']['crs']['registration'] == 1 ?
00702 1 :
00703 ( $this->object->getSubscriptionType() == $this->object->SUBSCRIPTION_DEACTIVATED ? 1 : 0);
00704
00705 $registration_unlimited = $_SESSION['error_post_vars']['crs']['registration'] == 1 ?
00706 1 :
00707 ( $this->object->getSubscriptionUnlimitedStatus() ? 1 : 0);
00708
00709 if($registration_deactivated)
00710 {
00711 $registration_unlimited = 0;
00712 }
00713 if(!$registration_deactivated and !$registration_unlimited)
00714 {
00715 $registration_limited = 1;
00716 }
00717
00718
00719 $this->tpl->setVariable("SYLLABUS",$syllabus);
00720 $this->tpl->setVariable("CONTACT_NAME",$contact_name);
00721 $this->tpl->setVariable("CONTACT_RESPONSIBILITY",$contact_responsibility);
00722 $this->tpl->setVariable("CONTACT_EMAIL",$contact_email);
00723 $this->tpl->setVariable("CONTACT_PHONE",$contact_phone);
00724 $this->tpl->setVariable("CONTACT_CONSULTATION",$contact_consultation);
00725 $this->tpl->setVariable("SUBSCRIPTION_PASSWORD",$subscription_password);
00726 $this->tpl->setVariable("SUBSCRIPTION_MAX_MEMBERS",$subscription_max_members);
00727
00728
00729 $this->tpl->setVariable("TXT_HEADER",$this->lng->txt("crs_settings"));
00730 $this->tpl->setVariable("TXT_SYLLABUS",$this->lng->txt("crs_syllabus"));
00731 $this->tpl->setVariable("TXT_CONTACT",$this->lng->txt("crs_contact"));
00732 $this->tpl->setVariable("TXT_CONTACT_NAME",$this->lng->txt("crs_contact_name"));
00733 $this->tpl->setVariable("TXT_CONTACT_RESPONSIBILITY",$this->lng->txt("crs_contact_responsibility"));
00734 $this->tpl->setVariable("TXT_CONTACT_EMAIL",$this->lng->txt("crs_contact_email"));
00735 $this->tpl->setVariable("TXT_CONTACT_PHONE",$this->lng->txt("crs_contact_phone"));
00736 $this->tpl->setVariable("TXT_CONTACT_CONSULTATION",$this->lng->txt("crs_contact_consultation"));
00737
00738 $this->tpl->setVariable("TXT_VISIBILITY",$this->lng->txt('crs_visibility'));
00739 $this->tpl->setVariable("TXT_VISIBILITY_UNVISIBLE",$this->lng->txt('crs_visibility_unvisible'));
00740 $this->tpl->setVariable("TXT_VISIBILITY_LIMITLESS",$this->lng->txt('crs_visibility_limitless'));
00741 $this->tpl->setVariable("TXT_VISIBILITY_UNTIL",$this->lng->txt('crs_visibility_until'));
00742
00743 $this->tpl->setVariable("ACTIVATION_UNV_INFO",$this->lng->txt('crs_availability_unvisible_info'));
00744 $this->tpl->setVariable("ACTIVATION_UNL_INFO",$this->lng->txt('crs_availability_limitless_info'));
00745 $this->tpl->setVariable("ACTIVATION_LIM_INFO",$this->lng->txt('crs_availability_until_info'));
00746
00747
00748
00749 $this->tpl->setVariable("TXT_REGISTRATION_DEACTIVATED",$this->lng->txt('crs_reg_deactivated'));
00750 $this->tpl->setVariable("TXT_REGISTRATION_UNLIMITED",$this->lng->txt('crs_registration_unlimited'));
00751 $this->tpl->setVariable("TXT_REGISTRATION_LIMITED",$this->lng->txt('crs_registration_limited'));
00752 $this->tpl->setVariable("TXT_REGISTRATION_TYPE",$this->lng->txt('crs_registration_type'));
00753
00754 $this->tpl->setVariable("REG_DEAC_INFO",$this->lng->txt('crs_registration_deactivated'));
00755 $this->tpl->setVariable("REG_UNLIM_INFO",$this->lng->txt('crs_reg_unlim_info'));
00756 $this->tpl->setVariable("REG_LIM_INFO",$this->lng->txt('crs_reg_lim_info'));
00757 $this->tpl->setVariable("REG_MAX_INFO",$this->lng->txt('crs_reg_max_info'));
00758 $this->tpl->setVariable("REG_NOTY_INFO",$this->lng->txt('crs_reg_notify_info'));
00759 $this->tpl->setVariable("REG_WAIT_INFO",$this->lng->txt('crs_wait_info'));
00760
00761
00762 $this->tpl->setVariable("TXT_SUBSCRIPTION",$this->lng->txt("crs_reg"));
00763 $this->tpl->setVariable("TXT_SUBSCRIPTION_UNLIMITED",$this->lng->txt("crs_unlimited"));
00764 $this->tpl->setVariable("TXT_SUBSCRIPTION_START",$this->lng->txt("crs_start"));
00765 $this->tpl->setVariable("TXT_SUBSCRIPTION_END",$this->lng->txt("crs_end"));
00766
00767 $this->tpl->setVariable("TXT_SUBSCRIPTION_OPTIONS",$this->lng->txt("crs_subscription_type"));
00768 $this->tpl->setVariable("TXT_SUBSCRIPTION_MAX_MEMBERS",$this->lng->txt("crs_subscription_max_members"));
00769 $this->tpl->setVariable("TXT_SUBSCRIPTION_NOTIFY",$this->lng->txt("crs_subscription_notify"));
00770 $this->tpl->setVariable("TXT_DEACTIVATED",$this->lng->txt("crs_subscription_options_deactivated"));
00771 $this->tpl->setVariable("TXT_CONFIRMATION",$this->lng->txt("crs_subscription_options_confirmation"));
00772 $this->tpl->setVariable("TXT_DIRECT",$this->lng->txt("crs_subscription_options_direct"));
00773 $this->tpl->setVariable("TXT_PASSWORD",$this->lng->txt("crs_subscription_options_password"));
00774 $this->tpl->setVariable("TXT_WAIT",$this->lng->txt('crs_waiting_list'));
00775 $this->tpl->setVariable("TXT_NOTIFY",$this->lng->txt('crs_notification'));
00776
00777
00778 $this->tpl->setVariable("TXT_SORTORDER",$this->lng->txt("crs_sortorder_abo"));
00779 $this->tpl->setVariable("TXT_MANUAL",$this->lng->txt("crs_sort_manual"));
00780 $this->tpl->setVariable("TXT_TITLE",$this->lng->txt("crs_sort_title"));
00781 $this->tpl->setVariable("TXT_SORT_ACTIVATION",$this->lng->txt("crs_sort_activation"));
00782 $this->tpl->setVariable("TXT_ABO",$this->lng->txt('crs_allow_abo'));
00783 $this->tpl->setVariable("TXT_OBJ_VIEW",$this->lng->txt('crs_objective_view'));
00784
00785 $this->tpl->setVariable("TXT_ARCHIVE",$this->lng->txt("crs_archive"));
00786 $this->tpl->setVariable("TXT_ARCHIVE_START",$this->lng->txt("crs_start"));
00787 $this->tpl->setVariable("TXT_ARCHIVE_TYPE",$this->lng->txt("crs_archive_select_type"));
00788 $this->tpl->setVariable("TXT_ARCHIVE_END",$this->lng->txt("crs_end"));
00789 $this->tpl->setVariable("TXT_DISABLED",$this->lng->txt("crs_archive_type_disabled"));
00790 $this->tpl->setVariable("TXT_READ",$this->lng->txt("crs_archive_read"));
00791 $this->tpl->setVariable("TXT_DOWNLOAD",$this->lng->txt("crs_archive_download"));
00792 $this->tpl->setVariable("TXT_ARCHIVE_INFO",$this->lng->txt('crs_archive_info'));
00793
00794 $this->tpl->setVariable("TXT_REQUIRED_FLD",$this->lng->txt("required_field"));
00795 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
00796 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("submit"));
00797
00798 $this->tpl->setVariable("ACTIVATION_OFFLINE",ilUtil::formRadioButton($offline,"crs[activation_type]",1));
00799
00800
00801 $this->tpl->setVariable("SELECT_ACTIVATION_START_MINUTE",$this->__getDateSelect("minute","crs[activation_start][minute]",
00802 date("i",$activation_start)));
00803 $this->tpl->setVariable("SELECT_ACTIVATION_START_HOUR",$this->__getDateSelect("hour","crs[activation_start][hour]",
00804 date("G",$activation_start)));
00805 $this->tpl->setVariable("SELECT_ACTIVATION_START_DAY",$this->__getDateSelect("day","crs[activation_start][day]",
00806 date("d",$activation_start)));
00807 $this->tpl->setVariable("SELECT_ACTIVATION_START_MONTH",$this->__getDateSelect("month","crs[activation_start][month]",
00808 date("m",$activation_start)));
00809 $this->tpl->setVariable("SELECT_ACTIVATION_START_YEAR",$this->__getDateSelect("year","crs[activation_start][year]",
00810 date("Y",$activation_start)));
00811 $this->tpl->setVariable("SELECT_ACTIVATION_END_MINUTE",$this->__getDateSelect("minute","crs[activation_end][minute]",
00812 date("i",$activation_end)));
00813 $this->tpl->setVariable("SELECT_ACTIVATION_END_HOUR",$this->__getDateSelect("hour","crs[activation_end][hour]",
00814 date("G",$activation_end)));
00815 $this->tpl->setVariable("SELECT_ACTIVATION_END_DAY",$this->__getDateSelect("day","crs[activation_end][day]",
00816 date("d",$activation_end)));
00817 $this->tpl->setVariable("SELECT_ACTIVATION_END_MONTH",$this->__getDateSelect("month","crs[activation_end][month]",
00818 date("m",$activation_end)));
00819 $this->tpl->setVariable("SELECT_ACTIVATION_END_YEAR",$this->__getDateSelect("year","crs[activation_end][year]",
00820 date("Y",$activation_end)));
00821
00822 $this->tpl->setVariable("ACTIVATION_UNLIMITED",ilUtil::formRadioButton($activation_unlimited,"crs[activation_type]",2));
00823 $this->tpl->setVariable("ACTIVATION_UNTIL",ilUtil::formRadioButton($activation_limit,'crs[activation_type]',3));
00824
00825 $this->tpl->setVariable("SUBSCRIPTION_UNLIMITED",ilUtil::formCheckbox($subscription_unlimited,"crs[subscription_unlimited]",1));
00826
00827 $this->tpl->setVariable("SELECT_SUBSCRIPTION_START_MINUTE",$this->__getDateSelect("minute","crs[subscription_start][minute]",
00828 date("i",$subscription_start)));
00829 $this->tpl->setVariable("SELECT_SUBSCRIPTION_START_HOUR",$this->__getDateSelect("hour","crs[subscription_start][hour]",
00830 date("G",$subscription_start)));
00831 $this->tpl->setVariable("SELECT_SUBSCRIPTION_START_DAY",$this->__getDateSelect("day","crs[subscription_start][day]",
00832 date("d",$subscription_start)));
00833 $this->tpl->setVariable("SELECT_SUBSCRIPTION_START_MONTH",$this->__getDateSelect("month","crs[subscription_start][month]",
00834 date("m",$subscription_start)));
00835 $this->tpl->setVariable("SELECT_SUBSCRIPTION_START_YEAR",$this->__getDateSelect("year","crs[subscription_start][year]",
00836 date("Y",$subscription_start)));
00837 $this->tpl->setVariable("SELECT_SUBSCRIPTION_END_MINUTE",$this->__getDateSelect("minute","crs[subscription_end][minute]",
00838 date("i",$subscription_end)));
00839 $this->tpl->setVariable("SELECT_SUBSCRIPTION_END_HOUR",$this->__getDateSelect("hour","crs[subscription_end][hour]",
00840 date("G",$subscription_end)));
00841 $this->tpl->setVariable("SELECT_SUBSCRIPTION_END_DAY",$this->__getDateSelect("day","crs[subscription_end][day]",
00842 date("d",$subscription_end)));
00843 $this->tpl->setVariable("SELECT_SUBSCRIPTION_END_MONTH",$this->__getDateSelect("month","crs[subscription_end][month]",
00844 date("m",$subscription_end)));
00845 $this->tpl->setVariable("SELECT_SUBSCRIPTION_END_YEAR",$this->__getDateSelect("year","crs[subscription_end][year]",
00846 date("Y",$subscription_end)));
00847
00848 $this->tpl->setVariable("REGISTRATION_DEACTIVATED",
00849 ilUtil::formRadioButton($registration_deactivated,
00850 'crs[registration]',1));
00851
00852 $this->tpl->setVariable("REGISTRATION_UNLIMITED",
00853 ilUtil::formRadioButton($registration_unlimited,
00854 'crs[registration]',2));
00855
00856 $this->tpl->setVariable("REGISTRATION_LIMITED",
00857 ilUtil::formRadioButton($registration_limited,
00858 'crs[registration]',3));
00859
00860
00861 $this->tpl->setVariable("RADIO_SUB_DEACTIVATED",
00862 ilUtil::formRadioButton($subscription_type == $this->object->SUBSCRIPTION_DEACTIVATED ? 1 : 0,
00863 "crs[subscription_type]",$this->SUBSCRIPTION_DEACTIVATED));
00864 $this->tpl->setVariable("RADIO_SUB_CONFIRMATION",
00865 ilUtil::formRadioButton($subscription_type == $this->object->SUBSCRIPTION_CONFIRMATION ? 1 : 0,
00866 "crs[subscription_type]",
00867 $this->object->SUBSCRIPTION_CONFIRMATION));
00868 $this->tpl->setVariable("RADIO_SUB_DIRECT",ilUtil::formRadioButton($subscription_type == $this->object->SUBSCRIPTION_DIRECT ? 1 : 0,
00869 "crs[subscription_type]",$this->object->SUBSCRIPTION_DIRECT));
00870 $this->tpl->setVariable("RADIO_SUB_PASSWORD",
00871 ilUtil::formRadioButton($subscription_type == $this->object->SUBSCRIPTION_PASSWORD ? 1 : 0,
00872 "crs[subscription_type]",
00873 $this->object->SUBSCRIPTION_PASSWORD));
00874
00875 $this->tpl->setVariable("CHECK_SUBSCRIPTION_NOTIFY",ilUtil::formCheckbox($subscription_notify,
00876 "crs[subscription_notify]",1));
00877
00878 $this->tpl->setVariable("CHECK_WAIT",ilUtil::formCheckbox($subscription_wait,
00879 "crs[subscription_wait]",1));
00880
00881 $this->tpl->setVariable("RADIO_SORTORDER_MANUAL",ilUtil::formRadioButton($sortorder_type == $this->object->SORT_MANUAL ? 1 : 0
00882 ,"crs[sortorder_type]",$this->object->SORT_MANUAL));
00883 $this->tpl->setVariable("RADIO_SORTORDER_TITLE",ilUtil::formRadioButton($sortorder_type == $this->object->SORT_TITLE ? 1 : 0
00884 ,"crs[sortorder_type]",$this->object->SORT_TITLE));
00885 $this->tpl->setVariable("RADIO_SORTORDER_ACTIVATION",
00886 ilUtil::formRadioButton($sortorder_type == $this->object->SORT_ACTIVATION ? 1 : 0,
00887 "crs[sortorder_type]",$this->object->SORT_ACTIVATION));
00888
00889 $this->tpl->setVariable("CHECK_ABO",
00890 ilUtil::formCheckbox($abo_status == $this->object->ABO_ENABLED ? 1 : 0,
00891 "crs[abo_status]",$this->object->ABO_ENABLED));
00892
00893 $this->tpl->setVariable("CHECK_OBJ_VIEW",
00894 ilUtil::formCheckbox($objective_view_status ? 1 : 0,
00895 "crs[objective_view]",1));
00896
00897 $this->tpl->setVariable("SELECT_ARCHIVE_START_MINUTE",$this->__getDateSelect("minute","crs[archive_start][minute]",
00898 date("i",$archive_start)));
00899 $this->tpl->setVariable("SELECT_ARCHIVE_START_HOUR",$this->__getDateSelect("hour","crs[archive_start][hour]",
00900 date("G",$archive_start)));
00901 $this->tpl->setVariable("SELECT_ARCHIVE_START_DAY",$this->__getDateSelect("day","crs[archive_start][day]",
00902 date("d",$archive_start)));
00903 $this->tpl->setVariable("SELECT_ARCHIVE_START_MONTH",$this->__getDateSelect("month","crs[archive_start][month]",
00904 date("m",$archive_start)));
00905 $this->tpl->setVariable("SELECT_ARCHIVE_START_YEAR",$this->__getDateSelect("year","crs[archive_start][year]",
00906 date("Y",$archive_start)));
00907
00908 $this->tpl->setVariable("SELECT_ARCHIVE_END_MINUTE",$this->__getDateSelect("minute","crs[archive_end][minute]",
00909 date("i",$archive_end)));
00910 $this->tpl->setVariable("SELECT_ARCHIVE_END_HOUR",$this->__getDateSelect("hour","crs[archive_end][hour]",
00911 date("G",$archive_end)));
00912 $this->tpl->setVariable("SELECT_ARCHIVE_END_DAY",$this->__getDateSelect("day","crs[archive_end][day]",
00913 date("d",$archive_end)));
00914 $this->tpl->setVariable("SELECT_ARCHIVE_END_MONTH",$this->__getDateSelect("month","crs[archive_end][month]",
00915 date("m",$archive_end)));
00916 $this->tpl->setVariable("SELECT_ARCHIVE_END_YEAR",$this->__getDateSelect("year","crs[archive_end][year]",
00917 date("Y",$archive_end)));
00918 $this->tpl->setVariable("RADIO_ARCHIVE_DISABLED",ilUtil::formRadioButton($archive_type == $this->object->ARCHIVE_DISABLED ? 1 : 0,
00919 "crs[archive_type]",$this->object->ARCHIVE_DISABLED));
00920 $this->tpl->setVariable("RADIO_ARCHIVE_READ",ilUtil::formRadioButton($archive_type == $this->object->ARCHIVE_READ ? 1 : 0,
00921 "crs[archive_type]",$this->object->ARCHIVE_READ));
00922 $this->tpl->setVariable("RADIO_ARCHIVE_DOWNLOAD",ilUtil::formRadioButton($archive_type == $this->object->ARCHIVE_DOWNLOAD ? 1 : 0,
00923 "crs[archive_type]",$this->object->ARCHIVE_DOWNLOAD));
00924
00925 $this->tpl->setVariable("CMD_SUBMIT","update");
00926
00927 $this->initConditionHandlerGUI($this->object->getRefId());
00928
00929 #$this->tpl->setVariable("PRECONDITION_TABLE",$this->chi_obj->chi_list());
00930 #$this->ctrl->setReturn($this,'editObject');
00931 #$this->tpl->setVariable("PRECONDITION_TABLE",$this->ctrl->forwardCommand($this->chi_obj));
00932 }
00933
00934 function updateObject()
00935 {
00936 global $ilErr,$rbacsystem;
00937
00938 if(!$rbacsystem->checkAccess("write", $this->ref_id))
00939 {
00940 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00941 }
00942
00943 $this->object->setSyllabus(ilUtil::stripSlashes($_POST["crs"]["syllabus"]));
00944 $this->object->setContactName(ilUtil::stripSlashes($_POST["crs"]["contact_name"]));
00945 $this->object->setContactConsultation(ilUtil::stripSlashes($_POST["crs"]["contact_consultation"]));
00946 $this->object->setContactPhone(ilUtil::stripSlashes($_POST["crs"]["contact_phone"]));
00947 $this->object->setContactEmail(ilUtil::stripSlashes($_POST["crs"]["contact_email"]));
00948 $this->object->setContactResponsibility(ilUtil::stripSlashes($_POST["crs"]["contact_responsibility"]));
00949
00950
00951
00952 switch($_POST['crs']['activation_type'])
00953 {
00954 case 3:
00955 $this->object->setOfflineStatus(false);
00956 $this->object->setActivationUnlimitedStatus(false);
00957 break;
00958
00959 case 2:
00960 $this->object->setOfflineStatus(false);
00961 $this->object->setActivationUnlimitedStatus(true);
00962 break;
00963
00964 case 1:
00965 default:
00966 $this->object->setOfflineStatus(true);
00967 $this->object->setActivationUnlimitedStatus(false);
00968 break;
00969 }
00970
00971
00972 #$this->object->setActivationUnlimitedStatus((bool) $_POST["crs"]["activation_unlimited"]);
00973 $this->object->setActivationStart($this->__toUnix($_POST["crs"]["activation_start"]));
00974 $this->object->setActivationEnd($this->__toUnix($_POST["crs"]["activation_end"]));
00975 #$this->object->setOfflineStatus(!$_POST["crs"]["activation_offline"]);
00976
00977 #$this->object->setSubscriptionUnlimitedStatus((bool) $_POST["crs"]["subscription_unlimited"]);
00978 $this->object->setSubscriptionStart($this->__toUnix($_POST["crs"]["subscription_start"]));
00979 $this->object->setSubscriptionEnd($this->__toUnix($_POST["crs"]["subscription_end"]));
00980 $this->object->setSubscriptionType($_POST["crs"]["subscription_type"]);
00981 $this->object->setSubscriptionPassword(ilUtil::stripSlashes($_POST["crs"]["subscription_password"]));
00982 $this->object->setSubscriptionMaxMembers($_POST["crs"]["subscription_max"]);
00983 $this->object->setSubscriptionNotify($_POST["crs"]["subscription_notify"]);
00984 $this->object->enableWaitingList((bool) $_POST['crs']['subscription_wait']);
00985 $this->object->setOrderType($_POST["crs"]["sortorder_type"]);
00986 $this->object->setArchiveStart($this->__toUnix($_POST["crs"]["archive_start"]));
00987 $this->object->setArchiveEnd($this->__toUnix($_POST["crs"]["archive_end"]));
00988 $this->object->setArchiveType($_POST["crs"]["archive_type"]);
00989 $this->object->setAboStatus($_POST['crs']['abo_status']);
00990 $this->object->setObjectiveViewStatus((bool) $_POST['crs']['objective_view']);
00991
00992 switch($_POST['crs']['registration'])
00993 {
00994 case '3':
00995 if($this->object->getSubscriptionType() == $this->object->SUBSCRIPTION_DEACTIVATED or
00996 !$this->object->getSubscriptionType())
00997 {
00998 sendInfo($this->lng->txt('crs_select_registration_type'));
00999 $this->editObject();
01000
01001 return false;
01002 }
01003 $this->object->setSubscriptionUnlimitedStatus(false);
01004 break;
01005
01006 case '2':
01007 if($this->object->getSubscriptionType() == $this->object->SUBSCRIPTION_DEACTIVATED or
01008 !$this->object->getSubscriptionType())
01009 {
01010 sendInfo($this->lng->txt('crs_select_registration_type'));
01011 $this->editObject();
01012
01013 return false;
01014 }
01015 $this->object->setSubscriptionUnlimitedStatus(true);
01016 break;
01017
01018 case '1':
01019 $this->object->setSubscriptionUnlimitedStatus(false);
01020 $this->object->setSubscriptionType($this->object->SUBSCRIPTION_DEACTIVATED);
01021 break;
01022 }
01023
01024
01025 if($this->object->validate())
01026 {
01027 $this->object->update();
01028 sendInfo($this->lng->txt("crs_settings_saved"),true);
01029 }
01030 else
01031 {
01032 sendInfo($this->object->getMessage());
01033 $this->editObject();
01034
01035 return false;
01036 }
01037
01038
01039 $this->ctrl->redirect($this,'edit');
01040
01041 return true;
01042 }
01043
01047 function editCourseIconsObject()
01048 {
01049 global $rbacsystem;
01050
01051 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01052 {
01053 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
01054 }
01055
01056 $this->setSubTabs("properties");
01057
01058 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_edit_icons.html","course");
01059 $this->showCustomIconsEditing();
01060 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
01061 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
01062 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
01063 $this->tpl->setVariable("CMD_CANCEL", "cancel");
01064 $this->tpl->setVariable("CMD_SUBMIT", "updateCourseIcons");
01065 $this->tpl->parseCurrentBlock();
01066 }
01067
01071 function updateCourseIconsObject()
01072 {
01073 global $rbacsystem;
01074
01075 if (!$rbacsystem->checkAccess("write",$_GET["ref_id"]) )
01076 {
01077 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
01078 }
01079
01080
01081 if ($this->ilias->getSetting("custom_icons"))
01082 {
01083 $this->object->saveIcons($_FILES["cont_big_icon"],
01084 $_FILES["cont_small_icon"]);
01085 }
01086
01087 sendInfo($this->lng->txt("msg_obj_modified"),true);
01088 $this->ctrl->redirect($this,"editCourseIcons");
01089
01090 }
01091
01092
01096 function setSubTabs($a_tab)
01097 {
01098 global $rbacsystem,$ilUser,$ilAccess;
01099 #include_once("classes/class.ilTabsGUI.php");
01100 #$tab_gui = new ilTabsGUI();
01101 #$tab_gui->setSubTabs(true);
01102
01103 switch ($a_tab)
01104 {
01105 case "properties":
01106 $this->tabs_gui->addSubTabTarget("crs_settings",
01107 $this->ctrl->getLinkTarget($this,'edit'),
01108 "edit", get_class($this));
01109 $this->tabs_gui->addSubTabTarget("preconditions",
01110 $this->ctrl->getLinkTargetByClass('ilConditionHandlerInterface','listConditions'),
01111 "", "ilConditionHandlerInterface");
01112 $this->tabs_gui->addSubTabTarget("crs_crs_structure",
01113 $this->ctrl->getLinkTarget($this,'listStructure'),
01114 "listStructure", get_class($this));
01115 if ($this->ilias->getSetting("custom_icons"))
01116 {
01117 $this->tabs_gui->addSubTabTarget("icon_settings",
01118 $this->ctrl->getLinkTarget($this,'editCourseIcons'),
01119 "editCourseIcons", get_class($this));
01120 }
01121 break;
01122
01123 case "item_activation":
01124 $this->tabs_gui->addSubTabTarget("activation",
01125 $this->ctrl->getLinkTarget($this,'cciEdit'),
01126 "cciEdit", get_class($this));
01127 $this->tabs_gui->addSubTabTarget("preconditions",
01128 $this->ctrl->getLinkTargetByClass('ilConditionHandlerInterface','listConditions'),
01129 "", "ilConditionHandlerInterface");
01130 break;
01131
01132 case 'members':
01133 $this->tabs_gui->addSubTabTarget("members",
01134 $this->ctrl->getLinkTarget($this,'members'),
01135 "members", get_class($this));
01136
01137 include_once 'classes/class.ilMail.php';
01138 $mail =& new ilMail($ilUser->getId());
01139
01140 if($rbacsystem->checkAccess('mail_visible',$mail->getMailObjectReferenceId()))
01141 {
01142 $this->tabs_gui->addSubTabTarget("mail_members",
01143 $this->ctrl->getLinkTarget($this,'mailMembers'),
01144 "mailMembers", get_class($this));
01145 }
01146
01147 break;
01148
01149
01150 }
01151 }
01152
01158 function removeSmallIconObject()
01159 {
01160 $this->object->removeSmallIcon();
01161 ilUtil::redirect($this->ctrl->getLinkTarget($this, "editCourseIcons"));
01162 }
01163
01169 function removeBigIconObject()
01170 {
01171 $this->object->removeBigIcon();
01172 ilUtil::redirect($this->ctrl->getLinkTarget($this, "editCourseIcons"));
01173 }
01174
01175
01180 function saveObject()
01181 {
01182 global $rbacadmin;
01183
01184 $newObj =& parent::saveObject();
01185 $newObj->initDefaultRoles();
01186 $newObj->initCourseMemberObject();
01187 $newObj->members_obj->add($this->ilias->account,$newObj->members_obj->ROLE_ADMIN);
01188
01189
01190 sendInfo($this->lng->txt("crs_added"),true);
01191
01192 $this->ctrl->setParameter($this, "ref_id", $newObj->getRefId());
01193 ilUtil::redirect($this->getReturnLocation("save",
01194 $this->ctrl->getLinkTarget($this, "edit")));
01195
01196 }
01197
01198
01199
01200 function archiveObject()
01201 {
01202 global $rbacsystem;
01203
01204 $this->tabs_gui->setTabActive('crs_archives');
01205
01206
01207 if(!$rbacsystem->checkAccess("read", $this->object->getRefId()))
01208 {
01209 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01210 }
01211 $edit_perm = $rbacsystem->checkAccess('write',$this->object->getRefId());
01212 $download_perm = ($rbacsystem->checkAccess('write',$this->object->getRefId()) or
01213 $this->object->getArchiveType() == $this->object->ARCHIVE_DOWNLOAD)
01214 ? true : false;
01215
01216 $this->object->initCourseArchiveObject();
01217 $this->object->archives_obj->initCourseFilesObject();
01218
01219
01220 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_archive.html","course");
01221
01222
01223 if($edit_perm)
01224 {
01225 $this->__showButton('archiveAdmin',$this->lng->txt("crs_edit_archive"));
01226 }
01227
01228 if(!count($archives = $this->object->archives_obj->getPublicArchives()))
01229 {
01230 sendInfo($this->lng->txt("crs_no_archives_available"));
01231 return true;
01232 }
01233
01234 $counter = 0;
01235 foreach($archives as $id => $archive_data)
01236 {
01237 if($download_perm)
01238 {
01239 $f_result[$counter][] = ilUtil::formCheckbox(0,"archives[]",$id);
01240 }
01241 $link = '<a href="'.$this->object->archives_obj->course_files_obj->getOnlineLink($archive_data['archive_name']).'"'.
01242 ' target="_blank">'.$archive_data["archive_name"].'</a>';
01243
01244 $f_result[$counter][] = $link;
01245 #$f_result[$counter][] = strftime("%Y-%m-%d %R",$archive_data["archive_date"]);
01246 $f_result[$counter][] = ilFormat::formatUnixTime($archive_data['archive_date'],true);
01247 $f_result[$counter][] = $archive_data["archive_size"];
01248
01249 if($archive_data["archive_lang"])
01250 {
01251 $f_result[$counter][] = $this->lng->txt('lang_'.$archive_data["archive_lang"]);
01252 }
01253 else
01254 {
01255 $f_result[$counter][] = $this->lng->txt('crs_not_available');
01256 }
01257
01258 switch($archive_data["archive_type"])
01259 {
01260 case $this->object->archives_obj->ARCHIVE_XML:
01261 $type = $this->lng->txt("crs_xml");
01262 break;
01263
01264 case $this->object->archives_obj->ARCHIVE_HTML:
01265 $type = $this->lng->txt("crs_html");
01266 break;
01267
01268 case $this->object->archives_obj->ARCHIVE_PDF:
01269 $type = $this->lng->txt("crs_pdf");
01270 break;
01271 }
01272 $f_result[$counter][] = $type;
01273
01274 ++$counter;
01275 }
01276 $this->__showArchivesTable($f_result,$download_perm);
01277
01278 return true;
01279 }
01280
01281
01282 function archiveAdminObject($a_show_confirm = false)
01283 {
01284 global $rbacsystem;
01285
01286 $this->tabs_gui->setTabActive('crs_archives');
01287
01288 $_POST["archives"] = $_POST["archives"] ? $_POST["archives"] : array();
01289
01290
01291
01292 if(!$rbacsystem->checkAccess("read", $this->object->getRefId()))
01293 {
01294 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01295 }
01296
01297 $this->object->initCourseArchiveObject();
01298 $this->object->archives_obj->initCourseFilesObject();
01299
01300 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_archive_adm.html","course");
01301
01302 $this->__showButton('addXMLArchive',$this->lng->txt("crs_add_archive_xml"));
01303 $this->__showButton('selectArchiveLanguage',$this->lng->txt("crs_add_archive_html"));
01304
01305
01306 #$this->__showButton('addPDFArchive',$this->lng->txt("crs_add_archive_pdf"));
01307
01308
01309 if($a_show_confirm)
01310 {
01311 $this->tpl->setCurrentBlock("confirm_delete");
01312 $this->tpl->setVariable("CONFIRM_FORMACTION",$this->ctrl->getFormAction($this));
01313 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt('cancel'));
01314 $this->tpl->setVariable("CONFIRM_CMD",'performDeleteArchives');
01315 $this->tpl->setVariable("TXT_CONFIRM",$this->lng->txt('delete'));
01316 $this->tpl->parseCurrentBlock();
01317 }
01318
01319 if(!count($archives = $this->object->archives_obj->getArchives()))
01320 {
01321 sendInfo($this->lng->txt("crs_no_archives_available"));
01322 return true;
01323 }
01324
01325 $counter = 0;
01326 foreach($archives as $id => $archive_data)
01327 {
01328 $f_result[$counter][] = ilUtil::formCheckbox(in_array($id,$_POST["archives"]),"archives[]",$id);
01329
01330 if($archive_data['archive_type'] == $this->object->archives_obj->ARCHIVE_HTML)
01331 {
01332 $link = '<a href="'.$this->object->archives_obj->course_files_obj->getOnlineLink($archive_data['archive_name']).'"'.
01333 ' target="_blank">'.$archive_data["archive_name"].'</a>';
01334 }
01335 else
01336 {
01337 $link = $archive_data["archive_name"];
01338 }
01339 $f_result[$counter][] = $link;
01340 #$f_result[$counter][] = strftime("%Y-%m-%d %R",$archive_data["archive_date"]);
01341 $f_result[$counter][] = ilFormat::formatUnixTime($archive_data['archive_date'],true);
01342 $f_result[$counter][] = $archive_data["archive_size"];
01343
01344 if($archive_data["archive_lang"])
01345 {
01346 $f_result[$counter][] = $this->lng->txt('lang_'.$archive_data["archive_lang"]);
01347 }
01348 else
01349 {
01350 $f_result[$counter][] = $this->lng->txt('crs_no_language');
01351 }
01352
01353 switch($archive_data["archive_type"])
01354 {
01355 case $this->object->archives_obj->ARCHIVE_XML:
01356 $type = $this->lng->txt("crs_xml");
01357 break;
01358
01359 case $this->object->archives_obj->ARCHIVE_HTML:
01360 $type = $this->lng->txt("crs_html");
01361 break;
01362
01363 case $this->object->archives_obj->ARCHIVE_PDF:
01364 $type = $this->lng->txt("crs_pdf");
01365 break;
01366 }
01367 $f_result[$counter][] = $type;
01368
01369 ++$counter;
01370 }
01371 $this->__showArchivesAdminTable($f_result);
01372
01373 return true;
01374 }
01375
01376 function downloadArchivesObject()
01377 {
01378 global $rbacsystem;
01379
01380 $_POST["archives"] = $_POST["archives"] ? $_POST["archives"] : array();
01381
01382
01383 if(!$rbacsystem->checkAccess("read", $this->object->getRefId()))
01384 {
01385 $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
01386 }
01387 if(!count($_POST['archives']))
01388 {
01389 sendInfo($this->lng->txt('crs_no_archive_selected'));
01390 $this->archiveObject();
01391
01392 return false;
01393 }
01394 if(count($_POST['archives']) > 1)
01395 {
01396 sendInfo($this->lng->txt('crs_select_one_archive'));
01397 $this->archiveObject();
01398
01399 return false;
01400 }
01401
01402 $this->object->initCourseArchiveObject();
01403
01404 $abs_path = $this->object->archives_obj->getArchiveFile((int) $_POST['archives'][0]);
01405 $basename = basename($abs_path);
01406
01407 ilUtil::deliverFile($abs_path,$basename);
01408 }
01409
01410 function deleteArchivesObject()
01411 {
01412 if(!$_POST["archives"])
01413 {
01414 sendInfo($this->lng->txt("crs_no_archives_selected"));
01415 $this->archiveAdminObject(false);
01416 }
01417 else
01418 {
01419 $_SESSION["crs_archives"] = $_POST["archives"];
01420 sendInfo($this->lng->txt("crs_sure_delete_selected_archives"));
01421 $this->archiveAdminObject(true);
01422 }
01423
01424 return true;
01425 }
01426
01427 function performDeleteArchivesObject()
01428 {
01429
01430 $this->tabs_gui->setTabActive('crs_archives');
01431
01432 if(!$_SESSION["crs_archives"])
01433 {
01434 sendInfo($this->lng->txt("crs_no_archives_selected"));
01435 $this->archiveAdminObject(false);
01436 }
01437 else
01438 {
01439 $this->object->initCourseArchiveObject();
01440 foreach($_SESSION["crs_archives"] as $archive_id)
01441 {
01442 $this->object->archives_obj->delete($archive_id);
01443 }
01444 sendInfo($this->lng->txt('crs_archives_deleted'));
01445 $this->archiveAdminObject(false);
01446 unset($_SESSION["crs_archives"]);
01447 }
01448 }
01449 function selectArchiveLanguageObject()
01450 {
01451
01452 global $rbacsystem;
01453
01454 $this->tabs_gui->setTabActive('crs_archives');
01455
01456
01457 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01458 {
01459 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01460 }
01461
01462 foreach($this->lng->getInstalledLanguages() as $lang_code)
01463 {
01464 $actions["$lang_code"] = $this->lng->txt('lang_'.$lang_code);
01465
01466 if($this->lng->getLangKey() == $lang_code)
01467 {
01468 $selected = $lang_code;
01469 }
01470 }
01471
01472 sendInfo($this->lng->txt('crs_select_archive_language'));
01473
01474 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_selectLanguage.html","course");
01475
01476 $this->tpl->setVariable("SELECT_FORMACTION",$this->ctrl->getFormAction($this));
01477 $this->tpl->setVariable("LANG_SELECTOR",ilUtil::formSelect($selected,'lang',$actions,false,true));
01478 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt('cancel'));
01479 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt('crs_add_html_archive'));
01480 $this->tpl->setVariable("CMD_SUBMIT",'addHTMLArchive');
01481
01482 return true;
01483 }
01484
01485 function addXMLArchiveObject()
01486 {
01487 global $rbacsystem;
01488
01489 $this->tabs_gui->setTabActive('crs_archives');
01490
01491
01492 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01493 {
01494 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01495 }
01496
01497 $this->object->initCourseArchiveObject();
01498 $this->object->archives_obj->addXML();
01499
01500 sendInfo($this->lng->txt("crs_added_new_archive"));
01501 $this->archiveAdminObject();
01502
01503 return true;
01504 }
01505 function addHTMLArchiveObject()
01506 {
01507 global $rbacsystem;
01508
01509 $this->tabs_gui->setTabActive('crs_archives');
01510
01511
01512 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01513 {
01514 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01515 }
01516
01517 $this->object->initCourseArchiveObject();
01518 $this->object->archives_obj->setLanguage($_POST['lang']);
01519 $this->object->archives_obj->addHTML();
01520
01521 sendInfo($this->lng->txt("crs_added_new_archive"));
01522 $this->archiveAdminObject();
01523
01524 return true;
01525 }
01526
01527
01528 function membersObject()
01529 {
01530 global $rbacsystem,$ilUser,$ilAccess;
01531
01532 $this->tabs_gui->setTabActive('members');
01533 $this->setSubTabs('members');
01534 $is_admin = (bool) $rbacsystem->checkAccess("write", $this->object->getRefId());
01535
01536 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.crs_members.html","course");
01537
01538
01539 $this->__showButton("printMembers",$this->lng->txt("crs_print_list"),"target=\"_blank\"");
01540
01541
01542 if($rbacsystem->checkAccess('leave',$this->object->getRefId()) and
01543 $this->object->members_obj->isMember($ilUser->getId()))
01544 {
01545 $this->__showButton('unsubscribe',$this->lng->txt('crs_unsubscribe'));
01546 }
01547
01548
01549 $this->object->initCourseMemberObject();
01550
01551 if(!count($this->object->members_obj->getAssignedUsers()) and
01552 !count($this->object->members_obj->getSubscribers()))
01553 {
01554 sendInfo($this->lng->txt("crs_no_members_assigned"));
01555 return false;
01556 }
01557
01558 if($is_admin)
01559 {
01560 $this->__showWaitingList();
01561 $this->__showSubscribers();
01562 }
01563
01564
01565 if(count($this->object->members_obj->getAssignedUsers()))
01566 {
01567 $counter = 0;
01568 $f_result = array();
01569
01570 $img_mail = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".
01571 $this->lng->txt("crs_mem_send_mail").
01572 "\" title=\"".$this->lng->txt("crs_mem_send_mail")."\" border=\"0\" vspace=\"0\"/>";
01573
01574 $img_change = "<img src=\"".ilUtil::getImagePath("icon_change_b.gif")."\" alt=\"".
01575 $this->lng->txt("crs_mem_change_status")."\" title=\"".$this->lng->txt("crs_mem_change_status").
01576 "\" border=\"0\" vspace=\"0\"/>";
01577
01578 $img_lp = "<img src=\"".ilUtil::getImagePath("icon_trac.gif")."\" alt=\"".
01579 $this->lng->txt("learning_progress")."\" title=\"".$this->lng->txt("learning_progress").
01580 "\" border=\"0\" vspace=\"0\"/>";
01581
01582 foreach($this->object->members_obj->getAssignedUsers() as $member_id)
01583 {
01584 $member_data = $this->object->members_obj->getUserData($member_id);
01585
01586
01587 if($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false))
01588 {
01589 $member_ids[$counter] = $member_id;
01590
01591 if($is_admin)
01592 {
01593 $f_result[$counter][] = ilUtil::formCheckbox(0,"member[]",$member_id);
01594 }
01595 $f_result[$counter][] = $tmp_obj->getLogin();
01596 $f_result[$counter][] = $tmp_obj->getFirstname();
01597 $f_result[$counter][] = $tmp_obj->getLastname();
01598
01599 switch($member_data["role"])
01600 {
01601 case $this->object->members_obj->ROLE_ADMIN:
01602 $role = $this->lng->txt("il_crs_admin");
01603 break;
01604
01605 case $this->object->members_obj->ROLE_TUTOR:
01606 $role = $this->lng->txt("il_crs_tutor");
01607 break;
01608
01609 case $this->object->members_obj->ROLE_MEMBER:
01610 $role = $this->lng->txt("il_crs_member");
01611 break;
01612 }
01613 $f_result[$counter][] = $role;
01614
01615 if($is_admin)
01616 {
01617 switch($member_data["status"])
01618 {
01619 case $this->object->members_obj->STATUS_NOTIFY:
01620 $f_result[$counter][] = $this->lng->txt("crs_notify");
01621 break;
01622
01623 case $this->object->members_obj->STATUS_NO_NOTIFY:
01624 $f_result[$counter][] = $this->lng->txt("crs_no_notify");
01625 break;
01626
01627 case $this->object->members_obj->STATUS_BLOCKED:
01628 $f_result[$counter][] = $this->lng->txt("crs_blocked");
01629 break;
01630
01631 case $this->object->members_obj->STATUS_UNBLOCKED:
01632 $f_result[$counter][] = $this->lng->txt("crs_unblocked");
01633 break;
01634 }
01635 $f_result[$counter][] = $member_data['passed'] ?
01636 $this->lng->txt('crs_member_passed') :
01637 $this->lng->txt('crs_member_not_passed');
01638 }
01639
01640 $link_mail = "<a target=\"_blank\" href=\"mail_new.php?type=new&rcp_to=".
01641 $tmp_obj->getLogin()."\">".$img_mail."</a>";
01642
01643 if($is_admin)
01644 {
01645 $this->ctrl->setParameter($this,"member_id",$tmp_obj->getId());
01646 $link_change = "<a href=\"".$this->ctrl->getLinkTarget($this,"editMember")."\">".
01647 $img_change."</a>";
01648
01649 include_once("Services/Tracking/classes/class.ilObjUserTracking.php");
01650 if($rbacsystem->checkAccess('edit_learning_progress',$this->ref_id) and
01651 ilObjUserTracking::_enabledLearningProgress() and
01652 ilObjUserTracking::_enabledUserRelatedData())
01653 {
01654 $this->ctrl->setParameter($this,"user_id",$tmp_obj->getId());
01655 $link_lp = "<a href=\"".$this->ctrl->getLinkTargetByClass(array('illearningprogressgui',
01656 'illplistofprogressgui'),
01657 "show")."\">".$img_lp."</a>";
01658 }
01659 $f_result[$counter][] = $link_mail." ".$link_change." ".$link_lp;
01660 }
01661 else
01662 {
01663 include_once 'classes/class.ilMail.php';
01664 $mail =& new ilMail($ilUser->getId());
01665 if($rbacsystem->checkAccess('mail_visible',$mail->getMailObjectReferenceId()))
01666 {
01667 $f_result[$counter][] = $link_mail;
01668 }
01669 else
01670 {
01671 $f_result[$counter][] = '';
01672 }
01673 }
01674 unset($tmp_obj);
01675 ++$counter;
01676 }
01677 }
01678
01679 }
01680 return $this->__showMembersTable($f_result,$member_ids,$is_admin);
01681 }
01682
01683 function __showWaitingList()
01684 {
01685 include_once './course/classes/class.ilObjCourseGrouping.php';
01686
01687 $this->object->initWaitingList();
01688 if($this->object->waiting_list_obj->getCountUsers())
01689 {
01690 $counter = 0;
01691 $f_result = array();
01692 foreach($this->object->waiting_list_obj->getAllUsers() as $waiting_data)
01693 {
01694
01695 if($tmp_obj = ilObjectFactory::getInstanceByObjId($waiting_data['usr_id'],false))
01696 {
01697 $waiting_list_ids[] = $waiting_data['usr_id'];
01698
01699 $f_result[$counter][] = ilUtil::formCheckbox(0,"waiting_list[]",$waiting_data['usr_id']);
01700
01701 $message = '';
01702
01703 foreach(ilObjCourseGrouping::_getGroupingCourseIds($this->object->getId()) as $course_data)
01704 {
01705 if($course_data['id'] != $this->object->getId() and
01706 ilCourseMembers::_isMember($tmp_obj->getId(),$course_data['id'],$course_data['unique']))
01707 {
01708 $message .= ('<br />'.$this->lng->txt('crs_member_of').' ');
01709 $message .= ilObject::_lookupTitle($course_data['id']);
01710 }
01711 }
01712 $f_result[$counter][] = $tmp_obj->getLogin().$message;
01713 $f_result[$counter][] = $tmp_obj->getFirstname();
01714 $f_result[$counter][] = $tmp_obj->getLastname();
01715 #$f_result[$counter][] = strftime("%Y-%m-%d %R",$waiting_data["time"]);
01716 $f_result[$counter][] = ilFormat::formatUnixTime($waiting_data["time"],true);
01717
01718
01719 unset($tmp_obj);
01720 ++$counter;
01721 }
01722 }
01723 $this->__showWaitingListTable($f_result,$waiting_list_ids);
01724
01725 }
01726 }
01727
01728 function __showSubscribers()
01729 {
01730 if(count($this->object->members_obj->getSubscribers()))
01731 {
01732 $counter = 0;
01733 $f_result = array();
01734 foreach($this->object->members_obj->getSubscribers() as $member_id)
01735 {
01736 $member_data = $this->object->members_obj->getSubscriberData($member_id);
01737
01738
01739 if($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false))
01740 {
01741 $subscriber_ids[$counter] = $member_id;
01742
01743 $f_result[$counter][] = ilUtil::formCheckbox(0,"subscriber[]",$member_id);
01744 $f_result[$counter][] = $tmp_obj->getLogin();
01745 $f_result[$counter][] = $tmp_obj->getFirstname();
01746 $f_result[$counter][] = $tmp_obj->getLastname();
01747 #$f_result[$counter][] = strftime("%Y-%m-%d %R",$member_data["time"]);
01748 $f_result[$counter][] = ilFormat::formatUnixTime($member_data["time"],true);
01749
01750 unset($tmp_obj);
01751 ++$counter;
01752 }
01753 }
01754 $this->__showSubscribersTable($f_result,$subscriber_ids);
01755
01756 }
01757 }
01758
01759 function editMemberObject()
01760 {
01761 global $rbacsystem;
01762
01763 $this->tabs_gui->setTabActive('members');
01764
01765 $this->object->initCourseMemberObject();
01766
01767
01768 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01769 {
01770 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01771 }
01772
01773 if(!isset($_GET["member_id"]) or !$this->object->members_obj->isAssigned((int) $_GET["member_id"]))
01774 {
01775 $this->ilias->raiseError($this->lng->txt("crs_no_valid_member_id_given"),$this->ilias->error_obj->MESSAGE);
01776 }
01777
01778 $member_data = $this->object->members_obj->getUserData((int) $_GET["member_id"]);
01779
01780 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html","course");
01781
01782
01783 $f_result = array();
01784
01785
01786 $tmp_obj = ilObjectFactory::getInstanceByObjId($member_data["usr_id"],false);
01787
01788 $f_result[0][] = $tmp_obj->getLogin();
01789 $f_result[0][] = $tmp_obj->getFirstname();
01790 $f_result[0][] = $tmp_obj->getLastname();
01791
01792 $f_result[0][] = ilUtil::formCheckbox($member_data['passed'] ? 1 : 0,'passed',1);
01793
01794 $actions = array(0 => $this->lng->txt("crs_member_unblocked"),
01795 1 => $this->lng->txt("crs_member_blocked"),
01796 2 => $this->lng->txt("crs_tutor_notify"),
01797 3 => $this->lng->txt("crs_tutor_no_notify"),
01798 4 => $this->lng->txt("crs_admin_notify"),
01799 5 => $this->lng->txt("crs_admin_no_notify"));
01800
01801
01802 switch($member_data["role"])
01803 {
01804 case $this->object->members_obj->ROLE_ADMIN:
01805 if($member_data["status"] == $this->object->members_obj->STATUS_NOTIFY)
01806 {
01807 $selected = 4;
01808 }
01809 else
01810 {
01811 $selected = 5;
01812 }
01813 break;
01814
01815 case $this->object->members_obj->ROLE_TUTOR:
01816 if($member_data["status"] == $this->object->members_obj->STATUS_NOTIFY)
01817 {
01818 $selected = 2;
01819 }
01820 else
01821 {
01822 $selected = 3;
01823 }
01824 break;
01825
01826 case $this->object->members_obj->ROLE_MEMBER:
01827 if($member_data["status"] == $this->object->members_obj->STATUS_UNBLOCKED)
01828 {
01829 $selected = 0;
01830 }
01831 else
01832 {
01833 $selected = 1;
01834 }
01835 break;
01836 }
01837 $f_result[0][] = ilUtil::formSelect($selected,"role_status",$actions,false,true);
01838
01839 unset($tmp_obj);
01840
01841 $this->__showEditMemberTable($f_result);
01842
01843 return true;
01844 }
01845
01846 function updateMemberObject()
01847 {
01848 global $rbacsystem;
01849
01850 $this->object->initCourseMemberObject();
01851
01852
01853 $user_data = $this->object->members_obj->getUserData($_GET["member_id"]);
01854
01855
01856 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01857 {
01858 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01859 }
01860
01861 if(!isset($_GET["member_id"]) or !$this->object->members_obj->isAssigned((int) $_GET["member_id"]))
01862 {
01863 $this->ilias->raiseError($this->lng->txt("crs_no_valid_member_id_given"),$this->ilias->error_obj->MESSAGE);
01864 }
01865
01866
01867 if((int) $_POST['role_status'] != 4 and (int) $_POST['role_status'] != 5)
01868 {
01869 if(!$this->object->members_obj->checkLastAdmin(array((int) $_GET['member_id'])))
01870 {
01871 $this->ilias->raiseError($this->lng->txt("crs_at_least_one_admin"),$this->ilias->error_obj->MESSAGE);
01872 }
01873 }
01874
01875
01876 switch((int) $_POST["role_status"])
01877 {
01878 case 0:
01879
01880 if($this->object->getSubscriptionMaxMembers() and
01881 $this->object->members_obj->getCountMembers() >= $this->object->getSubscriptionMaxMembers())
01882 {
01883 sendInfo($this->lng->txt("crs_max_members_reached"));
01884 $this->membersObject();
01885
01886 return false;
01887 }
01888 $status = $this->object->members_obj->STATUS_UNBLOCKED;;
01889 $role = $this->object->members_obj->ROLE_MEMBER;
01890 break;
01891
01892 case 1:
01893 $status = $this->object->members_obj->STATUS_BLOCKED;;
01894 $role = $this->object->members_obj->ROLE_MEMBER;
01895 break;
01896
01897
01898 case 2:
01899 $status = $this->object->members_obj->STATUS_NOTIFY;
01900 $role = $this->object->members_obj->ROLE_TUTOR;
01901 break;
01902
01903 case 3:
01904 $status = $this->object->members_obj->STATUS_NO_NOTIFY;
01905 $role = $this->object->members_obj->ROLE_TUTOR;
01906 break;
01907
01908 case 4:
01909 $status = $this->object->members_obj->STATUS_NOTIFY;
01910 $role = $this->object->members_obj->ROLE_ADMIN;
01911 break;
01912
01913 case 5:
01914 $status = $this->object->members_obj->STATUS_NO_NOTIFY;
01915 $role = $this->object->members_obj->ROLE_ADMIN;
01916 break;
01917
01918 default:
01919 $this->ilias->raiseError("No valid status given",$this->ilias->error_obj->MESSAGE);
01920 }
01921 $this->object->members_obj->update((int) $_GET["member_id"],$role,$status,(int) $_POST['passed']);
01922
01923
01924 if($user_data["role"] != $role or
01925 $user_data["status"] != $status or
01926 $user_data['passed'] != (bool) $_POST['passed'])
01927 {
01928 $this->object->members_obj->sendNotification($this->object->members_obj->NOTIFY_STATUS_CHANGED,$_GET["member_id"]);
01929 }
01930
01931
01932 sendInfo($this->lng->txt("crs_member_updated"));
01933 $this->membersObject();
01934 }
01935 function addUserObject()
01936 {
01937 global $rbacsystem;
01938
01939
01940 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01941 {
01942 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01943 }
01944 if(!is_array($_POST["user"]))
01945 {
01946 sendInfo($this->lng->txt("crs_no_users_selected"));
01947 $this->searchObject();
01948
01949 return false;
01950 }
01951 $this->object->initCourseMemberObject();
01952
01953 $added_users = 0;
01954 $limit_reached = false;
01955 foreach($_POST["user"] as $user_id)
01956 {
01957 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user_id))
01958 {
01959 continue;
01960 }
01961 if($this->object->members_obj->isAssigned($user_id))
01962 {
01963 continue;
01964 }
01965 if($this->object->getSubscriptionMaxMembers() and
01966 $this->object->getSubscriptionMaxMembers() <= $this->object->members_obj->getCountMembers())
01967 {
01968 $limit_reached = true;
01969 break;
01970 }
01971 $this->object->members_obj->add($tmp_obj,$this->object->members_obj->ROLE_MEMBER);
01972 $this->object->members_obj->sendNotification($this->object->members_obj->NOTIFY_ACCEPT_USER,$user_id);
01973
01974 ++$added_users;
01975 }
01976 if($limit_reached)
01977 {
01978 sendInfo($this->lng->txt("crs_max_members_reached"));
01979 $this->membersObject();
01980
01981 return false;
01982 }
01983 if($added_users)
01984 {
01985 sendInfo($this->lng->txt("crs_users_added"));
01986 unset($_SESSION["crs_search_str"]);
01987 unset($_SESSION["crs_search_for"]);
01988 $this->membersObject();
01989 unset($_SESSION['crs_usr_search_result']);
01990 return true;
01991 }
01992 else
01993 {
01994 sendInfo($this->lng->txt("crs_users_already_assigned"));
01995 $this->searchObject();
01996
01997 return false;
01998 }
01999 return false;
02000 }
02001
02002 function addFromWaitingList()
02003 {
02004 global $rbacsystem;
02005
02006
02007 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02008 {
02009 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02010 }
02011 if(!is_array($_POST["waiting_list"]))
02012 {
02013 sendInfo($this->lng->txt("crs_no_users_selected"));
02014 $this->membersObject();
02015
02016 return false;
02017 }
02018 $this->object->initCourseMemberObject();
02019 $this->object->initWaitingList();
02020
02021 $added_users = 0;
02022 foreach($_POST["waiting_list"] as $user_id)
02023 {
02024 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user_id))
02025 {
02026 continue;
02027 }
02028 if($this->object->members_obj->isAssigned($user_id))
02029 {
02030 continue;
02031 }
02032 $this->object->members_obj->add($tmp_obj,$this->object->members_obj->ROLE_MEMBER);
02033 $this->object->members_obj->sendNotification($this->object->members_obj->NOTIFY_ACCEPT_USER,$user_id);
02034 $this->object->waiting_list_obj->removeFromList($user_id);
02035
02036 ++$added_users;
02037 }
02038 if($added_users)
02039 {
02040 sendInfo($this->lng->txt("crs_users_added"));
02041 $this->membersObject();
02042
02043 return true;
02044 }
02045 else
02046 {
02047 sendInfo($this->lng->txt("crs_users_already_assigned"));
02048 $this->searchObject();
02049
02050 return false;
02051 }
02052 return false;
02053 }
02054
02055 function performRemoveFromWaitingListObject()
02056 {
02057 global $rbacsystem;
02058
02059
02060 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02061 {
02062 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02063 }
02064
02065 if(!is_array($_SESSION["crs_delete_waiting_list_ids"]))
02066 {
02067 sendInfo($this->lng->txt("crs_no_users_selected"));
02068 $this->membersObject();
02069
02070 return false;
02071 }
02072
02073 $this->object->initWaitingList();
02074 foreach($_SESSION['crs_delete_waiting_list_ids'] as $usr_id)
02075 {
02076 $this->object->waiting_list_obj->removeFromList($usr_id);
02077 }
02078 sendInfo($this->lng->txt('crs_users_removed_from_list'));
02079 $this->membersObject();
02080
02081 return true;
02082 }
02083
02084
02085 function addSubscribers()
02086 {
02087 global $rbacsystem;
02088
02089
02090 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02091 {
02092 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02093 }
02094
02095 if(!is_array($_POST["subscriber"]))
02096 {
02097 sendInfo($this->lng->txt("crs_no_subscribers_selected"));
02098 $this->membersObject();
02099
02100 return false;
02101 }
02102 $this->object->initCourseMemberObject();
02103
02104 if($this->object->getSubscriptionMaxMembers() and
02105 ($this->object->getSubscriptionMaxMembers() < ($this->object->members_obj->getCountMembers() + count($_POST["subscriber"]))))
02106 {
02107 sendInfo($this->lng->txt("crs_max_members_reached"));
02108 $this->membersObject();
02109
02110 return false;
02111 }
02112 if(!$this->object->members_obj->assignSubscribers($_POST["subscriber"]))
02113 {
02114 sendInfo($this->object->getMessage());
02115 $this->membersObject();
02116
02117 return false;
02118 }
02119 else
02120 {
02121
02122 foreach($_POST["subscriber"] as $usr_id)
02123 {
02124 $this->object->members_obj->sendNotification($this->object->members_obj->NOTIFY_ACCEPT_SUBSCRIBER,$usr_id);
02125 }
02126 }
02127 sendInfo($this->lng->txt("crs_subscribers_assigned"));
02128 $this->membersObject();
02129
02130 return true;
02131 }
02132
02133 function autoFillObject()
02134 {
02135 global $rbacsystem;
02136
02137
02138 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02139 {
02140 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02141 }
02142
02143 $this->object->initCourseMemberObject();
02144
02145 if($this->object->getSubscriptionMaxMembers() and
02146 $this->object->getSubscriptionMaxMembers() <= $this->object->members_obj->getCountMembers())
02147 {
02148 sendInfo($this->lng->txt("crs_max_members_reached"));
02149 $this->membersObject();
02150
02151 return false;
02152 }
02153 if($number = $this->object->members_obj->autoFillSubscribers())
02154 {
02155 sendInfo($this->lng->txt("crs_number_users_added")." ".$number);
02156 }
02157 else
02158 {
02159 sendInfo($this->lng->txt("crs_no_users_added"));
02160 }
02161 $this->membersObject();
02162
02163 return true;
02164 }
02165
02166
02167 function deleteSubscribers()
02168 {
02169 global $rbacsystem;
02170
02171 $this->tabs_gui->setTabActive('members');
02172
02173
02174 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02175 {
02176 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02177 }
02178 if(!is_array($_POST["subscriber"]) or !count($_POST["subscriber"]))
02179 {
02180 sendInfo($this->lng->txt("crs_no_subscribers_selected"));
02181 $this->membersObject();
02182
02183 return false;
02184 }
02185 sendInfo($this->lng->txt("crs_delete_subscribers_sure"));
02186
02187
02188 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html","course");
02189 $this->object->initCourseMemberObject();
02190
02191
02192 $_SESSION["crs_delete_subscriber_ids"] = $_POST["subscriber"];
02193
02194 $counter = 0;
02195 $f_result = array();
02196
02197 foreach($_POST["subscriber"] as $member_id)
02198 {
02199 $member_data = $this->object->members_obj->getSubscriberData($member_id);
02200
02201
02202 if($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false))
02203 {
02204 $f_result[$counter][] = $tmp_obj->getLogin();
02205 $f_result[$counter][] = $tmp_obj->getFirstname();
02206 $f_result[$counter][] = $tmp_obj->getLastname();
02207 #$f_result[$counter][] = strftime("%Y-%m-%d %R",$member_data["time"]);
02208 $f_result[$counter][] = ilFormat::formatUnixTime($member_data["time"],true);
02209
02210 unset($tmp_obj);
02211 ++$counter;
02212 }
02213 }
02214 return $this->__showDeleteSubscriberTable($f_result);
02215 }
02216
02217 function removeFromWaitingList()
02218 {
02219 global $rbacsystem;
02220
02221 $this->tabs_gui->setTabActive('members');
02222
02223
02224 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02225 {
02226 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02227 }
02228 if(!is_array($_POST["waiting_list"]) or !count($_POST["waiting_list"]))
02229 {
02230 sendInfo($this->lng->txt("crs_no_users_selected"));
02231 $this->membersObject();
02232
02233 return false;
02234 }
02235 sendInfo($this->lng->txt("crs_delete_from_list_sure"));
02236
02237
02238 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html","course");
02239 $this->object->initCourseMemberObject();
02240 $this->object->initWaitingList();
02241
02242
02243 $_SESSION["crs_delete_waiting_list_ids"] = $_POST["waiting_list"];
02244
02245 $counter = 0;
02246 $f_result = array();
02247
02248 foreach($_POST["waiting_list"] as $wait_id)
02249 {
02250 $user_data =& $this->object->waiting_list_obj->getUser($wait_id);
02251
02252 if($tmp_obj = ilObjectFactory::getInstanceByObjId($wait_id,false))
02253 {
02254 $f_result[$counter][] = $tmp_obj->getLogin();
02255 $f_result[$counter][] = $tmp_obj->getFirstname();
02256 $f_result[$counter][] = $tmp_obj->getLastname();
02257 #$f_result[$counter][] = strftime("%Y-%m-%d %R",$user_data["time"]);
02258 $f_result[$counter][] = ilFormat::formatUnixTime($user_data["time"],true);
02259
02260 unset($tmp_obj);
02261 ++$counter;
02262 }
02263 }
02264 return $this->__showRemoveFromWaitingListTable($f_result);
02265 }
02266
02267 function unsubscribeObject()
02268 {
02269 global $rbacsystem;
02270
02271
02272 if(!$rbacsystem->checkAccess("leave", $this->ref_id))
02273 {
02274 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02275 }
02276
02277 $this->tabs_gui->setTabActive('members');
02278 #$this->setSubTabs('members');
02279
02280
02281 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_unsubscribe_sure.html","course");
02282 sendInfo($this->lng->txt('crs_unsubscribe_sure'));
02283
02284 $this->tpl->setVariable("UNSUB_FORMACTION",$this->ctrl->getFormAction($this));
02285 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
02286 $this->tpl->setVariable("CMD_SUBMIT",'performUnsubscribe');
02287 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("crs_unsubscribe"));
02288
02289 return true;
02290 }
02291
02292 function performUnsubscribeObject()
02293 {
02294 global $rbacsystem;
02295
02296
02297 if(!$rbacsystem->checkAccess("leave", $this->ref_id))
02298 {
02299 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02300 }
02301 $this->object->initCourseMemberObject();
02302 $this->object->members_obj->delete($this->ilias->account->getId());
02303 $this->object->members_obj->sendUnsubscribeNotificationToAdmins($this->ilias->account->getId());
02304
02305 sendInfo($this->lng->txt('crs_unsubscribed_from_crs'),true);
02306
02307 ilUtil::redirect("repository.php?ref_id=".$this->tree->getParentId($this->ref_id));
02308 }
02309
02310 function deleteMembers()
02311 {
02312 global $rbacsystem;
02313
02314 $this->tabs_gui->setTabActive('members');
02315
02316
02317 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02318 {
02319 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02320 }
02321 if(!is_array($_POST["member"]) or !count($_POST["member"]))
02322 {
02323 sendInfo($this->lng->txt("crs_no_member_selected"));
02324 $this->membersObject();
02325
02326 return false;
02327 }
02328 sendInfo($this->lng->txt("crs_delete_members_sure"));
02329
02330 $this->object->initCourseMemberObject();
02331
02332
02333 if(!$this->object->members_obj->checkLastAdmin($_POST['member']))
02334 {
02335 sendInfo($this->lng->txt('crs_at_least_one_admin'));
02336 $this->membersObject();
02337
02338 return false;
02339 }
02340
02341
02342 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html","course");
02343
02344
02345
02346
02347 $_SESSION["crs_delete_member_ids"] = $_POST["member"];
02348
02349 $counter = 0;
02350 $f_result = array();
02351
02352 foreach($_POST["member"] as $member_id)
02353 {
02354 $member_data = $this->object->members_obj->getUserData($member_id);
02355
02356
02357 if($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false))
02358 {
02359 $f_result[$counter][] = $tmp_obj->getLogin();
02360 $f_result[$counter][] = $tmp_obj->getFirstname();
02361 $f_result[$counter][] = $tmp_obj->getLastname();
02362
02363 switch($member_data['role'])
02364 {
02365 case $this->object->members_obj->ROLE_ADMIN:
02366 $f_result[$counter][] = $this->lng->txt("crs_admin");
02367 break;
02368 case $this->object->members_obj->ROLE_TUTOR:
02369 $f_result[$counter][] = $this->lng->txt("crs_tutor");
02370 break;
02371 case $this->object->members_obj->ROLE_MEMBER:
02372 $f_result[$counter][] = $this->lng->txt("crs_member");
02373 break;
02374 }
02375
02376 unset($tmp_obj);
02377 ++$counter;
02378 }
02379 }
02380 $this->__showDeleteMembersTable($f_result);
02381
02382 return true;
02383 }
02384
02385 function removeMembersObject()
02386 {
02387 global $rbacsystem;
02388
02389
02390 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02391 {
02392 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02393 }
02394 if(!is_array($_SESSION["crs_delete_member_ids"]) or !count($_SESSION["crs_delete_member_ids"]))
02395 {
02396 sendInfo($this->lng->txt("crs_no_member_selected"));
02397 $this->membersObject();
02398
02399 return false;
02400 }
02401 $this->object->initCourseMemberObject();
02402
02403 if(!$this->object->members_obj->deleteMembers($_SESSION["crs_delete_member_ids"]))
02404 {
02405 sendInfo($this->object->getMessage());
02406 unset($_SESSION["crs_delete_member_ids"]);
02407 $this->membersObject();
02408
02409 return false;
02410 }
02411 else
02412 {
02413
02414 foreach($_SESSION["crs_delete_member_ids"] as $usr_id)
02415 {
02416 $this->object->members_obj->sendNotification($this->object->members_obj->NOTIFY_DISMISS_MEMBER,$usr_id);
02417 }
02418 }
02419 unset($_SESSION["crs_delete_member_ids"]);
02420 sendInfo($this->lng->txt("crs_members_deleted"));
02421 $this->membersObject();
02422
02423 return true;
02424 }
02425
02426 function removeSubscribersObject()
02427 {
02428 global $rbacsystem;
02429
02430
02431 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02432 {
02433 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02434 }
02435 if(!is_array($_SESSION["crs_delete_subscriber_ids"]) or !count($_SESSION["crs_delete_subscriber_ids"]))
02436 {
02437 sendInfo($this->lng->txt("crs_no_subscribers_selected"));
02438 $this->membersObject();
02439
02440 return false;
02441 }
02442 $this->object->initCourseMemberObject();
02443
02444 if(!$this->object->members_obj->deleteSubscribers($_SESSION["crs_delete_subscriber_ids"]))
02445 {
02446 sendInfo($this->object->getMessage());
02447 unset($_SESSION["crs_delete_subscriber_ids"]);
02448 $this->membersObject();
02449
02450 return false;
02451 }
02452 else
02453 {
02454
02455 foreach($_SESSION["crs_delete_subscriber_ids"] as $usr_id)
02456 {
02457 $this->object->members_obj->sendNotification($this->object->members_obj->NOTIFY_DISMISS_SUBSCRIBER,$usr_id);
02458 }
02459 }
02460
02461 unset($_SESSION["crs_delete_subscriber_ids"]);
02462 sendInfo($this->lng->txt("crs_subscribers_deleted"));
02463 $this->membersObject();
02464
02465 return true;
02466 }
02467
02468
02469 function searchUserObject()
02470 {
02471 global $rbacsystem;
02472
02473 $this->tabs_gui->setTabActive('members');
02474
02475
02476 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02477 {
02478 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02479 }
02480 $this->object->initCourseMemberObject();
02481 if($this->object->getSubscriptionMaxMembers() and
02482 $this->object->getSubscriptionMaxMembers() <= $this->object->members_obj->getCountMembers())
02483 {
02484 sendInfo($this->lng->txt("crs_max_members_reached"));
02485 $this->membersObject();
02486
02487 return false;
02488 }
02489 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.crs_members_search.html","course");
02490
02491 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
02492 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("crs_search_members"));
02493 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
02494 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["crs_search_str"] ?
02495 ilUtil::prepareFormOutput($_SESSION["crs_search_str"],true) : "");
02496 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
02497 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
02498 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
02499 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
02500 #$this->tpl->setVariable("SEARCH_ROW_TXT_COURSE",$this->lng->txt("courses"));
02501 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
02502 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
02503
02504 $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
02505 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
02506 $role = ($_POST["search_for"] == "role") ? 1 : 0;
02507
02508 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
02509 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
02510 $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
02511 #$this->tpl->setVariable("SEARCH_ROW_CHECK_COURSE",ilUtil::formRadioButton(0,"search_for",$this->SEARCH_COURSE));
02512
02513 $this->__unsetSessionVariables();
02514 }
02515
02516 function __appendToStoredResults($a_result)
02517 {
02518 $tmp_array = array();
02519 foreach($a_result as $result)
02520 {
02521 if(is_array($result))
02522 {
02523 $tmp_array[] = $result['id'];
02524 }
02525 elseif($result)
02526 {
02527 $tmp_array[] = $result;
02528 }
02529 }
02530
02531
02532 $_SESSION['crs_usr_search_result'] = array_unique(array_merge((array) $_SESSION['crs_usr_search_result'],$tmp_array));
02533 return $_SESSION['crs_usr_search_result'];
02534 }
02535
02536 function cancelSearchObject()
02537 {
02538 $_SESSION['crs_usr_search_result'] = array();
02539 $_SESSION['crs_search_str'] = '';
02540 $this->searchUserObject();
02541 }
02542
02543 function searchObject()
02544 {
02545 global $rbacsystem,$tree;
02546
02547 $this->tabs_gui->setTabActive('members');
02548
02549 #$this->__unsetSessionVariables();
02550
02551
02552 $_SESSION["crs_search_str"] = $_POST["search_str"] = $_POST["search_str"]
02553 ? $_POST["search_str"]
02554 : $_SESSION["crs_search_str"];
02555 $_SESSION["crs_search_for"] = $_POST["search_for"] = $_POST["search_for"]
02556 ? $_POST["search_for"]
02557 : $_SESSION["crs_search_for"];
02558
02559
02560
02561 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02562 {
02563 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02564 }
02565 $this->object->initCourseMemberObject();
02566
02567 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
02568 {
02569 sendInfo($this->lng->txt("crs_search_enter_search_string"));
02570 $this->searchUserObject();
02571
02572 return false;
02573 }
02574 if(!count($result = $this->__search($_POST["search_str"],$_POST["search_for"])))
02575 {
02576 sendInfo($this->lng->txt("crs_no_results_found"));
02577 $this->searchUserObject();
02578
02579 return false;
02580 }
02581
02582 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_usr_selection.html","course");
02583 #$this->__showButton("searchUser",$this->lng->txt("crs_new_search"));
02584
02585 $counter = 0;
02586 $f_result = array();
02587 switch($_POST["search_for"])
02588 {
02589 case "usr":
02590 foreach($result as $user)
02591 {
02592 if(!is_object($tmp_obj = ilObjectFactory::getInstanceByObjId($user,false)))
02593 {
02594 continue;
02595 }
02596 $user_ids[$counter] = $user;
02597
02598 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
02599 $f_result[$counter][] = $tmp_obj->getLogin();
02600 $f_result[$counter][] = $tmp_obj->getFirstname();
02601 $f_result[$counter][] = $tmp_obj->getLastname();
02602
02603 unset($tmp_obj);
02604 ++$counter;
02605 }
02606 $this->__showSearchUserTable($f_result,$user_ids);
02607
02608 return true;
02609
02610 case "grp":
02611 foreach($result as $group)
02612 {
02613 if(!$tree->isInTree($group["id"]))
02614 {
02615 continue;
02616 }
02617 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
02618 {
02619 continue;
02620 }
02621
02622 $grp_ids[$counter] = $group["id"];
02623
02624 $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
02625 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
02626 $f_result[$counter][] = $tmp_obj->getCountMembers();
02627
02628 unset($tmp_obj);
02629 ++$counter;
02630 }
02631 $this->__showSearchGroupTable($f_result,$grp_ids);
02632
02633 return true;
02634
02635 case "role":
02636 foreach($result as $role)
02637 {
02638
02639 if ($role["id"] == ANONYMOUS_ROLE_ID)
02640 {
02641 continue;
02642 }
02643
02644 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
02645 {
02646 continue;
02647 }
02648
02649
02650 if ($tmp_obj->getCountMembers() == 0)
02651 {
02652 continue;
02653 }
02654
02655 $role_ids[$counter] = $role["id"];
02656
02657 $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
02658 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
02659 $f_result[$counter][] = $tmp_obj->getCountMembers();
02660
02661 unset($tmp_obj);
02662 ++$counter;
02663 }
02664
02665 $this->__showSearchRoleTable($f_result,$role_ids);
02666
02667 return true;
02668 }
02669 }
02670
02671 function listUsersGroupObject()
02672 {
02673 global $rbacsystem,$tree;
02674
02675 $this->tabs_gui->setTabActive('members');
02676
02677 $_SESSION["crs_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["crs_group"];
02678
02679
02680 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02681 {
02682 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02683 }
02684 if(!is_array($_POST["group"]))
02685 {
02686 sendInfo($this->lng->txt("crs_no_groups_selected"));
02687 $this->searchObject();
02688
02689 return false;
02690 }
02691
02692 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_usr_selection.html","course");
02693 #$this->__showButton("searchUser",$this->lng->txt("crs_new_search"));
02694 $this->object->initCourseMemberObject();
02695
02696
02697 $members = array();
02698 foreach($_POST["group"] as $group_id)
02699 {
02700 if(!$tree->isInTree($group_id))
02701 {
02702 continue;
02703 }
02704 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
02705 {
02706 continue;
02707 }
02708 $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
02709
02710 unset($tmp_obj);
02711 }
02712 $members = array_unique($members);
02713 $members = $this->__appendToStoredResults($members);
02714
02715
02716 $counter = 0;
02717 $f_result = array();
02718 foreach($members as $user)
02719 {
02720 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
02721 {
02722 continue;
02723 }
02724
02725 $user_ids[$counter] = $user;
02726
02727 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
02728 $f_result[$counter][] = $tmp_obj->getLogin();
02729 $f_result[$counter][] = $tmp_obj->getLastname();
02730 $f_result[$counter][] = $tmp_obj->getFirstname();
02731
02732 unset($tmp_obj);
02733 ++$counter;
02734 }
02735 $this->__showSearchUserTable($f_result,$user_ids,"listUsersGroup");
02736
02737 return true;
02738 }
02739
02740 function listUsersRoleObject()
02741 {
02742 global $rbacsystem,$rbacreview,$tree;
02743
02744 $this->tabs_gui->setTabActive('members');
02745
02746 $_SESSION["crs_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["crs_role"];
02747
02748
02749 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
02750 {
02751 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
02752 }
02753 if(!is_array($_POST["role"]))
02754 {
02755 sendInfo($this->lng->txt("crs_no_roles_selected"));
02756 $this->searchObject();
02757
02758 return false;
02759 }
02760
02761 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_usr_selection.html","course");
02762 #$this->__showButton("searchUser",$this->lng->txt("crs_new_search"));
02763 $this->object->initCourseMemberObject();
02764
02765
02766 $members = array();
02767 foreach($_POST["role"] as $role_id)
02768 {
02769 $members = array_merge($rbacreview->assignedUsers($role_id),$members);
02770 }
02771
02772 $members = array_unique($members);
02773 $members = $this->__appendToStoredResults($members);
02774
02775
02776 $counter = 0;
02777 $f_result = array();
02778 foreach($members as $user)
02779 {
02780 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
02781 {
02782 continue;
02783 }
02784
02785 $user_ids[$counter] = $user;
02786
02787 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
02788 $f_result[$counter][] = $tmp_obj->getLogin();
02789 $f_result[$counter][] = $tmp_obj->getLastname();
02790 $f_result[$counter][] = $tmp_obj->getFirstname();
02791
02792 unset($tmp_obj);
02793 ++$counter;
02794 }
02795 $this->__showSearchUserTable($f_result,$user_ids,"listUsersRole");
02796
02797 return true;
02798 }
02799
02800 function getTabs(&$tabs_gui)
02801 {
02802 global $rbacsystem,$ilAccess,$ilUser;
02803
02804 $this->object->initCourseMemberObject();
02805
02806 $this->ctrl->setParameter($this,"ref_id",$this->ref_id);
02807
02808 if($ilAccess->checkAccess('write','',$this->ref_id) and $this->object->enabledObjectiveView())
02809 {
02810 $tabs_gui->addTarget('learners_view',
02811 $this->ctrl->getLinkTarget($this, "cciObjectives"),
02812 array('cciObjectives'),
02813 get_class($this));
02814 }
02815 elseif($ilAccess->checkAccess('read','',$this->ref_id))
02816 {
02817 $tabs_gui->addTarget('content',
02818 $this->ctrl->getLinkTarget($this, ""),
02819 array("", "view","addToDesk","removeFromDesk",'cciEdit','listConditions'));
02820 }
02821 if($ilAccess->checkAccess('write','',$this->ref_id) and $this->object->enabledObjectiveView())
02822 {
02823 $tabs_gui->addTarget('edit_content',
02824 $this->ctrl->getLinkTarget($this,'cciObjectivesEdit'),
02825 "cciObjectivesEdit",
02826 get_class($this));
02827 }
02828
02829 if ($ilAccess->checkAccess('visible','',$this->ref_id))
02830 {
02831
02832
02833
02834
02835
02836 $force_active = (strtolower($_GET["cmdClass"]) == "ilinfoscreengui"
02837 || strtolower($_GET["cmdClass"]) == "ilnotegui")
02838 ? true
02839 : false;
02840 $tabs_gui->addTarget("info_short",
02841 $this->ctrl->getLinkTargetByClass(
02842 array("ilobjcoursegui", "ilinfoscreengui"), "showSummary"),
02843 "infoScreen",
02844 "", "", $force_active);
02845 }
02846 if ($ilAccess->checkAccess('write','',$this->ref_id))
02847 {
02848 $force_active = (strtolower($_GET["cmdClass"]) == "ilconditionhandlerinterface"
02849 && $_GET["item_id"] == "")
02850 ? true
02851 : false;
02852 $tabs_gui->addTarget("settings",
02853 $this->ctrl->getLinkTarget($this, "edit"),
02854 array("edit", "editCourseIcons", "listStructure"), "", "", $force_active);
02855 }
02856
02857
02858 if ($ilAccess->checkAccess('write','',$this->ref_id))
02859 {
02860 $tabs_gui->addTarget("meta_data",
02861 $this->ctrl->getLinkTargetByClass(array('ilobjcoursegui','ilmdeditorgui'),'listSection'),
02862 "",
02863 "ilmdeditorgui");
02864 }
02865
02866
02867 if ($ilAccess->checkAccess('read','',$this->ref_id))
02868 {
02869 $tabs_gui->addTarget("members",
02870 $this->ctrl->getLinkTarget($this, "members"),
02871 "members",
02872 get_class($this));
02873 }
02874
02875
02876 if ($ilAccess->checkAccess('write','',$this->ref_id))
02877 {
02878 $tabs_gui->addTarget("crs_archives",
02879 $this->ctrl->getLinkTarget($this, "archive"), "archive", get_class($this));
02880 }
02881
02882
02883 if($ilAccess->checkAccess('write','',$this->ref_id))
02884 {
02885 $force_active = (strtolower($_GET["cmdClass"]) == "ilcourseobjectivesgui")
02886 ? true
02887 : false;
02888 $tabs_gui->addTarget("crs_objectives",
02889 $this->ctrl->getLinkTarget($this,"listObjectives"),
02890 "listObjectives",
02891 get_class($this), "", $force_active);
02892 }
02893
02894
02895 if($ilAccess->checkAccess('write','',$this->ref_id))
02896 {
02897 $tabs_gui->addTarget("crs_groupings",
02898 $this->ctrl->getLinkTarget($this, "listGroupings"), "listGroupings", get_class($this));
02899 }
02900
02901 include_once("Services/Tracking/classes/class.ilObjUserTracking.php");
02902 if($ilAccess->checkAccess('read','',$this->ref_id) and ilObjUserTracking::_enabledLearningProgress())
02903 {
02904 $tabs_gui->addTarget('learning_progress',
02905 $this->ctrl->getLinkTargetByClass(array('ilobjcoursegui','illearningprogressgui'),''),
02906 '',
02907 array('illplistofobjectsgui','illplistofsettingsgui','illearningprogressgui','illplistofprogressgui'));
02908 }
02909 if ($ilAccess->checkAccess('edit_permission','',$this->ref_id))
02910 {
02911 $tabs_gui->addTarget("perm_settings",
02912 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
02913 array("perm","info","owner"), 'ilpermissiongui');
02914 }
02915
02916 if ($this->ctrl->getTargetScript() == "adm_object.php")
02917 {
02918 $tabs_gui->addTarget("show_owner",
02919 $this->ctrl->getLinkTarget($this, "owner"), "owner", get_class($this));
02920
02921 if ($this->tree->getSavedNodeData($this->ref_id))
02922 {
02923 $tabs_gui->addTarget("trash",
02924 $this->ctrl->getLinkTarget($this, "trash"), "trash", get_class($this));
02925 }
02926 }
02927 if($ilAccess->checkAccess('join','',$this->ref_id)
02928 and !ilCourseMembers::_isMember($ilUser->getId(),$this->object->getId()))
02929 {
02930 $tabs_gui->addTarget("join",
02931 $this->ctrl->getLinkTarget($this, "join"),
02932 'join',
02933 "");
02934 }
02935 }
02936
02937 function printMembersObject()
02938 {
02939 global $rbacsystem;
02940
02941 $is_admin = (bool) $rbacsystem->checkAccess("write", $this->object->getRefId());
02942
02943 $tpl =& new ilTemplate('tpl.crs_members_print.html',true,true,'course');
02944
02945 $this->object->initCourseMemberObject();
02946
02947
02948
02949 if(count($members = $this->object->members_obj->getAssignedUsers()))
02950 {
02951 foreach($members as $member_id)
02952 {
02953 $member_data = $this->object->members_obj->getUserData($member_id);
02954
02955
02956 if($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false))
02957 {
02958 $tpl->setCurrentBlock("members_row");
02959 $tpl->setVariable("LOGIN",$tmp_obj->getLogin());
02960 $tpl->setVariable("FIRSTNAME",$tmp_obj->getFirstname());
02961 $tpl->setVariable("LASTNAME",$tmp_obj->getLastname());
02962
02963 switch($member_data["role"])
02964 {
02965 case $this->object->members_obj->ROLE_ADMIN:
02966 $role = $this->lng->txt("il_crs_admin");
02967 break;
02968
02969 case $this->object->members_obj->ROLE_TUTOR:
02970 $role = $this->lng->txt("il_crs_tutor");
02971 break;
02972
02973 case $this->object->members_obj->ROLE_MEMBER:
02974 $role = $this->lng->txt("il_crs_member");
02975 break;
02976 }
02977 $tpl->setVariable("ROLE",$role);
02978
02979 switch($member_data["status"])
02980 {
02981 case $this->object->members_obj->STATUS_NOTIFY:
02982 $status = $this->lng->txt("crs_notify");
02983 break;
02984
02985 case $this->object->members_obj->STATUS_NO_NOTIFY:
02986 $status = $this->lng->txt("crs_no_notify");
02987 break;
02988
02989 case $this->object->members_obj->STATUS_BLOCKED:
02990 $status = $this->lng->txt("crs_blocked");
02991 break;
02992
02993 case $this->object->members_obj->STATUS_UNBLOCKED:
02994 $status = $this->lng->txt("crs_unblocked");
02995 break;
02996 }
02997
02998 if($is_admin)
02999 {
03000 $tpl->setVariable("STATUS",$status);
03001 $tpl->setVariable("PASSED",$member_data['passed'] ?
03002 $this->lng->txt('crs_member_passed') :
03003 $this->lng->txt('crs_member_not_passed'));
03004 }
03005 $tpl->parseCurrentBlock();
03006 }
03007 }
03008 $tpl->setCurrentBlock("members");
03009
03010 $tpl->setVariable("MEMBERS_IMG_SOURCE",ilUtil::getImagePath('icon_usr_b.gif'));
03011 $tpl->setVariable("MEMBERS_IMG_ALT",$this->lng->txt('crs_header_members'));
03012 $tpl->setVariable("MEMBERS_TABLE_HEADER",$this->lng->txt('crs_members_title'));
03013 $tpl->setVariable("TXT_LOGIN",$this->lng->txt('username'));
03014 $tpl->setVariable("TXT_FIRSTNAME",$this->lng->txt('firstname'));
03015 $tpl->setVariable("TXT_LASTNAME",$this->lng->txt('lastname'));
03016 $tpl->setVariable("TXT_ROLE",$this->lng->txt('crs_role'));
03017
03018 if($is_admin)
03019 {
03020 $tpl->setVariable("TXT_STATUS",$this->lng->txt('crs_status'));
03021 $tpl->setVariable("TXT_PASSED",$this->lng->txt('crs_passed'));
03022 }
03023
03024 $tpl->parseCurrentBlock();
03025
03026 }
03027
03028 if(count($members = $this->object->members_obj->getSubscribers()))
03029 {
03030 foreach($members as $member_id)
03031 {
03032 $member_data = $this->object->members_obj->getSubscriberData($member_id);
03033
03034
03035 if($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false))
03036 {
03037 $tpl->setCurrentBlock("members_row");
03038 $tpl->setVariable("SLOGIN",$tmp_obj->getLogin());
03039 $tpl->setVariable("SFIRSTNAME",$tmp_obj->getFirstname());
03040 $tpl->setVariable("SLASTNAME",$tmp_obj->getLastname());
03041 $tpl->setVariable("STIME",$member_data["time"]);
03042 $tpl->parseCurrentBlock();
03043 }
03044 }
03045 $tpl->setCurrentBlock("members");
03046
03047 $tpl->setVariable("SUBSCRIBERS_IMG_SOURCE",ilUtil::getImagePath('icon_usr_b.gif'));
03048 $tpl->setVariable("SUBSCRIBERS_IMG_ALT",$this->lng->txt('crs_subscribers'));
03049 $tpl->setVariable("SUBSCRIBERS_TABLE_HEADER",$this->lng->txt('crs_subscribers'));
03050 $tpl->setVariable("TXT_SLOGIN",$this->lng->txt('username'));
03051 $tpl->setVariable("TXT_SFIRSTNAME",$this->lng->txt('firstname'));
03052 $tpl->setVariable("TXT_SLASTNAME",$this->lng->txt('lastname'));
03053 $tpl->setVariable("TXT_STIME",$this->lng->txt('crs_time'));
03054
03055 $tpl->parseCurrentBlock();
03056
03057 }
03058
03059 $tpl->setVariable("TITLE",$this->lng->txt('crs_members_print_title'));
03060 $tpl->setVariable("CSS_PATH",$this->tpl->tplPath);
03061
03062 $headline = $this->lng->txt('obj_crs').': '.$this->object->getTitle().
03063 ' -> '.$this->lng->txt('crs_header_members').' ('.ilFormat::formatUnixTime(time(),true).')';
03064
03065 $tpl->setVariable("HEADLINE",$headline);
03066
03067 $tpl->show();
03068 exit;
03069 }
03070
03071
03072 function listGroupingsObject()
03073 {
03074 include_once './course/classes/class.ilObjCourseGrouping.php';
03075
03076 global $rbacsystem;
03077
03078 if(!$rbacsystem->checkAccess("write", $this->ref_id))
03079 {
03080 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
03081 }
03082
03083 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.crs_groupings_list.html","course");
03084 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
03085
03086
03087 $this->tpl->setCurrentBlock("btn_cell");
03088 $this->ctrl->setParameterByClass('ilobjcoursegroupinggui','ref_id',$this->object->getRefId());
03089 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTargetByClass('ilobjcoursegroupinggui','create'));
03090 $this->tpl->setVariable("BTN_TXT",$this->lng->txt('crs_add_grouping'));
03091 $this->tpl->parseCurrentBlock();
03092
03093 if(ilObjCourseGrouping::_getAllGroupings($this->object->getRefId(),false))
03094 {
03095 $this->tpl->setCurrentBlock("btn_cell");
03096 $this->ctrl->setParameterByClass('ilobjcoursegroupinggui','ref_id',$this->object->getRefId());
03097 $this->tpl->setVariable("BTN_LINK",$this->ctrl->getLinkTargetByClass('ilobjcoursegroupinggui','otherSelectAssign'));
03098 $this->tpl->setVariable("BTN_TXT",$this->lng->txt('crs_other_groupings'));
03099 $this->tpl->parseCurrentBlock();
03100 }
03101
03102 if(!count($groupings = ilObjCourseGrouping::_getGroupings($this->object->getId())))
03103 {
03104 sendInfo($this->lng->txt('crs_no_groupings_assigned'));
03105
03106 return true;
03107 }
03108
03109 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03110 $this->tpl->setVariable("TBL_TITLE_IMG",ilUtil::getImagePath('icon_crs.gif'));
03111 $this->tpl->setVariable("TBL_TITLE_IMG_ALT",$this->lng->txt('crs_groupings'));
03112 $this->tpl->setVariable("TBL_TITLE",$this->lng->txt('crs_groupings'));
03113 $this->tpl->setVariable("HEADER_DESC",$this->lng->txt('description'));
03114 $this->tpl->setVariable("HEADER_UNAMBIGUOUSNESS",$this->lng->txt('unambiguousness'));
03115 $this->tpl->setVariable("HEADER_OPTIONS",$this->lng->txt('crs_options'));
03116 $this->tpl->setVariable("HEADER_ASSIGNED",$this->lng->txt('crs_grp_assigned_courses'));
03117 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath('arrow_downright.gif'));
03118 $this->tpl->setVariable("BTN_DELETE",$this->lng->txt('delete'));
03119
03120
03121 $counter = 0;
03122 foreach($groupings as $grouping_id)
03123 {
03124 $tmp_obj =& new ilObjCourseGrouping($grouping_id);
03125
03126 if(strlen($tmp_obj->getDescription()))
03127 {
03128 $this->tpl->setCurrentBlock("description");
03129 $this->tpl->setVariable("DESCRIPTION_GRP",$tmp_obj->getDescription());
03130 $this->tpl->parseCurrentBlock();
03131 }
03132 $this->tpl->setCurrentBlock("grouping_row");
03133 $this->tpl->setVariable("GRP_TITLE",$tmp_obj->getTitle());
03134 $this->tpl->setVariable("CHECK_GRP",ilUtil::formCheckbox(0,'grouping[]',$grouping_id));
03135 $this->tpl->setVariable("AMB_GRP",$this->lng->txt($tmp_obj->getUniqueField()));
03136 $this->tpl->setVariable("EDIT_IMG",ilUtil::getImagePath('edit.gif'));
03137 $this->tpl->setVariable("EDIT_ALT",$this->lng->txt('edit'));
03138 $this->tpl->setVariable("ROW_CLASS",ilUtil::switchColor(++$counter,'tblrow1','tblrow2'));
03139
03140 $this->ctrl->setParameterByClass('ilobjcoursegroupinggui','obj_id',$grouping_id);
03141 $this->tpl->setVariable("EDIT_LINK",$this->ctrl->getLinkTargetByClass('ilobjcoursegroupinggui','edit'));
03142
03143 if($num_courses = $tmp_obj->getCountAssignedCourses())
03144 {
03145 $this->tpl->setVariable("ASSIGNED_COURSES",$this->lng->txt('crs_grp_assigned_courses_info')." <b>$num_courses</b> ");
03146 }
03147 else
03148 {
03149 $this->tpl->setVariable("ASSIGNED_COURSES",$this->lng->txt('crs_grp_no_courses_assigned'));
03150 }
03151 $this->tpl->parseCurrentBlock();
03152 }
03153
03154 }
03155
03156 function askDeleteGroupingObject()
03157 {
03158 include_once './course/classes/class.ilObjCourseGrouping.php';
03159
03160 global $rbacsystem;
03161
03162 if(!$rbacsystem->checkAccess("write", $this->ref_id))
03163 {
03164 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
03165 }
03166 if(!count($_POST['grouping']))
03167 {
03168 sendInfo($this->lng->txt('crs_grouping_select_one'));
03169 $this->listGroupingsObject();
03170
03171 return false;
03172 }
03173
03174 sendInfo($this->lng->txt('crs_grouping_delete_sure'));
03175 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.crs_ask_delete_goupings.html","course");
03176
03177 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03178 $this->tpl->setVariable("TBL_TITLE_IMG",ilUtil::getImagePath('icon_crs.gif'));
03179 $this->tpl->setVariable("TBL_TITLE_IMG_ALT",$this->lng->txt('crs_groupings'));
03180 $this->tpl->setVariable("TBL_TITLE",$this->lng->txt('crs_groupings_ask_delete'));
03181 $this->tpl->setVariable("HEADER_DESC",$this->lng->txt('description'));
03182 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt('cancel'));
03183 $this->tpl->setVariable("BTN_DELETE",$this->lng->txt('delete'));
03184
03185
03186 $counter = 0;
03187 foreach($_POST['grouping'] as $grouping_id)
03188 {
03189 $tmp_obj =& new ilObjCourseGrouping($grouping_id);
03190
03191 if(strlen($tmp_obj->getDescription()))
03192 {
03193 $this->tpl->setCurrentBlock("description");
03194 $this->tpl->setVariable("DESCRIPTION_GRP",$tmp_obj->getDescription());
03195 $this->tpl->parseCurrentBlock();
03196 }
03197 $this->tpl->setCurrentBlock("grouping_row");
03198 $this->tpl->setVariable("GRP_TITLE",$tmp_obj->getTitle());
03199 $this->tpl->setVariable("ROW_CLASS",ilUtil::switchColor(++$counter,'tblrow1','tblrow2'));
03200 $this->tpl->parseCurrentBlock();
03201 }
03202 $_SESSION['crs_grouping_del'] = $_POST['grouping'];
03203 }
03204
03205 function deleteGroupingObject()
03206 {
03207 include_once './course/classes/class.ilObjCourseGrouping.php';
03208
03209 global $rbacsystem;
03210
03211 if(!$rbacsystem->checkAccess("write", $this->ref_id))
03212 {
03213 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
03214 }
03215 if(!count($_SESSION['crs_grouping_del']))
03216 {
03217 sendInfo('No grouping selected');
03218 $this->listGroupingsObject();
03219
03220 return false;
03221 }
03222 foreach($_SESSION['crs_grouping_del'] as $grouping_id)
03223 {
03224 $tmp_obj =& new ilObjCourseGrouping($grouping_id);
03225 $tmp_obj->delete();
03226 }
03227 sendInfo($this->lng->txt('crs_grouping_deleted'));
03228 $this->listGroupingsObject();
03229
03230 unset($_SESSION['crs_grouping_del']);
03231 return true;
03232 }
03233
03234
03235 function &__initTableGUI()
03236 {
03237 include_once "./classes/class.ilTableGUI.php";
03238
03239 return new ilTableGUI(0,false);
03240 }
03241
03242
03243 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
03244 {
03245 switch($from)
03246 {
03247 case "members":
03248 $offset = $_GET["update_members"] ? $_GET["offset"] : 0;
03249 $order = $_GET["update_members"] ? $_GET["sort_by"] : 'login';
03250 $direction = $_GET["update_members"] ? $_GET["sort_order"] : '';
03251 break;
03252
03253 case "subscribers":
03254 $offset = $_GET["update_subscribers"] ? $_GET["offset"] : 0;
03255 $order = $_GET["update_subscribers"] ? $_GET["sort_by"] : 'sub_time';
03256 $direction = $_GET["update_subscribers"] ? $_GET["sort_order"] : '';
03257 break;
03258
03259 case "group":
03260 $offset = $_GET["offset"];
03261 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
03262 $direction = $_GET["sort_order"];
03263 break;
03264
03265 case "role":
03266 $offset = $_GET["offset"];
03267 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
03268 $direction = $_GET["sort_order"];
03269 break;
03270
03271 default:
03272 $offset = $_GET["offset"];
03273
03274 if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
03275 {
03276 $_GET["sort_by"] = "login";
03277 }
03278 $order = $_GET["sort_by"];
03279 $direction = $_GET["sort_order"];
03280 break;
03281 }
03282
03283 $tbl->setOrderColumn($order);
03284 $tbl->setOrderDirection($direction);
03285 $tbl->setOffset($offset);
03286 $tbl->setLimit($_GET["limit"]);
03287 $tbl->setMaxCount(count($result_set));
03288 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
03289 $tbl->setData($result_set);
03290 }
03291
03292
03293
03294 function __showEditMemberTable($a_result_set)
03295 {
03296 $tbl =& $this->__initTableGUI();
03297 $tpl =& $tbl->getTemplateObject();
03298
03299
03300 $tpl->setCurrentBlock("tbl_form_header");
03301 $this->ctrl->setParameter($this,"member_id",(int) $_GET["member_id"]);
03302 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03303 $tpl->parseCurrentBlock();
03304
03305 $tpl->setCurrentBlock("tbl_action_btn");
03306 $tpl->setVariable("BTN_NAME","members");
03307 $tpl->setVariable("BTN_VALUE",$this->lng->txt("cancel"));
03308 $tpl->parseCurrentBlock();
03309
03310 $tpl->setCurrentBlock("tbl_action_btn");
03311 $tpl->setVariable("BTN_NAME","updateMember");
03312 $tpl->setVariable("BTN_VALUE",$this->lng->txt("save"));
03313 $tpl->parseCurrentBlock();
03314
03315 $tpl->setCurrentBlock("tbl_action_row");
03316 $tpl->setVariable("COLUMN_COUNTS",5);
03317 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03318 $tpl->parseCurrentBlock();
03319
03320
03321 $tbl->setTitle($this->lng->txt("crs_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("crs_header_members"));
03322 $tbl->setHeaderNames(array($this->lng->txt("username"),
03323 $this->lng->txt("firstname"),
03324 $this->lng->txt("lastname"),
03325 $this->lng->txt('crs_passed'),
03326 $this->lng->txt("crs_role_status")));
03327 $tbl->setHeaderVars(array("login",
03328 "firstname",
03329 "lastname",
03330 "passed",
03331 "role"),
03332 array("ref_id" => $this->object->getRefId(),
03333 "cmd" => "members",
03334 "cmdClass" => "ilobjcoursegui",
03335 "cmdNode" => $_GET["cmdNode"]));
03336
03337 $tbl->setColumnWidth(array("20%","20%","20%","20%","20%"));
03338
03339
03340 $this->__setTableGUIBasicData($tbl,$a_result_set);
03341 $tbl->disable('sort');
03342 $tbl->render();
03343
03344 $this->tpl->setVariable("EDIT_MEMBER_TABLE",$tbl->tpl->get());
03345 }
03346
03347 function __showSearchUserTable($a_result_set,$a_user_ids = NULL,$a_cmd = "search")
03348 {
03349 $return_to = "searchUser";
03350
03351 if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
03352 {
03353 $return_to = "search";
03354 }
03355
03356 $this->__showButton($return_to,$this->lng->txt("back"));
03357
03358
03359 $tbl =& $this->__initTableGUI();
03360 $tpl =& $tbl->getTemplateObject();
03361
03362
03363
03364 $tpl->setCurrentBlock("tbl_form_header");
03365 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03366 $tpl->parseCurrentBlock();
03367
03368 $tpl->setCurrentBlock("tbl_action_btn");
03369 $tpl->setVariable("BTN_NAME","addUser");
03370 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
03371 $tpl->parseCurrentBlock();
03372
03373 $tpl->setCurrentBlock("plain_button");
03374 $tpl->setVariable("PBTN_NAME",'searchUser');
03375 $tpl->setVariable("PBTN_VALUE",$this->lng->txt('append_search'));
03376 $tpl->parseCurrentBlock();
03377
03378 $tpl->setCurrentBlock("plain_button");
03379 $tpl->setVariable("PBTN_NAME",'cancelSearch');
03380 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("crs_new_search"));
03381 $tpl->parseCurrentBlock();
03382
03383 if (!empty($a_user_ids))
03384 {
03385
03386 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
03387 $tpl->setVariable("JS_VARNAME","user");
03388 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
03389 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
03390 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
03391 $tpl->parseCurrentBlock();
03392 }
03393
03394 $tpl->setCurrentBlock("tbl_action_row");
03395 $tpl->setVariable("COLUMN_COUNTS",5);
03396 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03397 $tpl->parseCurrentBlock();
03398
03399 $tbl->setTitle($this->lng->txt("crs_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("crs_header_edit_members"));
03400 $tbl->setHeaderNames(array("",
03401 $this->lng->txt("username"),
03402 $this->lng->txt("firstname"),
03403 $this->lng->txt("lastname")));
03404 $tbl->setHeaderVars(array("",
03405 "login",
03406 "firstname",
03407 "lastname"),
03408 array("ref_id" => $this->object->getRefId(),
03409 "cmd" => $a_cmd,
03410 "cmdClass" => "ilobjcoursegui",
03411 "cmdNode" => $_GET["cmdNode"]));
03412
03413 $tbl->setColumnWidth(array("","33%","33%","33%"));
03414
03415 $this->__setTableGUIBasicData($tbl,$a_result_set);
03416 $tbl->render();
03417
03418 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
03419
03420 return true;
03421 }
03422
03423 function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
03424 {
03425 $this->__showButton('searchUser',$this->lng->txt("back"));
03426
03427 $tbl =& $this->__initTableGUI();
03428 $tpl =& $tbl->getTemplateObject();
03429
03430 $tpl->setCurrentBlock("tbl_form_header");
03431 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03432 $tpl->parseCurrentBlock();
03433
03434 $tpl->setCurrentBlock("tbl_action_btn");
03435 $tpl->setVariable("BTN_NAME","listUsersGroup");
03436 $tpl->setVariable("BTN_VALUE",$this->lng->txt("crs_list_users"));
03437 $tpl->parseCurrentBlock();
03438
03439 if (!empty($a_grp_ids))
03440 {
03441
03442 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
03443 $tpl->setVariable("JS_VARNAME","group");
03444 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_grp_ids));
03445 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
03446 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
03447 $tpl->parseCurrentBlock();
03448 }
03449
03450 $tpl->setCurrentBlock("tbl_action_row");
03451 $tpl->setVariable("COLUMN_COUNTS",5);
03452 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03453 $tpl->parseCurrentBlock();
03454
03455 $tbl->setTitle($this->lng->txt("crs_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("crs_header_edit_members"));
03456 $tbl->setHeaderNames(array("",
03457 $this->lng->txt("obj_grp"),
03458 $this->lng->txt("crs_count_members")));
03459 $tbl->setHeaderVars(array("",
03460 "title",
03461 "nr_members"),
03462 array("ref_id" => $this->object->getRefId(),
03463 "cmd" => "search",
03464 "cmdClass" => "ilobjcoursegui",
03465 "cmdNode" => $_GET["cmdNode"]));
03466
03467 $tbl->setColumnWidth(array("","80%","19%"));
03468
03469
03470 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
03471 $tbl->render();
03472
03473 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
03474
03475 return true;
03476 }
03477
03478 function __showSearchRoleTable($a_result_set,$a_role_ids)
03479 {
03480 $this->__showButton('searchUser',$this->lng->txt("back"));
03481
03482 $tbl =& $this->__initTableGUI();
03483 $tpl =& $tbl->getTemplateObject();
03484
03485 $tpl->setCurrentBlock("tbl_form_header");
03486 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03487 $tpl->parseCurrentBlock();
03488
03489 $tpl->setCurrentBlock("tbl_action_btn");
03490 $tpl->setVariable("BTN_NAME","searchUser");
03491 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
03492 $tpl->parseCurrentBlock();
03493
03494 $tpl->setCurrentBlock("tbl_action_btn");
03495 $tpl->setVariable("BTN_NAME","listUsersRole");
03496 $tpl->setVariable("BTN_VALUE",$this->lng->txt("crs_list_users"));
03497 $tpl->parseCurrentBlock();
03498
03499 if (!empty($a_role_ids))
03500 {
03501
03502 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
03503 $tpl->setVariable("JS_VARNAME","role");
03504 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_role_ids));
03505 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
03506 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
03507 $tpl->parseCurrentBlock();
03508 }
03509
03510 $tpl->setCurrentBlock("tbl_action_row");
03511 $tpl->setVariable("COLUMN_COUNTS",5);
03512 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03513 $tpl->parseCurrentBlock();
03514
03515 $tbl->setTitle($this->lng->txt("crs_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("crs_header_edit_members"));
03516 $tbl->setHeaderNames(array("",
03517 $this->lng->txt("obj_grp"),
03518 $this->lng->txt("crs_count_members")));
03519 $tbl->setHeaderVars(array("",
03520 "title",
03521 "nr_members"),
03522 array("ref_id" => $this->object->getRefId(),
03523 "cmd" => "search",
03524 "cmdClass" => "ilobjcoursegui",
03525 "cmdNode" => $_GET["cmdNode"]));
03526
03527 $tbl->setColumnWidth(array("","80%","19%"));
03528
03529
03530 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
03531 $tbl->render();
03532
03533 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
03534
03535 return true;
03536 }
03537
03538 function __showDeleteMembersTable($a_result_set)
03539 {
03540 $tbl =& $this->__initTableGUI();
03541 $tpl =& $tbl->getTemplateObject();
03542
03543 $tpl->setCurrentBlock("tbl_form_header");
03544 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03545 $tpl->parseCurrentBlock();
03546
03547 $tpl->setCurrentBlock("tbl_action_btn");
03548 $tpl->setVariable("BTN_NAME","cancelMember");
03549 $tpl->setVariable("BTN_VALUE",$this->lng->txt("cancel"));
03550 $tpl->parseCurrentBlock();
03551
03552 $tpl->setCurrentBlock("tbl_action_btn");
03553 $tpl->setVariable("BTN_NAME","removeMembers");
03554 $tpl->setVariable("BTN_VALUE",$this->lng->txt("crs_delete_member"));
03555 $tpl->parseCurrentBlock();
03556
03557 $tpl->setCurrentBlock("tbl_action_row");
03558 $tpl->setVariable("COLUMN_COUNTS",4);
03559 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03560 $tpl->parseCurrentBlock();
03561
03562 $tbl->setTitle($this->lng->txt("crs_header_delete_members"),"icon_usr_b.gif",$this->lng->txt("crs_header_delete_members"));
03563 $tbl->setHeaderNames(array($this->lng->txt("username"),
03564 $this->lng->txt("firstname"),
03565 $this->lng->txt("lastname"),
03566 $this->lng->txt("role")));
03567 $tbl->setHeaderVars(array("login",
03568 "firstname",
03569 "lastname",
03570 "role"),
03571 array("ref_id" => $this->object->getRefId(),
03572 "cmd" => "members",
03573 "cmdClass" => "ilobjcoursegui",
03574 "cmdNode" => $_GET["cmdNode"]));
03575
03576 $tbl->setColumnWidth(array("25%","25%","25%","25%"));
03577
03578 $this->__setTableGUIBasicData($tbl,$a_result_set);
03579 $tbl->disable('sort');
03580 $tbl->render();
03581
03582 $this->tpl->setVariable("EDIT_MEMBER_TABLE",$tbl->tpl->get());
03583
03584 return true;
03585 }
03586
03587 function __showRemoveFromWaitingListTable($a_result_set)
03588 {
03589 $tbl =& $this->__initTableGUI();
03590 $tpl =& $tbl->getTemplateObject();
03591
03592 $tpl->setCurrentBlock("tbl_form_header");
03593 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03594 $tpl->parseCurrentBlock();
03595 $tpl->setCurrentBlock("tbl_action_btn");
03596 $tpl->setVariable("BTN_NAME","cancelMember");
03597 $tpl->setVariable("BTN_VALUE",$this->lng->txt("cancel"));
03598 $tpl->parseCurrentBlock();
03599 $tpl->setCurrentBlock("tbl_action_btn");
03600 $tpl->setVariable("BTN_NAME","performRemoveFromWaitingList");
03601 $tpl->setVariable("BTN_VALUE",$this->lng->txt("delete"));
03602 $tpl->parseCurrentBlock();
03603 $tpl->setCurrentBlock("tbl_action_row");
03604 $tpl->setVariable("COLUMN_COUNTS",4);
03605 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03606 $tpl->parseCurrentBlock();
03607
03608 $tbl->setTitle($this->lng->txt("crs_header_remove_from_waiting_list"),"icon_usr_b.gif",
03609 $this->lng->txt("crs_header_remove_from_waiting_list"));
03610 $tbl->setHeaderNames(array($this->lng->txt("username"),
03611 $this->lng->txt("firstname"),
03612 $this->lng->txt("lastname"),
03613 $this->lng->txt("crs_time")));
03614 $tbl->setHeaderVars(array("login",
03615 "firstname",
03616 "lastname",
03617 "sub_time"),
03618 array("ref_id" => $this->object->getRefId(),
03619 "cmd" => "members",
03620 "cmdClass" => "ilobjcoursegui",
03621 "cmdNode" => $_GET["cmdNode"]));
03622
03623 $tbl->setColumnWidth(array("25%","25%","25%","25%"));
03624
03625 $this->__setTableGUIBasicData($tbl,$a_result_set);
03626 $tbl->render();
03627
03628 $this->tpl->setVariable("EDIT_MEMBER_TABLE",$tbl->tpl->get());
03629
03630 return true;
03631 }
03632
03633 function __showDeleteSubscriberTable($a_result_set)
03634 {
03635 $tbl =& $this->__initTableGUI();
03636 $tpl =& $tbl->getTemplateObject();
03637
03638 $tpl->setCurrentBlock("tbl_form_header");
03639 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03640 $tpl->parseCurrentBlock();
03641 $tpl->setCurrentBlock("tbl_action_btn");
03642 $tpl->setVariable("BTN_NAME","cancelMember");
03643 $tpl->setVariable("BTN_VALUE",$this->lng->txt("cancel"));
03644 $tpl->parseCurrentBlock();
03645 $tpl->setCurrentBlock("tbl_action_btn");
03646 $tpl->setVariable("BTN_NAME","removeSubscribers");
03647 $tpl->setVariable("BTN_VALUE",$this->lng->txt("delete"));
03648 $tpl->parseCurrentBlock();
03649 $tpl->setCurrentBlock("tbl_action_row");
03650 $tpl->setVariable("COLUMN_COUNTS",4);
03651 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
03652 $tpl->parseCurrentBlock();
03653
03654 $tbl->setTitle($this->lng->txt("crs_header_delete_subscribers"),"icon_usr_b.gif",$this->lng->txt("crs_header_delete_members"));
03655 $tbl->setHeaderNames(array($this->lng->txt("username"),
03656 $this->lng->txt("firstname"),
03657 $this->lng->txt("lastname"),
03658 $this->lng->txt("crs_time")));
03659 $tbl->setHeaderVars(array("login",
03660 "firstname",
03661 "lastname",
03662 "sub_time"),
03663 array("ref_id" => $this->object->getRefId(),
03664 "cmd" => "members",
03665 "cmdClass" => "ilobjcoursegui",
03666 "cmdNode" => $_GET["cmdNode"]));
03667
03668 $tbl->setColumnWidth(array("25%","25%","25%","25%"));
03669
03670 $this->__setTableGUIBasicData($tbl,$a_result_set);
03671 $tbl->render();
03672
03673 $this->tpl->setVariable("EDIT_MEMBER_TABLE",$tbl->tpl->get());
03674
03675 return true;
03676 }
03677
03678 function __showArchivesTable($a_result_set,$a_download_perm)
03679 {
03680 $tbl =& $this->__initTableGUI();
03681 $tpl =& $tbl->getTemplateObject();
03682
03683
03684 $tpl->setCurrentBlock("tbl_form_header");
03685
03686 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03687 $tpl->parseCurrentBlock();
03688
03689 if($a_download_perm)
03690 {
03691 $tpl->setCurrentBlock("tbl_action_row");
03692 $tpl->setVariable("COLUMN_COUNTS",6);
03693 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
03694
03695 #$tpl->setCurrentBlock("tbl_action_btn");
03696 #$tpl->setVariable("BTN_NAME","deleteArchives");
03697 #$tpl->setVariable("BTN_VALUE",$this->lng->txt("delete"));
03698 #$tpl->parseCurrentBlock();
03699
03700 $tpl->setCurrentBlock("tbl_action_btn");
03701 $tpl->setVariable("BTN_NAME","downloadArchives");
03702 $tpl->setVariable("BTN_VALUE",$this->lng->txt("download"));
03703 $tpl->parseCurrentBlock();
03704
03705 $tpl->setCurrentBlock("tbl_action_row");
03706 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
03707 $tpl->parseCurrentBlock();
03708 }
03709 $tbl->setTitle($this->lng->txt("crs_header_archives"),"icon_crs.gif",$this->lng->txt("crs_header_archives"));
03710
03711 if($a_download_perm)
03712 {
03713 $header_names = array('',
03714 $this->lng->txt("crs_file_name"),
03715 $this->lng->txt("crs_create_date"),
03716 $this->lng->txt("crs_size"),
03717 $this->lng->txt("crs_archive_lang"),
03718 $this->lng->txt("crs_archive_type"));
03719
03720 $header_vars = array("",
03721 "name",
03722 "type",
03723 "date",
03724 "lang",
03725 "size");
03726 $column_width = array("4%","26%","20%","10%","20%");
03727 }
03728 else
03729 {
03730 $header_names = array($this->lng->txt("crs_file_name"),
03731 $this->lng->txt("crs_create_date"),
03732 $this->lng->txt("crs_size"),
03733 $this->lng->txt("crs_archive_lang"),
03734 $this->lng->txt("crs_archive_type"));
03735
03736 $header_vars = array("name",
03737 "type",
03738 "date",
03739 "lang",
03740 "size");
03741 $column_width = array("28%","22%","10%","20%");
03742 }
03743
03744 $tbl->setHeaderNames($header_names);
03745 $tbl->setHeaderVars($header_vars,
03746 array("ref_id" => $this->object->getRefId(),
03747 "cmd" => "archive",
03748 "cmdClass" => "ilobjcoursegui",
03749 "cmdNode" => $_GET["cmdNode"]));
03750 $tbl->setColumnWidth($column_width);
03751
03752
03753 $this->__setTableGUIBasicData($tbl,$a_result_set,"archive");
03754 $tbl->render();
03755
03756 $this->tpl->setVariable("ARCHIVE_TABLE",$tbl->tpl->get());
03757
03758 return true;
03759 }
03760 function __showArchivesAdminTable($a_result_set)
03761 {
03762 #$actions = array("deleteArchivesObject" => $this->lng->txt("crs_delete_archive"));
03763
03764 $tbl =& $this->__initTableGUI();
03765 $tpl =& $tbl->getTemplateObject();
03766
03767
03768 $tpl->setCurrentBlock("tbl_form_header");
03769
03770 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03771 $tpl->parseCurrentBlock();
03772
03773 $tpl->setCurrentBlock("tbl_action_row");
03774
03775 $tpl->setVariable("COLUMN_COUNTS",6);
03776 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
03777
03778 $tpl->setCurrentBlock("tbl_action_btn");
03779 #$tpl->setVariable("SELECT_ACTION",ilUtil::formSelect(1,"action",$actions,false,true));
03780 $tpl->setVariable("BTN_NAME","deleteArchives");
03781 $tpl->setVariable("BTN_VALUE",$this->lng->txt("delete"));
03782 $tpl->parseCurrentBlock();
03783
03784 $tpl->setCurrentBlock("tbl_action_btn");
03785 $tpl->setVariable("BTN_NAME","downloadArchives");
03786 $tpl->setVariable("BTN_VALUE",$this->lng->txt("download"));
03787 $tpl->parseCurrentBlock();
03788
03789 $tpl->setCurrentBlock("tbl_action_row");
03790 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
03791 $tpl->parseCurrentBlock();
03792
03793 $tbl->setTitle($this->lng->txt("crs_header_archives"),"icon_crs.gif",$this->lng->txt("crs_header_archives"));
03794 $tbl->setHeaderNames(array('',
03795 $this->lng->txt("crs_file_name"),
03796 $this->lng->txt("crs_create_date"),
03797 $this->lng->txt("crs_size"),
03798 $this->lng->txt("crs_archive_lang"),
03799 $this->lng->txt("crs_archive_type")));
03800 $tbl->setHeaderVars(array("",
03801 "name",
03802 "type",
03803 "date",
03804 "language",
03805 "size"),
03806 array("ref_id" => $this->object->getRefId(),
03807 "cmd" => "archiveAdmin",
03808 "cmdClass" => "ilobjcoursegui",
03809 "cmdNode" => $_GET["cmdNode"]));
03810 $tbl->setColumnWidth(array("4%","26%","20%","10%","20%"));
03811
03812
03813 $this->__setTableGUIBasicData($tbl,$a_result_set,"archive");
03814 $tbl->render();
03815
03816 $this->tpl->setVariable("ARCHIVE_TABLE",$tbl->tpl->get());
03817
03818 return true;
03819 }
03820
03821 function __showMembersTable($a_result_set,$a_member_ids = NULL,$is_admin = true)
03822 {
03823 $actions = array("deleteMembersObject" => $this->lng->txt("crs_delete_member"));
03824
03825 $tbl =& $this->__initTableGUI();
03826 $tpl =& $tbl->getTemplateObject();
03827
03828
03829 $tpl->setCurrentBlock("tbl_form_header");
03830
03831 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03832 $tpl->parseCurrentBlock();
03833
03834 $tpl->setCurrentBlock("tbl_action_row");
03835
03836 #$tpl->setCurrentBlock("input_text");
03837 #$tpl->setVariable("PB_TXT_NAME",'member');
03838 #$tpl->parseCurrentBlock();
03839
03840 if (!empty($a_member_ids) and $is_admin)
03841 {
03842
03843 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
03844 $tpl->setVariable("JS_VARNAME","member");
03845 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_member_ids));
03846 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
03847 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
03848 $tpl->parseCurrentBlock();
03849 }
03850
03851 $tbl->setTitle($this->lng->txt("crs_header_members"),"icon_usr_b.gif",$this->lng->txt("crs_header_members"));
03852
03853 if($is_admin)
03854 {
03855 $tpl->setVariable("COLUMN_COUNTS",$is_admin ? 8 : 5);
03856 $tpl->setCurrentBlock("plain_button");
03857 $tpl->setVariable("PBTN_NAME","addUser");
03858 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("crs_add_member"));
03859 $tpl->parseCurrentBlock();
03860 $tpl->setCurrentBlock("plain_buttons");
03861 $tpl->parseCurrentBlock();
03862
03863
03864 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
03865
03866 $tpl->setCurrentBlock("tbl_action_select");
03867 $tpl->setVariable("SELECT_ACTION",ilUtil::formSelect(1,"action",$actions,false,true));
03868 $tpl->setVariable("BTN_NAME","gateway");
03869 $tpl->setVariable("BTN_VALUE",$this->lng->txt("execute"));
03870 $tpl->parseCurrentBlock();
03871 $tpl->setCurrentBlock("tbl_action_row");
03872 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
03873 $tpl->parseCurrentBlock();
03874
03875 $tbl->setHeaderNames(array('',
03876 $this->lng->txt("username"),
03877 $this->lng->txt("firstname"),
03878 $this->lng->txt("lastname"),
03879 $this->lng->txt("crs_role"),
03880 $this->lng->txt("crs_status"),
03881 $this->lng->txt("crs_passed"),
03882 $this->lng->txt("crs_options")));
03883 $tbl->setHeaderVars(array("",
03884 "login",
03885 "firstname",
03886 "lastname",
03887 "role",
03888 "status",
03889 "passed",
03890 "options"),
03891 array("ref_id" => $this->object->getRefId(),
03892 "cmd" => "members",
03893 "update_members" => 1,
03894 "cmdClass" => "ilobjcoursegui",
03895 "cmdNode" => $_GET["cmdNode"]));
03896 $tbl->setColumnWidth(array("","15%","15%","15%","15%","15%","15%"));
03897 $tpl->setCurrentBlock('tbl_footer_info');
03898 $tpl->setVariable("INFO_TEXT",$this->object->members_obj->getCountMembers().' '.$this->lng->txt('crs_members_footer').', '.
03899 $this->object->members_obj->getCountPassed().' '.$this->lng->txt('crs_members_footer_passed'));
03900 $tpl->parseCurrentBlock();
03901 }
03902 else
03903 {
03904 $tbl->setHeaderNames(array($this->lng->txt("username"),
03905 $this->lng->txt("firstname"),
03906 $this->lng->txt("lastname"),
03907 $this->lng->txt("crs_role"),
03908 $this->lng->txt("crs_options")));
03909 $tbl->setHeaderVars(array("login",
03910 "firstname",
03911 "lastname",
03912 "role",
03913 "options"),
03914 array("ref_id" => $this->object->getRefId(),
03915 "cmd" => "members",
03916 "update_members" => 1,
03917 "cmdClass" => "ilobjcoursegui",
03918 "cmdNode" => $_GET["cmdNode"]));
03919 $tbl->setColumnWidth(array("25%","25%","25%","25%"));
03920 $tpl->setCurrentBlock('tbl_footer_info');
03921 $tpl->setVariable("INFO_TEXT",$this->object->members_obj->getCountMembers().' '.$this->lng->txt('crs_members_footer'));
03922 $tpl->parseCurrentBlock();
03923 }
03924
03925 $this->__setTableGUIBasicData($tbl,$a_result_set,"members");
03926 $tbl->render();
03927
03928 $this->tpl->setVariable("MEMBER_TABLE",$tbl->tpl->get());
03929
03930 return true;
03931 }
03932
03933 function __showSubscribersTable($a_result_set,$a_subscriber_ids = NULL)
03934 {
03935 $actions = array("addSubscribers" => $this->lng->txt("crs_add_subscribers"),
03936 "deleteSubscribers" => $this->lng->txt("crs_delete_subscribers"));
03937
03938 $tbl =& $this->__initTableGUI();
03939 $tpl =& $tbl->getTemplateObject();
03940
03941
03942 $tpl->setCurrentBlock("tbl_form_header");
03943
03944 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03945 $tpl->parseCurrentBlock();
03946
03947
03948 $tpl->setCurrentBlock("tbl_action_row");
03949
03950
03951 $tpl->setCurrentBlock("plain_button");
03952 $tpl->setVariable("PBTN_NAME","autoFill");
03953 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("crs_auto_fill"));
03954 $tpl->parseCurrentBlock();
03955 $tpl->setCurrentBlock("plain_buttons");
03956 $tpl->parseCurrentBlock();
03957
03958 $tpl->setVariable("COLUMN_COUNTS",5);
03959
03960 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
03961
03962 $tpl->setCurrentBlock("tbl_action_select");
03963 $tpl->setVariable("SELECT_ACTION",ilUtil::formSelect(1,"action",$actions,false,true));
03964 $tpl->setVariable("BTN_NAME","gateway");
03965 $tpl->setVariable("BTN_VALUE",$this->lng->txt("execute"));
03966 $tpl->parseCurrentBlock();
03967
03968 if (!empty($a_subscriber_ids))
03969 {
03970
03971 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
03972 $tpl->setVariable("JS_VARNAME","subscriber");
03973 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_subscriber_ids));
03974 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
03975 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
03976 $tpl->parseCurrentBlock();
03977 }
03978
03979 $tpl->setCurrentBlock("tbl_action_row");
03980 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
03981 $tpl->parseCurrentBlock();
03982
03983
03984 $tbl->setTitle($this->lng->txt("crs_subscribers"),"icon_usr_b.gif",$this->lng->txt("crs_header_members"));
03985 $tbl->setHeaderNames(array('',
03986 $this->lng->txt("username"),
03987 $this->lng->txt("firstname"),
03988 $this->lng->txt("lastname"),
03989 $this->lng->txt("crs_time")));
03990 $tbl->setHeaderVars(array("",
03991 "login",
03992 "firstname",
03993 "lastname",
03994 "sub_time"),
03995 array("ref_id" => $this->object->getRefId(),
03996 "cmd" => "members",
03997 "update_subscribers" => 1,
03998 "cmdClass" => "ilobjcoursegui",
03999 "cmdNode" => $_GET["cmdNode"]));
04000 $tbl->setColumnWidth(array("4%","24%","24%","24%","24%"));
04001
04002 $this->__setTableGUIBasicData($tbl,$a_result_set,"subscribers");
04003 $tbl->render();
04004
04005 $this->tpl->setVariable("SUBSCRIBER_TABLE",$tbl->tpl->get());
04006
04007 return true;
04008 }
04009 function __showWaitingListTable($a_result_set,$a_waiting_list_ids = NULL)
04010 {
04011 $actions = array("addFromWaitingList" => $this->lng->txt("crs_add_subscribers"),
04012 "removeFromWaitingList" => $this->lng->txt("crs_delete_from_waiting_list"));
04013
04014 $tbl =& $this->__initTableGUI();
04015 $tpl =& $tbl->getTemplateObject();
04016
04017
04018 $tpl->setCurrentBlock("tbl_form_header");
04019
04020 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
04021 $tpl->parseCurrentBlock();
04022
04023
04024 $tpl->setCurrentBlock("tbl_action_row");
04025
04026 $tpl->setVariable("COLUMN_COUNTS",5);
04027
04028 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
04029
04030 $tpl->setCurrentBlock("tbl_action_select");
04031 $tpl->setVariable("SELECT_ACTION",ilUtil::formSelect(1,"action",$actions,false,true));
04032 $tpl->setVariable("BTN_NAME","gateway");
04033 $tpl->setVariable("BTN_VALUE",$this->lng->txt("execute"));
04034 $tpl->parseCurrentBlock();
04035
04036 if (!empty($a_waiting_list_ids))
04037 {
04038
04039 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
04040 $tpl->setVariable("JS_VARNAME","waiting_list");
04041 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_waiting_list_ids));
04042 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
04043 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
04044 $tpl->parseCurrentBlock();
04045 }
04046
04047 $tpl->setCurrentBlock("tbl_action_row");
04048 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
04049 $tpl->parseCurrentBlock();
04050
04051
04052 $tbl->setTitle($this->lng->txt("crs_waiting_list"),"icon_usr_b.gif",$this->lng->txt("crs_waiting_list"));
04053 $tbl->setHeaderNames(array('',
04054 $this->lng->txt("username"),
04055 $this->lng->txt("firstname"),
04056 $this->lng->txt("lastname"),
04057 $this->lng->txt("crs_time")));
04058 $tbl->setHeaderVars(array("",
04059 "login",
04060 "firstname",
04061 "lastname",
04062 "sub_time"),
04063 array("ref_id" => $this->object->getRefId(),
04064 "cmd" => "members",
04065 "update_subscribers" => 1,
04066 "cmdClass" => "ilobjcoursegui",
04067 "cmdNode" => $_GET["cmdNode"]));
04068 $tbl->setColumnWidth(array("4%","24%","24%","24%","24%"));
04069
04070 $this->__setTableGUIBasicData($tbl,$a_result_set,"subscribers");
04071 $tbl->render();
04072
04073 $this->tpl->setVariable("SUBSCRIBER_TABLE",$tbl->tpl->get());
04074
04075 return true;
04076 }
04077
04078 function __search($a_search_string,$a_search_for)
04079 {
04080 include_once("./classes/class.ilSearch.php");
04081
04082 $this->lng->loadLanguageModule("content");
04083
04084 $search =& new ilSearch($_SESSION["AccountId"]);
04085 $search->setPerformUpdate(false);
04086 $search->setMinWordLength(1);
04087 $search->setSearchString($a_search_string);
04088 $search->setCombination("and");
04089 $search->setSearchFor(array(0 => $a_search_for));
04090 $search->setSearchType('new');
04091
04092 if($search->validate($message))
04093 {
04094 $search->performSearch();
04095 }
04096 else
04097 {
04098 sendInfo($message,true);
04099 $this->ctrl->redirect($this,"searchUser");
04100 }
04101
04102 if($a_search_for == 'usr')
04103 {
04104 $this->__appendToStoredResults($search->getResultByType($a_search_for));
04105 return $_SESSION['crs_usr_search_result'];
04106 }
04107
04108 return $search->getResultByType($a_search_for);
04109 }
04110
04111
04112 function __getDateSelect($a_type,$a_varname,$a_selected)
04113 {
04114 switch($a_type)
04115 {
04116 case "minute":
04117 for($i=0;$i<=60;$i++)
04118 {
04119 $days[$i] = $i < 10 ? "0".$i : $i;
04120 }
04121 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
04122
04123 case "hour":
04124 for($i=0;$i<24;$i++)
04125 {
04126 $days[$i] = $i < 10 ? "0".$i : $i;
04127 }
04128 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
04129
04130 case "day":
04131 for($i=1;$i<32;$i++)
04132 {
04133 $days[$i] = $i < 10 ? "0".$i : $i;
04134 }
04135 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
04136
04137 case "month":
04138 for($i=1;$i<13;$i++)
04139 {
04140 $month[$i] = $i < 10 ? "0".$i : $i;
04141 }
04142 return ilUtil::formSelect($a_selected,$a_varname,$month,false,true);
04143
04144 case "year":
04145 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
04146 {
04147 $year[$i] = $i;
04148 }
04149 return ilUtil::formSelect($a_selected,$a_varname,$year,false,true);
04150 }
04151 }
04152
04153 function __toUnix($a_time_arr)
04154 {
04155 return mktime($a_time_arr["hour"],
04156 $a_time_arr["minute"],
04157 $a_time_arr["second"],
04158 $a_time_arr["month"],
04159 $a_time_arr["day"],
04160 $a_time_arr["year"]);
04161 }
04162 function __unsetSessionVariables()
04163 {
04164 unset($_SESSION["crs_delete_member_ids"]);
04165 unset($_SESSION["crs_delete_subscriber_ids"]);
04166 unset($_SESSION["crs_search_str"]);
04167 unset($_SESSION["crs_search_for"]);
04168 unset($_SESSION["crs_group"]);
04169 unset($_SESSION["crs_role"]);
04170 unset($_SESSION["crs_archives"]);
04171 }
04172
04173 function mailMembersObject()
04174 {
04175 global $rbacreview;
04176
04177 $this->tabs_gui->setTabActive('members');
04178
04179 $this->tpl->addBlockFile('ADM_CONTENT','adm_content','tpl.mail_members.html','course');
04180
04181 $this->setSubTabs('members');
04182
04183 $this->tpl->setVariable("MAILACTION",'mail_new.php?type=role');
04184 $this->tpl->setVariable("MAIL_MEMBERS",$this->lng->txt('send_mail_members'));
04185 $this->tpl->setVariable("MAIL_TUTOR",$this->lng->txt('send_mail_tutors'));
04186 $this->tpl->setVariable("MAIL_ADMIN",$this->lng->txt('send_mail_admins'));
04187 $this->tpl->setVariable("CHECK_MEMBER",ilUtil::formCheckbox(1,'roles[]','#il_crs_member_'.$this->object->getRefId()));
04188 $this->tpl->setVariable("CHECK_TUTOR",ilUtil::formCheckbox(0,'roles[]','#il_crs_tutor_'.$this->object->getRefId()));
04189 $this->tpl->setVariable("CHECK_ADMIN",ilUtil::formCheckbox(0,'roles[]','#il_crs_admin_'.$this->object->getRefId()));
04190 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath('arrow_downright.gif'));
04191 $this->tpl->setVariable("OK",$this->lng->txt('ok'));
04192 }
04193
04194
04195 function &executeCommand()
04196 {
04197 global $rbacsystem,$ilUser,$ilAccess,$ilErr;
04198
04199 $next_class = $this->ctrl->getNextClass($this);
04200 $cmd = $this->ctrl->getCmd();
04201
04202 $this->prepareOutput();
04203
04204
04205 include_once './payment/classes/class.ilPaymentObject.php';
04206
04207 if (!$this->creation_mode)
04208 {
04209 if(!ilPaymentObject::_hasAccess($this->object->getRefId()))
04210 {
04211 if ($cmd != "addToShoppingCart")
04212 {
04213 $this->ctrl->setCmd("");
04214 $cmd = "";
04215 }
04216
04217 include_once './payment/classes/class.ilPaymentPurchaseGUI.php';
04218
04219 $this->ctrl->setReturn($this,"");
04220 $pp_gui =& new ilPaymentPurchaseGUI($this->object->getRefId());
04221
04222 $this->ctrl->forwardCommand($pp_gui);
04223
04224 return true;
04225 }
04226 }
04227
04228 switch($next_class)
04229 {
04230 case "ilinfoscreengui":
04231 $this->infoScreen();
04232 break;
04233
04234 case 'ilmdeditorgui':
04235
04236 include_once 'Services/MetaData/classes/class.ilMDEditorGUI.php';
04237
04238 $md_gui =& new ilMDEditorGUI($this->object->getId(), 0, $this->object->getType());
04239 $md_gui->addObserver($this->object,'MDUpdateListener','General');
04240
04241 $this->ctrl->forwardCommand($md_gui);
04242 break;
04243
04244 case "ilcourseregistergui":
04245 $this->ctrl->setReturn($this,"");
04246 $reg_gui =& new ilCourseRegisterGUI($this->object->getRefId());
04247 $ret =& $this->ctrl->forwardCommand($reg_gui);
04248 break;
04249
04250 case "ilcourseobjectivesgui":
04251 include_once './course/classes/class.ilCourseObjectivesGUI.php';
04252
04253 $this->ctrl->setReturn($this,"");
04254 $reg_gui =& new ilCourseObjectivesGUI($this->object->getRefId());
04255 $ret =& $this->ctrl->forwardCommand($reg_gui);
04256 break;
04257
04258 case 'ilobjcoursegroupinggui':
04259 include_once './course/classes/class.ilObjCourseGroupingGUI.php';
04260
04261 $this->ctrl->setReturn($this,'listGroupings');
04262 $crs_grp_gui =& new ilObjCourseGroupingGUI($this->object,(int) $_GET['obj_id']);
04263
04264 $this->ctrl->forwardCommand($crs_grp_gui);
04265 break;
04266
04267 case "ilconditionhandlerinterface":
04268 include_once './classes/class.ilConditionHandlerInterface.php';
04269
04270
04271 if($_GET['item_id'])
04272 {
04273 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
04274 $this->tabs_gui->setTabActive('edit_content');
04275 $this->setSubTabs("item_activation");
04276
04277 $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
04278 $this->ctrl->forwardCommand($new_gui);
04279 }
04280 else
04281 {
04282 $this->setSubTabs("properties");
04283 $this->tabs_gui->setTabActive('settings');
04284 $new_gui =& new ilConditionHandlerInterface($this);
04285
04286 $this->ctrl->forwardCommand($new_gui);
04287 }
04288 break;
04289
04290 case "illearningprogressgui":
04291 include_once './Services/Tracking/classes/class.ilLearningProgressGUI.php';
04292
04293 $new_gui =& new ilLearningProgressGUI(LP_MODE_REPOSITORY,
04294 $this->object->getRefId(),
04295 $_GET['user_id'] ? $_GET['user_id'] : $ilUser->getId());
04296 $this->ctrl->forwardCommand($new_gui);
04297 $this->tabs_gui->setTabActive('learning_progress');
04298 break;
04299
04300 case 'ilpermissiongui':
04301 include_once("./classes/class.ilPermissionGUI.php");
04302 $perm_gui =& new ilPermissionGUI($this);
04303 $ret =& $this->ctrl->forwardCommand($perm_gui);
04304 break;
04305
04306 default:
04307 if(!$this->creation_mode and !$ilAccess->checkAccess('visible','',$this->object->getRefId(),'crs'))
04308 {
04309 $ilErr->raiseError($this->lng->txt("msg_no_perm_read"),$ilErr->MESSAGE);
04310 }
04311
04312 if( !$this->creation_mode
04313 && $cmd != 'infoScreen'
04314 && !$rbacsystem->checkAccess("read",$this->object->getRefId())
04315 || $cmd == 'join'
04316 || $cmd == 'subscribe')
04317 {
04318 $this->ctrl->setReturn($this,"infoScreen");
04319 $reg_gui =& new ilCourseRegisterGUI($this->object->getRefId());
04320 $ret =& $this->ctrl->forwardCommand($reg_gui);
04321 break;
04322 }
04323 elseif($cmd == 'listObjectives')
04324 {
04325 include_once './course/classes/class.ilCourseObjectivesGUI.php';
04326
04327 $this->ctrl->setReturn($this,"");
04328 $obj_gui =& new ilCourseObjectivesGUI($this->object->getRefId());
04329 $ret =& $this->ctrl->forwardCommand($obj_gui);
04330 break;
04331 }
04332 if(!$cmd)
04333 {
04334 $cmd = 'view';
04335 }
04336 $cmd .= 'Object';
04337 $this->$cmd();
04338
04339 break;
04340 }
04341 return true;
04342
04343
04344 }
04345
04346
04347 function _forwards()
04348 {
04349 return array("ilCourseRegisterGUI",'ilConditionHandlerInterface');
04350 }
04351
04352
04353 function initCourseContentInterface()
04354 {
04355 global $ilCtrl;
04356
04357 include_once "./course/classes/class.ilCourseContentInterface.php";
04358
04359 $this->object->ctrl =& $ilCtrl;
04360 $this->cci_obj =& new ilCourseContentInterface($this,$this->object->getRefId());
04361 }
04362
04363 function cciObjectivesObject()
04364 {
04365 $this->tabs_gui->setTabActive('learners_view');
04366
04367 $this->initCourseContentInterface();
04368 $this->cci_obj->cci_setContainer($this);
04369 $this->cci_obj->cci_objectives();
04370
04371 return true;;
04372 }
04373 function cciObjectivesEditObject()
04374 {
04375 $this->tabs_gui->setTabActive('edit_content');
04376
04377 $this->initCourseContentInterface();
04378 $this->cci_obj->cci_setContainer($this);
04379 $this->cci_obj->cci_view();
04380
04381 return true;
04382 }
04383 function cciObjectivesAskResetObject()
04384 {
04385 $this->tabs_gui->setTabActive('learners_view');
04386
04387 $this->initCourseContentInterface();
04388 $this->cci_obj->cci_setContainer($this);
04389 $this->cci_obj->cci_objectives_ask_reset();
04390
04391 return true;;
04392 }
04393 function cciResetObject()
04394 {
04395 $this->tabs_gui->setTabActive('learners_view');
04396
04397 global $ilUser;
04398
04399 include_once './course/classes/class.ilCourseObjectiveResult.php';
04400
04401 $tmp_obj_res =& new ilCourseObjectiveResult($ilUser->getId());
04402 $tmp_obj_res->reset($this->object->getId());
04403
04404 sendInfo($this->lng->txt('crs_objectives_reseted'));
04405
04406 $this->initCourseContentInterface();
04407 $this->cci_obj->cci_setContainer($this);
04408 $this->cci_obj->cci_objectives();
04409 }
04410
04411 function cciEditObject()
04412 {
04413 global $rbacsystem;
04414
04415
04416 if(!$rbacsystem->checkAccess("write", $this->ref_id))
04417 {
04418 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
04419 }
04420
04421 $this->ctrl->setParameter($this, "item_id", $_GET["item_id"]);
04422 $this->setSubTabs("item_activation");
04423
04424 $this->initCourseContentInterface();
04425 $this->cci_obj->cci_setContainer($this);
04426 $this->cci_obj->cci_edit();
04427
04428 return true;;
04429 }
04430
04431 function cciUpdateObject()
04432 {
04433 global $rbacsystem;
04434
04435
04436 if(!$rbacsystem->checkAccess("write", $this->ref_id))
04437 {
04438 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
04439 }
04440
04441 $this->initCourseContentInterface();
04442 $this->cci_obj->cci_setContainer($this);
04443 $this->cci_obj->cci_update();
04444
04445 return true;;
04446 }
04447 function cciMoveObject()
04448 {
04449 global $rbacsystem;
04450
04451
04452 if(!$rbacsystem->checkAccess("write", $this->ref_id))
04453 {
04454 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
04455 }
04456
04457 $this->initCourseContentInterface();
04458 $this->cci_obj->cci_setContainer($this);
04459 $this->cci_obj->cci_move();
04460
04461 return true;;
04462 }
04463
04464
04465 function initConditionHandlerGUI($item_id)
04466 {
04467 include_once './classes/class.ilConditionHandlerInterface.php';
04468
04469 if(!is_object($this->chi_obj))
04470 {
04471 if($_GET['item_id'])
04472 {
04473 $this->chi_obj =& new ilConditionHandlerInterface($this,$item_id);
04474 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
04475 }
04476 else
04477 {
04478 $this->chi_obj =& new ilConditionHandlerInterface($this);
04479 }
04480 }
04481 return true;
04482 }
04483
04484 function chi_updateObject()
04485 {
04486 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
04487 $this->chi_obj->chi_update();
04488
04489 if($_GET['item_id'])
04490 {
04491 $this->cciEditObject();
04492 }
04493 else
04494 {
04495 $this->editObject();
04496 }
04497 }
04498
04502 function chi_deleteObject()
04503 {
04504 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
04505 $this->chi_obj->chi_delete();
04506
04507 if($_GET['item_id'])
04508 {
04509 $this->cciEditObject();
04510 }
04511 else
04512 {
04513 $this->editObject();
04514 }
04515 }
04516
04517 function chi_selectorObject()
04518 {
04519 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
04520 $this->chi_obj->chi_selector();
04521 }
04522
04523 function chi_assignObject()
04524 {
04525 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
04526 $this->chi_obj->chi_assign();
04527
04528 if($_GET['item_id'])
04529 {
04530 $this->cciEditObject();
04531 }
04532 else
04533 {
04534 $this->editObject();
04535 }
04536 }
04537 function chi_addObject()
04538 {
04539 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
04540 $this->chi_obj->chi_add();
04541
04542 return true;
04543 }
04544 }
04545 ?>