• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

Modules/Course/classes/class.ilObjCourseGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2005 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
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                 // CONTROL OPTIONS
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                 // CHECK ACCESS
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                 // IMPORT
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                 // get the value for the maximal uploadable filesize from the php.ini (if available)
00178                 $umf=get_cfg_var("upload_max_filesize");
00179                 // get the value for the maximal post data from the php.ini (if available)
00180                 $pms=get_cfg_var("post_max_size");
00181 
00182                 // use the smaller one as limit
00183                 $max_filesize=min($umf, $pms);
00184                 if (!$max_filesize) 
00185                         $max_filesize=max($umf, $pms);
00186         
00187                 // gives out the limit as a littel notice :)
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                 // check if file was uploaded
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                 // check correct file type
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                 // Create new object
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); // true for upload
00220                 $newObj->createReference();
00221                 $newObj->putInTree($_GET["ref_id"]);
00222                 $newObj->setPermissions($_GET["ref_id"]);
00223                 $newObj->initDefaultRoles();
00224 
00225                 // Copy xml file
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                 // Update title description
00241                 $newObj->MDUpdateListener('General');
00242                 
00243                 // delete import file
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                 //ilUtil::redirect($this->getReturnLocation("save","adm_object.php?".$this->link_params));
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                 // CHECK ACCESS
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                 // Fill meta header tags
00280                 include_once('Services/MetaData/classes/class.ilMDUtils.php');
00281                 ilMDUtils::_fillHTMLMetaTags($this->object->getId(),$this->object->getId(),'crs');
00282                 
00283         
00284                 // Trac access
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                 // Fill meta header tags
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                 // files
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                 // meta data
00399                 $info->addMetaDataSections($this->object->getId(),0, $this->object->getType());
00400                          
00401                 // contact
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                 // access
00440                 //
00441                 $info->addSection($this->lng->txt("access"));
00442                 $info->showLDAPRoleGroupMappingInfo();
00443                 
00444                 // activation
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                 // subscription
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                 // archive
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                 // Confirmation
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                 // forward the command
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                 // set confirm/cancel commands
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                 // add items to delete
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                 // Validate
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                 // Visibility
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                 // Registration
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                 // Viewmode
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                 // Sorting
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                 // Further settings
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                 // Footer
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                 //save custom icons
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                                 // custom icon
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                                 // map settings
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                                 // members map
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                 // always send a message
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                 //ilUtil::redirect($this->getReturnLocation("save",$this->ctrl->getLinkTarget($this,"")));
01502         }
01503 
01504 
01505 
01506         
01507         function downloadArchivesObject()
01508         {
01509                 global $rbacsystem;
01510 
01511                 $_POST["archives"] = $_POST["archives"] ? $_POST["archives"] : array();
01512 
01513                 // MINIMUM ACCESS LEVEL = 'write'
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                 // add members
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                 // print
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                 // Waitinglist
01642                 $this->__showSubscribers();
01643                 $this->__showWaitingList();
01644 
01645                 // this is neccessary...
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                 // Admins
01659                 $this->__renderAdminsTable();
01660                 
01662                 // Tutors
01664                 $this->__renderTutorsTable();
01665                         
01667                 // Members
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                                 // GET USER OBJ
02134                                 if($tmp_obj = ilObjectFactory::getInstanceByObjId($waiting_data['usr_id'],false))
02135                                 {
02136                                         $waiting_list_ids[] = $waiting_data['usr_id'];
02137                                         $message = '';
02138                                         // Check if user is member in course grouping
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                 } // END waiting list
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                                 // GET USER OBJ
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                 } // END SUBSCRIBERS
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // CHECK MEMBER_ID
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                 // GET USER OBJ
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // CHECK MEMBER_ID
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                 // Remember settings for notification
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                         // SEND NOTIFICATION
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // SHOW DELETE SCREEN
02512                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html",'Modules/Course');
02513                 $this->object->initCourseMemberObject();
02514 
02515                 // SAVE IDS IN SESSION
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                         // GET USER OBJ
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // SHOW DELETE SCREEN
02562                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html",'Modules/Course');
02563                 $this->object->initCourseMemberObject();
02564                 $this->object->initWaitingList();
02565 
02566                 // SAVE IDS IN SESSION
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                         // GET USER OBJ
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                 // CHECK ACCESS
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                 // CHECK ACCESS
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // CHECK LAST ADMIN
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                 // SHOW DELETE SCREEN
02675                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html",'Modules/Course');
02676 
02677                 
02678 
02679                 // SAVE IDS IN SESSION
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                         // GET USER OBJ
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                         // SEND NOTIFICATION
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                         // SEND NOTIFICATION
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // merge results
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                     // exclude anonymous role
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                                     // exclude roles with no users assigned to
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // GET ALL MEMBERS
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                 // FORMAT USER DATA
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                 // MINIMUM ACCESS LEVEL = 'administrate'
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                 // GET ALL MEMBERS
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                 // FORMAT USER DATA
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                         //$next_class = $this->ctrl->getNextClass($this);
03151                         
03152                         // this is not nice. tabs should be displayed in ilcoursegui
03153                         // not via ilrepositorygui, then next_class == ilinfoscreengui
03154                         // could be checked
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                 // lom meta data
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                 // member list
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                 // learning objectives
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                 // learning progress
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                         // GET USER OBJ
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                 // MEMBERS
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                 // SUBSCRIBERS
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          * @author Arturo Gonzalez <arturogf@gmail.com>
03464          * @access       public
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                 // Unsubscribe
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                 // MEMBERS 
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                                 // please do not use strtoupper on first/last name for output
03510                                 // this messes up with some unicode characters, i guess
03511                                 // depending on php verion, alex
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                                 // SET LINK TARGET FOR USER PROFILE
03529                                 $this->ctrl->setParameterByClass("ilobjusergui", "user", $member["id"]);
03530                                 $profile_target = $this->ctrl->getLinkTargetByClass("ilobjusergui","getPublicProfile");
03531                           
03532                                 // GET USER IMAGE
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                                 // do not show name, if public profile is not activated
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                                 // init sort_by (unfortunatly sort_by is preset with 'title'
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                 // SET FORMACTION
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                 // SET FORMACTION
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                         // set checkbox toggles
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                         // set checkbox toggles
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                         // set checkbox toggles
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                 // SET FOOTER BUTTONS
04057                 $tpl->setCurrentBlock("tbl_action_row");
04058 
04059                 // BUTTONS FOR ADD USER  
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                 // SET FOOTER BUTTONS
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                 // Display roles with user friendly mailbox addresses
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                 // check if object is purchased
04324                 include_once './payment/classes/class.ilPaymentObject.php';
04325 
04326                 if (!$this->creation_mode)      // don't check, if new object is created
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                         // add entry to navigation history
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();    // forwards command
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                                 // preconditions for single course items
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    // preconditions for whole course
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                                 // Set tabs
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                 // Disable aggrement if is not member of course
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                 // Check agreement
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                 // Check required fields
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         // STATIC
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         // Methods for ConditionHandlerInterface
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                         // to do: force flat view
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         // Copy wizard
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                 // Get Default settings, when nothing is set
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                 //$this->tpl->setTitleIcon(ilUtil::getImagePath("icon_pd_b.gif"), $this->lng->txt("personal_desktop"));
04794                 //$this->tpl->setVariable("HEADER", $this->lng->txt("personal_desktop"));
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                 // enable map
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                 // map location
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                 //$this->tpl->show();
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 } // END class.ilObjCourseGUI
04878 ?>

Generated on Fri Dec 13 2013 17:56:49 for ILIAS Release_3_9_x_branch .rev 46835 by  doxygen 1.7.1