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

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

Generated on Fri Dec 13 2013 11:57:58 for ILIAS Release_3_6_x_branch .rev 46809 by  doxygen 1.7.1