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