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

Generated on Fri Dec 13 2013 10:18:30 for ILIAS Release_3_5_x_branch .rev 46805 by  doxygen 1.7.1