00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
00937 sendInfo($this->lng->txt("crs_added"),true);
00938
00939 ilUtil::redirect($this->getReturnLocation("save",$this->ctrl->getLinkTarget($this,"")));
00940 }
00941
00942
00943
00944 function archiveObject()
00945 {
00946 global $rbacsystem;
00947
00948
00949
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
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
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
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
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
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
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
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
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
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
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
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
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 }
01324
01325
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
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 }
01353
01354
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
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 }
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
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
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
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
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
01530 $user_data = $this->object->members_obj->getUserData($_GET["member_id"]);
01531
01532
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
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
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
01553 switch((int) $_POST["role_status"])
01554 {
01555 case 0:
01556
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
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
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
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
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
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
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
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
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
01863 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html","course");
01864 $this->object->initCourseMemberObject();
01865
01866
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
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
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
01910 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html","course");
01911 $this->object->initCourseMemberObject();
01912 $this->object->initWaitingList();
01913
01914
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
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
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
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
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
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
02007 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.crs_editMembers.html","course");
02008
02009
02010
02011
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
03489 $tpl->setCurrentBlock("tbl_form_header");
03490
03491 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03492 $tpl->parseCurrentBlock();
03493
03494
03495 $tpl->setCurrentBlock("tbl_action_row");
03496
03497
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
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
03565 $tpl->setCurrentBlock("tbl_form_header");
03566
03567 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
03568 $tpl->parseCurrentBlock();
03569
03570
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
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
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
03836 function _forwards()
03837 {
03838 return array("ilCourseRegisterGUI",'ilConditionHandlerInterface');
03839 }
03840
03841
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
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
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
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
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 }
04023 ?>