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