00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00037 include_once "class.ilObjectGUI.php";
00038 include_once "class.ilRegisterGUI.php";
00039
00040 class ilObjGroupGUI extends ilObjectGUI
00041 {
00046 function ilObjGroupGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00047 {
00048 $this->type = "grp";
00049 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00050 }
00051
00052 function viewObject()
00053 {
00054 global $tree;
00055
00056 if($this->ctrl->getTargetScript() == "adm_object.php")
00057 {
00058 parent::viewObject();
00059 return true;
00060 }
00061 else if(!$tree->checkForParentType($this->ref_id,'crs'))
00062 {
00063 $this->ctrl->returnToParent($this);
00064 }
00065 else
00066 {
00067 $this->initCourseContentInterface();
00068 $this->cci_obj->cci_view();
00069 }
00070 return true;
00071 }
00072
00073
00074 function &executeCommand()
00075 {
00076 $next_class = $this->ctrl->getNextClass($this);
00077 $cmd = $this->ctrl->getCmd();
00078
00079 switch($next_class)
00080 {
00081 case "ilconditionhandlerinterface":
00082 include_once './classes/class.ilConditionHandlerInterface.php';
00083
00084 if($_GET['item_id'])
00085 {
00086 $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
00087 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
00088 $this->ctrl->forwardCommand($new_gui);
00089 }
00090 else
00091 {
00092 $new_gui =& new ilConditionHandlerInterface($this);
00093 $this->ctrl->forwardCommand($new_gui);
00094 }
00095 break;
00096
00097 case "ilregistergui":
00098 $this->ctrl->setReturn($this, "");
00099 $reg_gui = new ilRegisterGUI();
00100
00101 $ret =& $this->ctrl->forwardCommand($reg_gui);
00102 break;
00103
00104 default:
00105 if ($this->object->requireRegistration() and !$this->object->isUserRegistered())
00106 {
00107 $this->ctrl->redirectByClass("ilRegisterGUI", "showRegistrationForm");
00108 }
00109
00110 if (empty($cmd))
00111 {
00112 #$this->ctrl->returnToParent($this);
00113
00114 $cmd = "view";
00115 }
00116
00117
00118 $cmd .= "Object";
00119 $this->$cmd();
00120 break;
00121 }
00122 }
00123
00127 function createObject()
00128 {
00129 global $rbacsystem;
00130
00131 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
00132
00133 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], $new_type))
00134 {
00135 $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00136 }
00137
00138 $data = array();
00139
00140 if ($_SESSION["error_post_vars"])
00141 {
00142
00143 $data["fields"]["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00144 $data["fields"]["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00145 $data["fields"]["password"] = $_SESSION["error_post_vars"]["password"];
00146 $data["fields"]["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];
00147 $data["fields"]["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];
00148 }
00149 else
00150 {
00151 $data["fields"]["title"] = "";
00152 $data["fields"]["desc"] = "";
00153 $data["fields"]["password"] = "";
00154 $data["fields"]["expirationdate"] = ilFormat::getDateDE();
00155 $data["fields"]["expirationtime"] = "";
00156 }
00157
00158 $this->getTemplateFile("edit",$new_type);
00159
00160 foreach ($data["fields"] as $key => $val)
00161 {
00162 $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00163 $this->tpl->setVariable(strtoupper($key), $val);
00164
00165 if ($this->prepare_output)
00166 {
00167 $this->tpl->parseCurrentBlock();
00168 }
00169 }
00170
00171 $stati = array(0=>$this->lng->txt("group_status_public"),1=>$this->lng->txt("group_status_closed"));
00172
00173 $grp_status = $_SESSION["error_post_vars"]["group_status"];
00174
00175 $checked = array(0=>0,1=>0,2=>0);
00176
00177 switch ($_SESSION["error_post_vars"]["enable_registration"])
00178 {
00179 case 0:
00180 $checked[0]=1;
00181 break;
00182
00183 case 1:
00184 $checked[1]=1;
00185 break;
00186
00187 case 2:
00188 $checked[2]=1;
00189 break;
00190
00191 default:
00192 $checked[0]=1;
00193 break;
00194 }
00195
00196
00197 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00198 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00199 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00200
00201 $opts = ilUtil::formSelect(0,"group_status",$stati,false,true);
00202
00203 $this->tpl->setVariable("FORMACTION", $this->getFormAction("save",$this->ctrl->getFormAction($this)."&new_type=".$new_type));
00204
00205 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($new_type."_new"));
00206 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00207 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration_mode"));
00208
00209 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00210 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($new_type."_add"));
00211 $this->tpl->setVariable("CMD_SUBMIT", "save");
00212 $this->tpl->setVariable("TARGET", $this->getTargetFrame("save"));
00213 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00214
00215 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("disabled"));
00216 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00217 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("enabled"));
00218 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00219 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("password"));
00220 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00221
00222 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00223 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));
00224 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00225 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00226
00227 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00228 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00229 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00230 $this->tpl->setVariable("SELECT_GROUPSTATUS", $opts);
00231 $this->tpl->setVariable("TXT_GROUP_STATUS", $this->lng->txt("group_status"));
00232 $this->tpl->setVariable("TXT_GROUP_STATUS_DESC", $this->lng->txt("group_status_desc"));
00233 }
00234
00235
00240 function canceledObject()
00241 {
00242 $return_location = $_GET["cmd_return_location"];
00243 if (strcmp($return_location, "") == 0)
00244 {
00245 $return_location = "members";
00246 }
00247
00248 sendInfo($this->lng->txt("action_aborted"),true);
00249 $this->ctrl->redirect($this, $return_location);
00250 }
00251
00256 function cancelMemberObject()
00257 {
00258 $return_location = "members";
00259
00260 sendInfo($this->lng->txt("action_aborted"),true);
00261 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00262 }
00263
00268 function saveObject()
00269 {
00270 global $rbacadmin;
00271
00272
00273 if (empty($_POST["Fobject"]["title"]))
00274 {
00275 $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00276 }
00277
00278
00279 if ($_POST["enable_registration"] == 2 and empty($_POST["password"]))
00280 {
00281 $this->ilErr->raiseError($this->lng->txt("no_password"),$this->ilErr->MESSAGE);
00282 }
00283
00284
00285 if (ilUtil::groupNameExists($_POST["Fobject"]["title"]))
00286
00287 {
00288 $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00289 }
00290
00291
00292 $groupObj = parent::saveObject();
00293
00294
00295 $roles = $groupObj->initDefaultRoles();
00296
00297
00298 $groupObj->addMember($this->ilias->account->getId(),$groupObj->getDefaultAdminRole());
00299
00300 $groupObj->setRegistrationFlag($_POST["enable_registration"]);
00301 $groupObj->setPassword($_POST["password"]);
00302 $groupObj->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00303 $groupObj->setGroupStatus($_POST["group_status"]);
00304
00305 $this->ilias->account->addDesktopItem($groupObj->getRefId(),"grp");
00306
00307
00308 sendInfo($this->lng->txt("grp_added"),true);
00309 ilUtil::redirect($this->getReturnLocation("save",$this->ctrl->getLinkTarget($this,"")));
00310 }
00311
00316 function updateObject()
00317 {
00318 global $rbacsystem;
00319
00320 if (!$rbacsystem->checkAccess("write",$_GET["ref_id"]) )
00321 {
00322 $this->ilErr->raiseError("No permissions to change group status!",$this->ilErr->MESSAGE);
00323 }
00324
00325
00326 if (empty($_POST["Fobject"]["title"]))
00327 {
00328 $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00329 }
00330
00331 if ($_POST["enable_registration"] == 2 && empty($_POST["password"]) || empty($_POST["expirationdate"]) || empty($_POST["expirationtime"]) )
00332 {
00333 $this->ilErr->raiseError($this->lng->txt("grp_err_registration_data"),$this->ilErr->MESSAGE);
00334 }
00335
00336 if (ilUtil::groupNameExists(ilUtil::stripSlashes($_POST["Fobject"]["title"]),$this->object->getId()))
00337 {
00338 $this->ilErr->raiseError($this->lng->txt("grp_name_exists"),$this->ilErr->MESSAGE);
00339 }
00340
00341 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00342 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00343
00344 if ($_POST["enable_registration"] == 2 && !ilUtil::isPassword($_POST["password"]))
00345 {
00346 $this->ilErr->raiseError($this->lng->txt("passwd_invalid"),$this->ilErr->MESSAGE);
00347 }
00348
00349 $this->object->setRegistrationFlag($_POST["enable_registration"]);
00350 $this->object->setPassword($_POST["password"]);
00351 $this->object->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00352
00353 $this->update = $this->object->update();
00354
00355 sendInfo($this->lng->txt("msg_obj_modified"),true);
00356 ilUtil::redirect($this->getReturnLocation("update",$this->ctrl->getLinkTarget($this,"members")));
00357 }
00358
00363 function editObject()
00364 {
00365 global $rbacsystem;
00366
00367 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00368 {
00369 $this->ilErr->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilErr->MESSAGE);
00370 }
00371
00372 $data = array();
00373
00374 if ($_SESSION["error_post_vars"])
00375 {
00376
00377 $data["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00378 $data["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00379 $data["registration"] = $_SESSION["error_post_vars"]["registration"];
00380 $data["password"] = $_SESSION["error_post_vars"]["password"];
00381 $data["expirationdate"] = $_SESSION["error_post_vars"]["expirationdate"];
00382 $data["expirationtime"] = $_SESSION["error_post_vars"]["expirationtime"];
00383
00384 }
00385 else
00386 {
00387 $data["title"] = ilUtil::prepareFormOutput($this->object->getTitle());
00388 $data["desc"] = $this->object->getDescription();
00389 $data["registration"] = $this->object->getRegistrationFlag();
00390 $data["password"] = $this->object->getPassword();
00391 $datetime = $this->object->getExpirationDateTime();
00392
00393 $data["expirationdate"] = $datetime[0];
00394 $data["expirationtime"] = substr($datetime[1],0,5);
00395
00396 }
00397
00398 $this->getTemplateFile("edit");
00399
00400 foreach ($data as $key => $val)
00401 {
00402 $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
00403 $this->tpl->setVariable(strtoupper($key), $val);
00404 $this->tpl->parseCurrentBlock();
00405 }
00406
00407 $checked = array(0=>0,1=>0,2=>0);
00408
00409 switch ($this->object->getRegistrationFlag())
00410 {
00411 case 0:
00412 $checked[0]=1;
00413 break;
00414
00415 case 1:
00416 $checked[1]=1;
00417 break;
00418
00419 case 2:
00420 $checked[2]=1;
00421 break;
00422 }
00423
00424 $cb_registration[0] = ilUtil::formRadioButton($checked[0], "enable_registration", 0);
00425 $cb_registration[1] = ilUtil::formRadioButton($checked[1], "enable_registration", 1);
00426 $cb_registration[2] = ilUtil::formRadioButton($checked[2], "enable_registration", 2);
00427
00428 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00429 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt("grp_edit"));
00430 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00431 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00432 $this->tpl->setVariable("CMD_CANCEL", "canceled");
00433 $this->tpl->setVariable("CMD_SUBMIT", "update");
00434
00435 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00436 $this->tpl->setVariable("TXT_REGISTRATION", $this->lng->txt("group_registration_mode"));
00437
00438 $this->tpl->setVariable("TXT_DISABLEREGISTRATION", $this->lng->txt("disabled"));
00439 $this->tpl->setVariable("RB_NOREGISTRATION", $cb_registration[0]);
00440 $this->tpl->setVariable("TXT_ENABLEREGISTRATION", $this->lng->txt("enabled"));
00441 $this->tpl->setVariable("RB_REGISTRATION", $cb_registration[1]);
00442 $this->tpl->setVariable("TXT_PASSWORDREGISTRATION", $this->lng->txt("password"));
00443 $this->tpl->setVariable("RB_PASSWORDREGISTRATION", $cb_registration[2]);
00444
00445 $this->tpl->setVariable("TXT_EXPIRATIONDATE", $this->lng->txt("group_registration_expiration_date"));
00446 $this->tpl->setVariable("TXT_EXPIRATIONTIME", $this->lng->txt("group_registration_expiration_time"));
00447 $this->tpl->setVariable("TXT_DATE", $this->lng->txt("DD.MM.YYYY"));
00448 $this->tpl->setVariable("TXT_TIME", $this->lng->txt("HH:MM"));
00449
00450 $this->tpl->setVariable("CB_KEYREGISTRATION", $cb_keyregistration);
00451 $this->tpl->setVariable("TXT_KEYREGISTRATION", $this->lng->txt("group_keyregistration"));
00452 $this->tpl->setVariable("TXT_PASSWORD", $this->lng->txt("password"));
00453 }
00454
00459 function confirmationObject($user_id="", $confirm, $cancel, $info="", $status="",$a_cmd_return_location = "")
00460 {
00461 $this->data["cols"] = array("type", "title", "description", "last_change");
00462
00463 if (is_array($user_id))
00464 {
00465 foreach ($user_id as $id)
00466 {
00467 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
00468
00469 $this->data["data"]["$id"] = array(
00470 "type" => $obj_data->getType(),
00471 "title" => $obj_data->getTitle(),
00472 "desc" => $obj_data->getDescription(),
00473 "last_update" => $obj_data->getLastUpdateDate(),
00474
00475 );
00476 }
00477 }
00478 else
00479 {
00480 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($user_id);
00481
00482 $this->data["data"]["$id"] = array(
00483 "type" => $obj_data->getType(),
00484 "title" => $obj_data->getTitle(),
00485 "desc" => $obj_data->getDescription(),
00486 "last_update" => $obj_data->getLastUpdateDate(),
00487 );
00488 }
00489
00490
00491 if(is_array($user_id))
00492 {
00493 $_SESSION["saved_post"]["user_id"] = $user_id;
00494 }
00495 else
00496 {
00497 $_SESSION["saved_post"]["user_id"][0] = $user_id;
00498 }
00499
00500 if (isset($status))
00501 {
00502 $_SESSION["saved_post"]["status"] = $status;
00503 }
00504
00505 $this->data["buttons"] = array( $cancel => $this->lng->txt("cancel"),
00506 $confirm => $this->lng->txt("confirm"));
00507
00508 $this->getTemplateFile("confirm");
00509
00510 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00511
00512 infoPanel();
00513
00514 sendInfo($this->lng->txt($info));
00515
00516 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this)."&cmd_return_location=".$a_cmd_return_location);
00517
00518
00519 foreach ($this->data["cols"] as $key)
00520 {
00521 $this->tpl->setCurrentBlock("table_header");
00522 $this->tpl->setVariable("TEXT",$this->lng->txt($key));
00523 $this->tpl->parseCurrentBlock();
00524 }
00525
00526
00527
00528 $counter = 0;
00529
00530 foreach ($this->data["data"] as $key => $value)
00531 {
00532
00533 foreach ($value as $key => $cell_data)
00534 {
00535 $this->tpl->setCurrentBlock("table_cell");
00536
00537
00538 if ($key == "type")
00539 {
00540 $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
00541 }
00542 else
00543 {
00544 $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
00545 }
00546 $this->tpl->parseCurrentBlock();
00547 }
00548
00549 $this->tpl->setCurrentBlock("table_row");
00550 $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00551 $this->tpl->parseCurrentBlock();
00552
00553 }
00554
00555
00556
00557 foreach ($this->data["buttons"] as $name => $value)
00558 {
00559 $this->tpl->setCurrentBlock("operation_btn");
00560 $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("spacer.gif"));
00561 $this->tpl->setVariable("BTN_NAME",$name);
00562 $this->tpl->setVariable("BTN_VALUE",$value);
00563 $this->tpl->parseCurrentBlock();
00564 }
00565 }
00566
00571 function leaveGrpObject()
00572 {
00573 $member = array($_GET["mem_id"]);
00574
00575 $confirm = "confirmedDeleteMember";
00576 $cancel = "canceled";
00577 $info = "info_delete_sure";
00578 $status = "";
00579 $return = "";
00580 $this->confirmationObject($member, $confirm, $cancel, $info, $status, $return);
00581 }
00582
00587 function assignMemberObject()
00588 {
00589 $user_ids = $_POST["id"];
00590
00591 if (empty($user_ids[0]))
00592 {
00593
00594 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00595 }
00596
00597 foreach ($user_ids as $new_member)
00598 {
00599 if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00600 {
00601 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00602 }
00603 }
00604
00605 unset($_SESSION["saved_post"]);
00606
00607 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00608 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00609 }
00610
00615 function addUserObject()
00616 {
00617 $user_ids = $_POST["user"];
00618
00619 if (empty($user_ids[0]))
00620 {
00621
00622 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00623 }
00624
00625 foreach ($user_ids as $new_member)
00626 {
00627 if (!$this->object->addMember($new_member,$this->object->getDefaultMemberRole()))
00628 {
00629 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
00630 }
00631 }
00632
00633 unset($_SESSION["saved_post"]);
00634
00635 sendInfo($this->lng->txt("grp_msg_member_assigned"),true);
00636 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00637 }
00638
00643 function removeMemberObject()
00644 {
00645 $user_ids = array();
00646
00647 if (isset($_POST["user_id"]))
00648 {
00649 $user_ids = $_POST["user_id"];
00650 }
00651 else if (isset($_GET["mem_id"]))
00652 {
00653 $user_ids[] = $_GET["mem_id"];
00654 }
00655
00656 if (empty($user_ids[0]))
00657 {
00658 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00659 }
00660
00661 if (count($user_ids) == 1 and $this->ilias->account->getId() != $user_ids[0])
00662 {
00663 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
00664 and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00665 {
00666 $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
00667 }
00668 }
00669
00670 $is_dismiss_me = array_search($this->ilias->account->getId(),$user_ids);
00671
00672 $confirm = "confirmedRemoveMember";
00673 $cancel = "canceled";
00674 $info = ($is_dismiss_me !== false) ? "grp_dismiss_myself" : "grp_dismiss_member";
00675 $status = "";
00676 $return = "members";
00677 $this->confirmationObject($user_ids, $confirm, $cancel, $info, $status, $return);
00678 }
00679
00686 function confirmedRemoveMemberObject()
00687 {
00688
00689 foreach($_SESSION["saved_post"]["user_id"] as $member_id)
00690 {
00691 $err_msg = $this->object->removeMember($member_id);
00692
00693 if (strlen($err_msg) > 0)
00694 {
00695 $this->ilErr->raiseError($this->lng->txt($err_msg),$this->ilErr->MESSAGE);
00696 }
00697 }
00698
00699 unset($_SESSION["saved_post"]);
00700
00701 sendInfo($this->lng->txt("grp_msg_membership_annulled"),true);
00702 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
00703 }
00704
00705
00710 function changeMemberObject()
00711 {
00712 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
00713 {
00714 $_GET["sort_by"] = "login";
00715 }
00716
00717 $member_ids = array();
00718
00719 if (isset($_POST["user_id"]))
00720 {
00721 $member_ids = $_POST["user_id"];
00722 }
00723 else if (isset($_GET["mem_id"]))
00724 {
00725 $member_ids[0] = $_GET["mem_id"];
00726 }
00727
00728 if (empty($member_ids[0]))
00729 {
00730 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
00731 }
00732
00733 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"])
00734 and !in_array($this->ilias->account->getId(),$this->object->getGroupAdminIds()))
00735 {
00736 $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
00737 }
00738
00739 $stati = array_flip($this->object->getLocalGroupRoles());
00740
00741
00742 foreach ($member_ids as $member_id)
00743 {
00744 $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
00745 $mem_status = $this->object->getMemberRoles($member_id);
00746
00747 $this->data["data"][$member->getId()]= array(
00748 "login" => $member->getLogin(),
00749 "firstname" => $member->getFirstname(),
00750 "lastname" => $member->getLastname(),
00751 "last_visit"=> ilFormat::formatDate($member->getLastLogin()),
00752 "grp_role" => ilUtil::formSelect($mem_status,"member_status_select[".$member->getId()."][]",$stati,true,true,3)
00753 );
00754 }
00755
00756 unset($member);
00757
00758 infoPanel();
00759
00760 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
00761
00762
00763 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00764
00765 $this->data["buttons"] = array( "members" => $this->lng->txt("back"),
00766 "updateMemberStatus" => $this->lng->txt("confirm"));
00767
00768 $this->tpl->setCurrentBlock("tbl_action_row");
00769 $this->tpl->setVariable("COLUMN_COUNTS",5);
00770
00771 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00772
00773 foreach ($this->data["buttons"] as $name => $value)
00774 {
00775 $this->tpl->setCurrentBlock("tbl_action_btn");
00776 $this->tpl->setVariable("BTN_NAME",$name);
00777 $this->tpl->setVariable("BTN_VALUE",$value);
00778 $this->tpl->parseCurrentBlock();
00779 }
00780
00781
00782 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
00783 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00784
00785
00786 include_once "./classes/class.ilTableGUI.php";
00787
00788 $tbl = new ilTableGUI($output);
00789
00790
00791 $tbl->setTitle($this->lng->txt("grp_mem_change_status"),"icon_usr_b.gif",$this->lng->txt("grp_mem_change_status"));
00792
00793 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role")));
00794 $tbl->setHeaderVars(array("login","firstname","lastname","last_visit","role"),$this->ctrl->getParameterArray($this,"",false));
00795
00796 $tbl->setColumnWidth(array("20%","20%","20%","40%"));
00797
00798 $this->tpl->setCurrentBlock("tbl_action_row");
00799 $this->tpl->parseCurrentBlock();
00800
00801
00802 $tbl->setOrderColumn($_GET["sort_by"]);
00803 $tbl->setOrderDirection($_GET["sort_order"]);
00804 $tbl->setLimit($_GET["limit"]);
00805 $tbl->setOffset($_GET["offset"]);
00806 $tbl->setMaxCount(count($this->data["data"]));
00807
00808 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00809
00810
00811 $tbl->render();
00812 }
00813
00817 function membersObject()
00818 {
00819 global $rbacsystem,$ilBench,$ilDB;
00820
00821 $ilBench->start("GroupGUI", "membersObject");
00822
00823
00824 $val_contact = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".$this->lng->txt("grp_mem_send_mail")."\" title=\"".$this->lng->txt("grp_mem_send_mail")."\" border=\"0\" vspace=\"0\"/>";
00825 $val_change = "<img src=\"".ilUtil::getImagePath("icon_change_b.gif")."\" alt=\"".$this->lng->txt("grp_mem_change_status")."\" title=\"".$this->lng->txt("grp_mem_change_status")."\" border=\"0\" vspace=\"0\"/>";
00826 $val_leave = "<img src=\"".ilUtil::getImagePath("icon_group_out_b.gif")."\" alt=\"".$this->lng->txt("grp_mem_leave")."\" title=\"".$this->lng->txt("grp_mem_leave")."\" border=\"0\" vspace=\"0\"/>";
00827
00828
00829 $access_delete = $rbacsystem->checkAccess("delete",$this->object->getRefId());
00830 $access_leave = $rbacsystem->checkAccess("leave",$this->object->getRefId());
00831 $access_write = $rbacsystem->checkAccess("write",$this->object->getRefId());
00832
00833 $member_ids = $this->object->getGroupMemberIds();
00834
00835
00836 $members = $this->object->getGroupMemberData($member_ids);
00837
00838 $account_id = $this->ilias->account->getId();
00839 $counter = 0;
00840
00841 foreach ($members as $mem)
00842 {
00843 $link_contact = "mail_new.php?type=new&rcp_to=".$mem["login"];
00844 $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$mem["id"];
00845
00846 if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00847 {
00848 $link_leave = $this->ctrl->getLinkTarget($this,"RemoveMember")."&mem_id=".$mem["id"];
00849 }
00850
00851
00852 if ($access_delete && $access_write)
00853 {
00854 $member_functions = "<a href=\"$link_change\">$val_change</a>";
00855 }
00856
00857 if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00858 {
00859 $member_functions .="<a href=\"$link_leave\">$val_leave</a>";
00860 }
00861
00862
00863 $str_member_roles = $this->object->getMemberRolesTitle($mem["id"]);
00864
00865 if ($access_delete && $access_write)
00866 {
00867 $result_set[$counter][] = ilUtil::formCheckBox(0,"user_id[]",$mem["id"]);
00868 }
00869
00870 $user_ids[$counter] = $mem["id"];
00871
00872
00873 $result_set[$counter][] = $mem["login"];
00874 $result_set[$counter][] = $mem["firstname"];
00875 $result_set[$counter][] = $mem["lastname"];
00876 $result_set[$counter][] = ilFormat::formatDate($mem["last_login"]);
00877 $result_set[$counter][] = $str_member_roles;
00878 $result_set[$counter][] = "<a href=\"$link_contact\">".$val_contact."</a>".$member_functions;
00879
00880 ++$counter;
00881
00882 unset($member_functions);
00883 }
00884
00885 $ilBench->stop("GroupGUI", "membersObject");
00886
00887 return $this->__showMembersTable($result_set,$user_ids);
00888 }
00889
00890 function showNewRegistrationsObject()
00891 {
00892 global $rbacsystem;
00893
00894
00895 $applications = $this->object->getNewRegistrations();
00896
00897 if (!$applications)
00898 {
00899 $this->ilErr->raiseError($this->lng->txt("no_applications"),$this->ilErr->MESSAGE);
00900 }
00901
00902 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
00903 {
00904 $_GET["sort_by"] = "login";
00905 }
00906
00907 $val_contact = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".$this->lng->txt("grp_app_send_mail")."\" title=\"".$this->lng->txt("grp_app_send_mail")."\" border=\"0\" vspace=\"0\"/>";
00908
00909 foreach ($applications as $applicant)
00910 {
00911 $user =& $this->ilias->obj_factory->getInstanceByObjId($applicant->user_id);
00912
00913 $link_contact = "mail_new.php?mobj_id=3&type=new&rcp_to=".$user->getLogin();
00914 $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$user->getId();
00915 $member_functions = "<a href=\"$link_change\">$val_change</a>";
00916 if (strcmp($_GET["check"], "all") == 0)
00917 {
00918 $checked = 1;
00919 }
00920 else
00921 {
00922 $checked = 0;
00923 }
00924 $this->data["data"][$user->getId()]= array(
00925 "check" => ilUtil::formCheckBox($checked,"user_id[]",$user->getId()),
00926 "username" => $user->getLogin(),
00927 "fullname" => $user->getFullname(),
00928 "subject" => $applicant->subject,
00929 "date" => $applicant->application_date,
00930 "functions" => "<a href=\"$link_contact\">".$val_contact."</a>"
00931 );
00932
00933 unset($member_functions);
00934 unset($user);
00935 }
00936
00937 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this,"post"));
00938
00939 $this->data["buttons"] = array( "refuseApplicants" => $this->lng->txt("refuse"),
00940 "assignApplicants" => $this->lng->txt("assign"));
00941
00942 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
00943
00944
00945 foreach ($this->data["buttons"] as $name => $value)
00946 {
00947 $this->tpl->setCurrentBlock("tbl_action_btn");
00948 $this->tpl->setVariable("BTN_NAME",$name);
00949 $this->tpl->setVariable("BTN_VALUE",$value);
00950 $this->tpl->parseCurrentBlock();
00951 }
00952
00953 $this->tpl->setCurrentBlock("tbl_action_plain_select");
00954 $this->tpl->setVariable("SELECT_ACTION", "<a href=\"" . $this->ctrl->getLinkTarget($this,"ShownewRegistrations") . "&check=all\">" . $this->lng->txt("check_all") . "</a>" . " / " . "<a href=\"" . $this->ctrl->getLinkTarget($this,"ShownewRegistrations") . "&check=none\">" . $this->lng->txt("uncheck_all") . "</a>");
00955 $this->tpl->parseCurrentBlock();
00956
00957 if (isset($this->data["data"]))
00958 {
00959
00960 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
00961 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
00962 }
00963
00964 $this->tpl->setCurrentBlock("tbl_action_row");
00965 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00966 $this->tpl->setVariable("COLUMN_COUNTS",6);
00967 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00968
00969
00970 include_once "./classes/class.ilTableGUI.php";
00971 $tbl = new ilTableGUI($output);
00972
00973 $tbl->setTitle($this->lng->txt("group_new_registrations"),"icon_usr_b.gif",$this->lng->txt("group_applicants"));
00974
00975 $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("fullname"),$this->lng->txt("subject"),$this->lng->txt("application_date"),$this->lng->txt("grp_options")));
00976 $tbl->setHeaderVars(array("","login","fullname","subject","application_date","functions"),$this->ctrl->getParameterArray($this,"",false));
00977 $tbl->setColumnWidth(array("","20%","20%","35%","20%","5%"));
00978
00979
00980 $tbl->setOrderColumn($_GET["sort_by"]);
00981 $tbl->setOrderDirection($_GET["sort_order"]);
00982 $tbl->setLimit($_GET["limit"]);
00983 $tbl->setOffset($_GET["offset"]);
00984 $tbl->setMaxCount(count($this->data["data"]));
00985 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00986 $tbl->render();
00987 }
00988
00993 function assignApplicantsObject()
00994 {
00995 $user_ids = $_POST["user_id"];
00996
00997 if (empty($user_ids[0]))
00998 {
00999 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01000 }
01001
01002 $mail = new ilMail($_SESSION["AccountId"]);
01003
01004 foreach ($user_ids as $new_member)
01005 {
01006 $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01007
01008 if (!$this->object->addMember($new_member, $this->object->getDefaultMemberRole()))
01009 {
01010 $this->ilErr->raiseError("An Error occured while assigning user to group !",$this->ilErr->MESSAGE);
01011 }
01012
01013 $this->object->deleteApplicationListEntry($new_member);
01014 $mail->sendMail($user->getLogin(),"","","New Membership in Group: ".$this->object->getTitle(),"You have been assigned to the group as a member. You can now access all group specific objects like forums, learningmodules,etc..",array(),array('normal'));
01015 }
01016
01017 sendInfo($this->lng->txt("grp_msg_applicants_assigned"),true);
01018 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01019 }
01020
01025 function refuseApplicantsObject()
01026 {
01027 $user_ids = $_POST["user_id"];
01028
01029 if (empty($user_ids[0]))
01030 {
01031 $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01032 }
01033
01034 $mail = new ilMail($_SESSION["AccountId"]);
01035
01036 foreach ($user_ids as $new_member)
01037 {
01038 $user =& $this->ilias->obj_factory->getInstanceByObjId($new_member);
01039
01040 $this->object->deleteApplicationListEntry($new_member);
01041 $mail->sendMail($user->getLogin(),"","","Membership application refused: Group ".$this->object->getTitle(),"Your application has been refused.",array(),array('normal'));
01042 }
01043
01044 sendInfo($this->lng->txt("grp_msg_applicants_removed"),true);
01045 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01046 }
01047
01052 function updateMemberStatusObject()
01053 {
01054 global $rbacsystem;
01055
01056 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()) )
01057 {
01058 $this->ilErr->raiseError("permission_denied",$this->ilErr->MESSAGE);
01059 }
01060
01061 if (isset($_POST["member_status_select"]))
01062 {
01063 foreach ($_POST["member_status_select"] as $key=>$value)
01064 {
01065 $this->object->setMemberStatus($key,$value);
01066 }
01067 }
01068
01069 sendInfo($this->lng->txt("msg_obj_modified"),true);
01070 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01071 }
01072
01073 function searchUserFormObject()
01074 {
01075 global $rbacsystem;
01076
01077 $this->lng->loadLanguageModule('search');
01078
01079
01080 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01081 {
01082 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01083 }
01084
01085 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members_search.html");
01086
01087 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
01088 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("grp_search_members"));
01089 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
01090 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["grp_search_str"] ? $_SESSION["grp_search_str"] : "");
01091 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
01092 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
01093 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
01094 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
01095 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
01096 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
01097
01098 $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
01099 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
01100 $role = ($_POST["search_for"] == "role") ? 1 : 0;
01101
01102 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
01103 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
01104 $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
01105
01106 $this->__unsetSessionVariables();
01107 }
01108
01109 function searchObject()
01110 {
01111 global $rbacsystem,$tree;
01112
01113 $_SESSION["grp_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["grp_search_str"];
01114 $_SESSION["grp_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["grp_search_for"];
01115
01116
01117 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01118 {
01119 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01120 }
01121
01122 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
01123 {
01124 sendInfo($this->lng->txt("grp_search_enter_search_string"));
01125 $this->searchUserFormObject();
01126
01127 return false;
01128 }
01129
01130 if(!count($result = $this->__search(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"])))
01131 {
01132 sendInfo($this->lng->txt("grp_no_results_found"));
01133 $this->searchUserFormObject();
01134
01135 return false;
01136 }
01137
01138 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01139 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01140
01141 $counter = 0;
01142 $f_result = array();
01143
01144 switch($_POST["search_for"])
01145 {
01146 case "usr":
01147 foreach($result as $user)
01148 {
01149 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user["id"],false))
01150 {
01151 continue;
01152 }
01153
01154 $user_ids[$counter] = $user["id"];
01155
01156 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user["id"]);
01157 $f_result[$counter][] = $tmp_obj->getLogin();
01158 $f_result[$counter][] = $tmp_obj->getFirstname();
01159 $f_result[$counter][] = $tmp_obj->getLastname();
01160 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01161
01162 unset($tmp_obj);
01163 ++$counter;
01164 }
01165 $this->__showSearchUserTable($f_result,$user_ids);
01166
01167 return true;
01168
01169 case "role":
01170 foreach($result as $role)
01171 {
01172
01173 if ($role["id"] == ANONYMOUS_ROLE_ID)
01174 {
01175 continue;
01176 }
01177
01178 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
01179 {
01180 continue;
01181 }
01182
01183
01184 if ($tmp_obj->getCountMembers() == 0)
01185 {
01186 continue;
01187 }
01188
01189 $role_ids[$counter] = $role["id"];
01190
01191 $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
01192 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01193 $f_result[$counter][] = $tmp_obj->getCountMembers();
01194
01195 unset($tmp_obj);
01196 ++$counter;
01197 }
01198
01199 $this->__showSearchRoleTable($f_result,$role_ids);
01200
01201 return true;
01202
01203 case "grp":
01204 foreach($result as $group)
01205 {
01206 if(!$tree->isInTree($group["id"]))
01207 {
01208 continue;
01209 }
01210
01211 if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
01212 {
01213 continue;
01214 }
01215
01216
01217 if ($tmp_obj->getId() == $this->object->getId())
01218 {
01219 continue;
01220 }
01221
01222 $grp_ids[$counter] = $group["id"];
01223
01224 $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
01225 $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01226 $f_result[$counter][] = $tmp_obj->getCountMembers();
01227
01228 unset($tmp_obj);
01229 ++$counter;
01230 }
01231
01232 if(!count($f_result))
01233 {
01234 sendInfo($this->lng->txt("grp_no_results_found"));
01235 $this->searchUserFormObject();
01236
01237 return false;
01238 }
01239
01240 $this->__showSearchGroupTable($f_result,$grp_ids);
01241
01242 return true;
01243 }
01244 }
01245
01246 function searchCancelledObject ()
01247 {
01248 sendInfo($this->lng->txt("action_aborted"),true);
01249 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01250 }
01251
01252
01253 function getTabs(&$tabs_gui)
01254 {
01255 global $rbacsystem;
01256
01257 $this->ctrl->setParameter($this,"ref_id",$this->ref_id);
01258
01259 if ($rbacsystem->checkAccess('read',$this->ref_id))
01260 {
01261 $tabs_gui->addTarget("view_content",
01262 $this->ctrl->getLinkTarget($this, ""), "", get_class($this));
01263 }
01264
01265 if ($rbacsystem->checkAccess('write',$this->ref_id))
01266 {
01267 $tabs_gui->addTarget("edit_properties",
01268 $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this));
01269
01270
01271
01272
01273 }
01274
01275 if ($rbacsystem->checkAccess('read',$this->ref_id))
01276 {
01277 $tabs_gui->addTarget("group_members",
01278 $this->ctrl->getLinkTarget($this, "members"), "members", get_class($this));
01279 }
01280
01281 $applications = $this->object->getNewRegistrations();
01282
01283 if (is_array($applications) and $this->object->isAdmin($this->ilias->account->getId()))
01284 {
01285 $tabs_gui->addTarget("group_new_registrations",
01286 $this->ctrl->getLinkTarget($this, "ShownewRegistrations"), "ShownewRegistrations", get_class($this));
01287 }
01288
01289 if ($rbacsystem->checkAccess('edit_permission',$this->ref_id))
01290 {
01291 $tabs_gui->addTarget("perm_settings",
01292 $this->ctrl->getLinkTarget($this, "perm"), "perm", get_class($this));
01293 }
01294
01295
01296 if ($this->ctrl->getTargetScript() == "repository.php" and !empty($_SESSION['il_rep_clipboard']))
01297 {
01298 $tabs_gui->addTarget("clipboard",
01299 $this->ctrl->getLinkTarget($this, "clipboard"), "clipboard", get_class($this));
01300 }
01301
01302 if ($this->ctrl->getTargetScript() == "adm_object.php")
01303 {
01304 $tabs_gui->addTarget("show_owner",
01305 $this->ctrl->getLinkTarget($this, "owner"), "owner", get_class($this));
01306
01307 if ($this->tree->getSavedNodeData($this->ref_id))
01308 {
01309 $tabs_gui->addTarget("trash",
01310 $this->ctrl->getLinkTarget($this, "trash"), "trash", get_class($this));
01311 }
01312 }
01313 }
01314
01315
01316
01317
01318 function importObject()
01319 {
01320 global $rbacsystem;
01321
01322 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"],"grp"))
01323 {
01324 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
01325 }
01326
01327 $this->getTemplateFile("import","grp");
01328
01329 $this->tpl->setVariable("FORMACTION","adm_object.php?ref_id=".$this->ref_id."&cmd=gateway&new_type=grp");
01330 $this->tpl->setVariable("TXT_IMPORT_GROUP",$this->lng->txt("group_import"));
01331 $this->tpl->setVariable("TXT_IMPORT_FILE",$this->lng->txt("group_import_file"));
01332 $this->tpl->setVariable("BTN_CANCEL",$this->lng->txt("cancel"));
01333 $this->tpl->setVariable("BTN_IMPORT",$this->lng->txt("import"));
01334
01335 return true;
01336 }
01337
01338 function performImportObject()
01339 {
01340
01341 $this->__initFileObject();
01342
01343 if(!$this->file_obj->storeUploadedFile($_FILES["importFile"]))
01344 {
01345 $this->message = $this->lng->txt("import_file_not_valid");
01346 $this->file_obj->unlinkLast();
01347 }
01348 else if(!$this->file_obj->unzip())
01349 {
01350 $this->message = $this->lng->txt("cannot_unzip_file");
01351 $this->file_obj->unlinkLast();
01352 }
01353 else if(!$this->file_obj->findXMLFile())
01354 {
01355 $this->message = $this->lng->txt("cannot_find_xml");
01356 $this->file_obj->unlinkLast();
01357 }
01358 else if(!$this->__initParserObject($this->file_obj->getXMLFile()) or !$this->parser_obj->startParsing())
01359 {
01360 $this->message = $this->lng->txt("import_parse_error").":<br/>";
01361 }
01362
01363
01364 if(!$this->message)
01365 {
01366 sendInfo($this->lng->txt("import_grp_finished"),true);
01367 ilUtil::redirect("adm_object.php?ref_id=".$_GET["ref_id"]);
01368 }
01369 else
01370 {
01371 sendInfo($this->message);
01372 $this->importObject();
01373 }
01374 }
01375
01376
01377
01378 function __initFileObject()
01379 {
01380 include_once "classes/class.ilFileDataImportGroup.php";
01381
01382 $this->file_obj =& new ilFileDataImportGroup();
01383
01384 return true;
01385 }
01386
01387 function __initParserObject($a_xml_file)
01388 {
01389 include_once "classes/class.ilGroupImportParser.php";
01390
01391 $this->parser_obj =& new ilGroupImportParser($a_xml_file,$this->ref_id);
01392
01393 return true;
01394 }
01395
01396
01397 function initCourseContentInterface()
01398 {
01399 global $ilCtrl;
01400
01401 include_once "./course/classes/class.ilCourseContentInterface.php";
01402
01403 $this->object->ctrl =& $ilCtrl;
01404 $this->cci_obj =& new ilCourseContentInterface($this,$this->object->getRefId());
01405 }
01406
01407 function cciEditObject()
01408 {
01409 global $rbacsystem;
01410
01411
01412 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01413 {
01414 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01415 }
01416
01417 $this->initCourseContentInterface();
01418 $this->cci_obj->cci_edit();
01419
01420 return true;;
01421 }
01422
01423 function cciUpdateObject()
01424 {
01425 global $rbacsystem;
01426
01427
01428 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01429 {
01430 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01431 }
01432
01433 $this->initCourseContentInterface();
01434 $this->cci_obj->cci_update();
01435
01436 return true;;
01437 }
01438 function cciMoveObject()
01439 {
01440 global $rbacsystem;
01441
01442
01443 if(!$rbacsystem->checkAccess("write", $this->ref_id))
01444 {
01445 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01446 }
01447
01448 $this->initCourseContentInterface();
01449 $this->cci_obj->cci_move();
01450
01451 return true;;
01452 }
01453
01454 function __unsetSessionVariables()
01455 {
01456 unset($_SESSION["grp_delete_member_ids"]);
01457 unset($_SESSION["grp_delete_subscriber_ids"]);
01458 unset($_SESSION["grp_search_str"]);
01459 unset($_SESSION["grp_search_for"]);
01460 unset($_SESSION["grp_role"]);
01461 unset($_SESSION["grp_group"]);
01462 unset($_SESSION["grp_archives"]);
01463 }
01464
01465 function __search($a_search_string,$a_search_for)
01466 {
01467 include_once("class.ilSearch.php");
01468
01469 $this->lng->loadLanguageModule("content");
01470 $search =& new ilSearch($_SESSION["AccountId"]);
01471 $search->setPerformUpdate(false);
01472 $search->setSearchString(ilUtil::stripSlashes($a_search_string));
01473 $search->setCombination("and");
01474 $search->setSearchFor(array(0 => $a_search_for));
01475 $search->setSearchType('new');
01476
01477 if($search->validate($message))
01478 {
01479 $search->performSearch();
01480 }
01481 else
01482 {
01483 sendInfo($message,true);
01484 $this->ctrl->redirect($this,"searchUserForm");
01485 }
01486
01487 return $search->getResultByType($a_search_for);
01488 }
01489
01490 function __showSearchUserTable($a_result_set,$a_user_ids = NULL, $a_cmd = "search")
01491 {
01492 $return_to = "searchUserForm";
01493
01494 if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
01495 {
01496 $return_to = "search";
01497 }
01498
01499 $tbl =& $this->__initTableGUI();
01500 $tpl =& $tbl->getTemplateObject();
01501
01502
01503 $tpl->setCurrentBlock("tbl_form_header");
01504 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01505 $tpl->parseCurrentBlock();
01506
01507 $tpl->setCurrentBlock("tbl_action_btn");
01508 $tpl->setVariable("BTN_NAME",$return_to);
01509 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01510 $tpl->parseCurrentBlock();
01511
01512 $tpl->setCurrentBlock("tbl_action_btn");
01513 $tpl->setVariable("BTN_NAME","addUser");
01514 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
01515 $tpl->parseCurrentBlock();
01516
01517 if (!empty($a_user_ids))
01518 {
01519
01520 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01521 $tpl->setVariable("JS_VARNAME","user");
01522 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
01523 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01524 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01525 $tpl->parseCurrentBlock();
01526 }
01527
01528 $tpl->setCurrentBlock("tbl_action_row");
01529 $tpl->setVariable("COLUMN_COUNTS",5);
01530 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01531 $tpl->parseCurrentBlock();
01532
01533 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01534 $tbl->setHeaderNames(array("",
01535 $this->lng->txt("username"),
01536 $this->lng->txt("firstname"),
01537 $this->lng->txt("lastname"),
01538 $this->lng->txt("last_visit")));
01539 $tbl->setHeaderVars(array("",
01540 "login",
01541 "firstname",
01542 "lastname",
01543 "last_visit"),
01544 array("ref_id" => $this->object->getRefId(),
01545 "cmd" => $a_cmd,
01546 "cmdClass" => "ilobjgroupgui",
01547 "cmdNode" => $_GET["cmdNode"]));
01548
01549 $tbl->setColumnWidth(array("","33%","33%","33%"));
01550
01551 $this->__setTableGUIBasicData($tbl,$a_result_set);
01552 $tbl->render();
01553
01554 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01555
01556 return true;
01557 }
01558
01559 function __showSearchRoleTable($a_result_set,$a_role_ids = NULL)
01560 {
01561 $tbl =& $this->__initTableGUI();
01562 $tpl =& $tbl->getTemplateObject();
01563
01564 $tpl->setCurrentBlock("tbl_form_header");
01565 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01566 $tpl->parseCurrentBlock();
01567
01568 $tpl->setCurrentBlock("tbl_action_btn");
01569 $tpl->setVariable("BTN_NAME","searchUserForm");
01570 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01571 $tpl->parseCurrentBlock();
01572
01573 $tpl->setCurrentBlock("tbl_action_btn");
01574 $tpl->setVariable("BTN_NAME","listUsersRole");
01575 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01576 $tpl->parseCurrentBlock();
01577
01578 if (!empty($a_role_ids))
01579 {
01580
01581 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01582 $tpl->setVariable("JS_VARNAME","role");
01583 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_role_ids));
01584 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01585 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01586 $tpl->parseCurrentBlock();
01587 }
01588
01589 $tpl->setCurrentBlock("tbl_action_row");
01590 $tpl->setVariable("COLUMN_COUNTS",5);
01591 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01592 $tpl->parseCurrentBlock();
01593
01594 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01595 $tbl->setHeaderNames(array("",
01596 $this->lng->txt("obj_role"),
01597 $this->lng->txt("grp_count_members")));
01598 $tbl->setHeaderVars(array("",
01599 "title",
01600 "nr_members"),
01601 array("ref_id" => $this->object->getRefId(),
01602 "cmd" => "search",
01603 "cmdClass" => "ilobjgroupgui",
01604 "cmdNode" => $_GET["cmdNode"]));
01605
01606 $tbl->setColumnWidth(array("","80%","19%"));
01607
01608
01609 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
01610 $tbl->render();
01611
01612 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01613
01614 return true;
01615 }
01616
01617 function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
01618 {
01619 $tbl =& $this->__initTableGUI();
01620 $tpl =& $tbl->getTemplateObject();
01621
01622 $tpl->setCurrentBlock("tbl_form_header");
01623 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01624 $tpl->parseCurrentBlock();
01625
01626 $tpl->setCurrentBlock("tbl_action_btn");
01627 $tpl->setVariable("BTN_NAME","searchUserForm");
01628 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
01629 $tpl->parseCurrentBlock();
01630
01631 $tpl->setCurrentBlock("tbl_action_btn");
01632 $tpl->setVariable("BTN_NAME","listUsersGroup");
01633 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
01634 $tpl->parseCurrentBlock();
01635
01636 if (!empty($a_grp_ids))
01637 {
01638
01639 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01640 $tpl->setVariable("JS_VARNAME","group");
01641 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_grp_ids));
01642 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01643 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01644 $tpl->parseCurrentBlock();
01645 }
01646
01647 $tpl->setCurrentBlock("tbl_action_row");
01648 $tpl->setVariable("COLUMN_COUNTS",5);
01649 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
01650 $tpl->parseCurrentBlock();
01651
01652 $tbl->setTitle($this->lng->txt("grp_header_edit_members"),"icon_usr_b.gif",$this->lng->txt("grp_header_edit_members"));
01653 $tbl->setHeaderNames(array("",
01654 $this->lng->txt("obj_grp"),
01655 $this->lng->txt("grp_count_members")));
01656 $tbl->setHeaderVars(array("",
01657 "title",
01658 "nr_members"),
01659 array("ref_id" => $this->object->getRefId(),
01660 "cmd" => "search",
01661 "cmdClass" => "ilobjgroupgui",
01662 "cmdNode" => $_GET["cmdNode"]));
01663
01664 $tbl->setColumnWidth(array("","80%","19%"));
01665
01666
01667 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
01668 $tbl->render();
01669
01670 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
01671
01672 return true;
01673 }
01674
01675 function __showMembersTable($a_result_set,$a_user_ids = NULL)
01676 {
01677 global $rbacsystem,$ilBench;
01678
01679 $ilBench->start("GroupGUI", "__showMembersTable");
01680
01681 $actions = array("RemoveMember" => $this->lng->txt("remove"),"changeMember" => $this->lng->txt("change"));
01682
01683 $tbl =& $this->__initTableGUI();
01684 $tpl =& $tbl->getTemplateObject();
01685
01686 $tpl->setCurrentBlock("tbl_form_header");
01687 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
01688 $tpl->parseCurrentBlock();
01689
01690 $tpl->setCurrentBlock("tbl_action_row");
01691
01692
01693 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
01694 {
01695 $tpl->setCurrentBlock("plain_button");
01696 $tpl->setVariable("PBTN_NAME","searchUserForm");
01697 $tpl->setVariable("PBTN_VALUE",$this->lng->txt("grp_add_member"));
01698 $tpl->parseCurrentBlock();
01699 $tpl->setCurrentBlock("plain_buttons");
01700 $tpl->parseCurrentBlock();
01701
01702 $tpl->setVariable("COLUMN_COUNTS",7);
01703 $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01704
01705 foreach ($actions as $name => $value)
01706 {
01707 $tpl->setCurrentBlock("tbl_action_btn");
01708 $tpl->setVariable("BTN_NAME",$name);
01709 $tpl->setVariable("BTN_VALUE",$value);
01710 $tpl->parseCurrentBlock();
01711 }
01712
01713 if (!empty($a_user_ids))
01714 {
01715
01716 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
01717 $tpl->setVariable("JS_VARNAME","user_id");
01718 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
01719 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
01720 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
01721 $tpl->parseCurrentBlock();
01722 }
01723
01724 $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01725 }
01726
01727 $this->ctrl->setParameter($this,"cmd","members");
01728
01729
01730
01731 $tbl->setTitle($this->lng->txt("members"),"icon_usr_b.gif",$this->lng->txt("group_members"));
01732
01733
01734 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
01735 {
01736
01737 $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
01738 $tbl->setHeaderVars(array("","login","firstname","lastname","role","functions"),$this->ctrl->getParameterArray($this,"",false));
01739 $tbl->setColumnWidth(array("","22%","22%","22%","22%","10%"));
01740 }
01741 else
01742 {
01743
01744 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("last_visit"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
01745 $tbl->setHeaderVars(array("login","firstname","lastname","role","functions"),$this->ctrl->getParameterArray($this,"",false));
01746 $tbl->setColumnWidth(array("22%","22%","22%","22%","10%"));
01747 }
01748
01749 $this->__setTableGUIBasicData($tbl,$a_result_set,"members");
01750 $tbl->render();
01751 $this->tpl->setVariable("ADM_CONTENT",$tbl->tpl->get());
01752
01753 $ilBench->stop("GroupGUI", "__showMembersTable");
01754
01755 return true;
01756 }
01757
01758 function &__initTableGUI()
01759 {
01760 include_once "class.ilTableGUI.php";
01761
01762 return new ilTableGUI(0,false);
01763 }
01764
01765 function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
01766 {
01767 switch($from)
01768 {
01769 case "subscribers":
01770 $offset = $_GET["update_subscribers"] ? $_GET["offset"] : 0;
01771 $order = $_GET["update_subscribers"] ? $_GET["sort_by"] : 'login';
01772 $direction = $_GET["update_subscribers"] ? $_GET["sort_order"] : '';
01773 break;
01774
01775 case "group":
01776 $offset = $_GET["offset"];
01777 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
01778 $direction = $_GET["sort_order"];
01779 break;
01780
01781 case "role":
01782 $offset = $_GET["offset"];
01783 $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
01784 $direction = $_GET["sort_order"];
01785 break;
01786
01787 default:
01788 $offset = $_GET["offset"];
01789
01790 if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
01791 {
01792 $_GET["sort_by"] = "login";
01793 }
01794 $order = $_GET["sort_by"];
01795 $direction = $_GET["sort_order"];
01796 break;
01797 }
01798
01799 $tbl->setOrderColumn($order);
01800 $tbl->setOrderDirection($direction);
01801 $tbl->setOffset($offset);
01802 $tbl->setLimit($_GET["limit"]);
01803
01804 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01805 $tbl->setData($result_set);
01806 }
01807
01808 function listUsersRoleObject()
01809 {
01810 global $rbacsystem,$rbacreview;
01811
01812 $_SESSION["grp_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["grp_role"];
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 if(!is_array($_POST["role"]))
01821 {
01822 sendInfo($this->lng->txt("grp_no_roles_selected"));
01823 $this->searchObject();
01824
01825 return false;
01826 }
01827
01828 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01829 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01830
01831
01832 $members = array();
01833 foreach($_POST["role"] as $role_id)
01834 {
01835 $members = array_merge($rbacreview->assignedUsers($role_id),$members);
01836 }
01837
01838 $members = array_unique($members);
01839
01840
01841 $counter = 0;
01842 $f_result = array();
01843 foreach($members as $user)
01844 {
01845 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01846 {
01847 continue;
01848 }
01849
01850 $user_ids[$counter] = $user;
01851
01852 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01853 $f_result[$counter][] = $tmp_obj->getLogin();
01854 $f_result[$counter][] = $tmp_obj->getLastname();
01855 $f_result[$counter][] = $tmp_obj->getFirstname();
01856 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01857
01858 unset($tmp_obj);
01859 ++$counter;
01860 }
01861 $this->__showSearchUserTable($f_result,$user_ids,"listUsersRole");
01862
01863 return true;
01864 }
01865
01866 function listUsersGroupObject()
01867 {
01868 global $rbacsystem,$rbacreview,$tree;
01869
01870 $_SESSION["grp_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["grp_group"];
01871
01872
01873 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01874 {
01875 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01876 }
01877
01878 if(!is_array($_POST["group"]))
01879 {
01880 sendInfo($this->lng->txt("grp_no_groups_selected"));
01881 $this->searchObject();
01882
01883 return false;
01884 }
01885
01886 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01887 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01888
01889
01890 $members = array();
01891 foreach($_POST["group"] as $group_id)
01892 {
01893 if (!$tree->isInTree($group_id))
01894 {
01895 continue;
01896 }
01897 if (!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
01898 {
01899 continue;
01900 }
01901
01902 $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
01903
01904 unset($tmp_obj);
01905 }
01906
01907 $members = array_unique($members);
01908
01909
01910 $counter = 0;
01911 $f_result = array();
01912 foreach($members as $user)
01913 {
01914 if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
01915 {
01916 continue;
01917 }
01918
01919 $user_ids[$counter] = $user;
01920
01921 $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
01922 $f_result[$counter][] = $tmp_obj->getLogin();
01923 $f_result[$counter][] = $tmp_obj->getLastname();
01924 $f_result[$counter][] = $tmp_obj->getFirstname();
01925 $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01926
01927 unset($tmp_obj);
01928 ++$counter;
01929 }
01930 $this->__showSearchUserTable($f_result,$user_ids,"listUsersGroup");
01931
01932 return true;
01933 }
01934
01935 function initConditionHandlerGUI($item_id)
01936 {
01937 include_once './classes/class.ilConditionHandlerInterface.php';
01938
01939 if(!is_object($this->chi_obj))
01940 {
01941 if($_GET['item_id'])
01942 {
01943 $this->chi_obj =& new ilConditionHandlerInterface($this,$item_id);
01944 $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
01945 }
01946 else
01947 {
01948 $this->chi_obj =& new ilConditionHandlerInterface($this);
01949 }
01950 }
01951 return true;
01952 }
01953
01954 function chi_updateObject()
01955 {
01956 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01957 $this->chi_obj->chi_update();
01958
01959 if($_GET['item_id'])
01960 {
01961 $this->cciEditObject();
01962 }
01963 else
01964 {
01965 $this->editObject();
01966 }
01967 }
01968 function chi_deleteObject()
01969 {
01970 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01971 $this->chi_obj->chi_delete();
01972
01973 if($_GET['item_id'])
01974 {
01975 $this->cciEditObject();
01976 }
01977 else
01978 {
01979 $this->editObject();
01980 }
01981 }
01982
01983 function chi_selectorObject()
01984 {
01985 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01986 $this->chi_obj->chi_selector();
01987 }
01988
01989 function chi_assignObject()
01990 {
01991 $this->initConditionHandlerGUI($_GET['item_id'] ? $_GET['item_id'] : $this->object->getRefId());
01992 $this->chi_obj->chi_assign();
01993
01994 if($_GET['item_id'])
01995 {
01996 $this->cciEditObject();
01997 }
01998 else
01999 {
02000 $this->editObject();
02001 }
02002 }
02003
02010 function exportObject()
02011 {
02012 $this->tpl->addBlockfile("ADM_CONTENT", "adm_content", "tpl.grp_members_export.html");
02013 $this->tpl->setCurrentBlock("adm_content");
02014 $this->tpl->setVariable("FORMACTION", $this->getFormAction("export",$this->ctrl->getFormAction($this)));
02015 $this->tpl->setVariable("BUTTON_EXPORT", $this->lng->txt("export_group_members"));
02016 $this->tpl->parseCurrentBlock();
02017 }
02018
02025 function exportMembersObject()
02026 {
02027
02028 $result = @include_once 'Spreadsheet/Excel/Writer.php';
02029 if (!$result)
02030 {
02031 include_once './classes/Spreadsheet/Excel/Writer.php';
02032 }
02033
02034 $workbook = new Spreadsheet_Excel_Writer();
02035
02036
02037 $title = preg_replace("/\s/", "_", $this->object->getTitle());
02038 $workbook->send("export_" . $title . ".xls");
02039
02040
02041 $format_bold =& $workbook->addFormat();
02042 $format_bold->setBold();
02043 $format_percent =& $workbook->addFormat();
02044 $format_percent->setNumFormat("0.00%");
02045 $format_datetime =& $workbook->addFormat();
02046 $format_datetime->setNumFormat("DD/MM/YYYY hh:mm:ss");
02047 $format_title =& $workbook->addFormat();
02048 $format_title->setBold();
02049 $format_title->setColor('black');
02050 $format_title->setPattern(1);
02051 $format_title->setFgColor('silver');
02052 $worksheet =& $workbook->addWorksheet();
02053 $column = 0;
02054 $profile_data = array("email", "gender", "firstname", "lastname", "person_title", "institution",
02055 "department", "street", "zipcode","city", "country", "phone_office", "phone_home", "phone_mobile",
02056 "fax", "matriculation");
02057 foreach ($profile_data as $data)
02058 {
02059 $worksheet->writeString(0, $column++, $this->cleanString($this->lng->txt($data)), $format_title);
02060 }
02061 $member_ids = $this->object->getGroupMemberIds();
02062 $row = 1;
02063 foreach ($member_ids as $member_id)
02064 {
02065 $column = 0;
02066 $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
02067 if ($member->getPref("public_email")=="y")
02068 {
02069 $worksheet->writeString($row, $column++, $this->cleanString($member->getEmail()));
02070 }
02071 else
02072 {
02073 $column++;
02074 }
02075 $worksheet->writeString($row, $column++, $this->cleanString($this->lng->txt("gender_" . $member->getGender())));
02076 $worksheet->writeString($row, $column++, $this->cleanString($member->getFirstname()));
02077 $worksheet->writeString($row, $column++, $this->cleanString($member->getLastname()));
02078 $worksheet->writeString($row, $column++, $this->cleanString($member->getUTitle()));
02079 if ($member->getPref("public_institution")=="y")
02080 {
02081 $worksheet->writeString($row, $column++, $this->cleanString($member->getInstitution()));
02082 }
02083 else
02084 {
02085 $column++;
02086 }
02087 if ($member->getPref("public_department")=="y")
02088 {
02089 $worksheet->writeString($row, $column++, $this->cleanString($member->getDepartment()));
02090 }
02091 else
02092 {
02093 $column++;
02094 }
02095 if ($member->getPref("public_street")=="y")
02096 {
02097 $worksheet->writeString($row, $column++, $this->cleanString($member->getStreet()));
02098 }
02099 else
02100 {
02101 $column++;
02102 }
02103 if ($member->getPref("public_zip")=="y")
02104 {
02105 $worksheet->writeString($row, $column++, $this->cleanString($member->getZipcode()));
02106 }
02107 else
02108 {
02109 $column++;
02110 }
02111 if ($member->getPref("public_city")=="y")
02112 {
02113 $worksheet->writeString($row, $column++, $this->cleanString($member->getCity()));
02114 }
02115 else
02116 {
02117 $column++;
02118 }
02119 if ($member->getPref("public_country")=="y")
02120 {
02121 $worksheet->writeString($row, $column++, $this->cleanString($member->getCountry()));
02122 }
02123 else
02124 {
02125 $column++;
02126 }
02127 if ($member->getPref("public_phone_office")=="y")
02128 {
02129 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneOffice()));
02130 }
02131 else
02132 {
02133 $column++;
02134 }
02135 if ($member->getPref("public_phone_home")=="y")
02136 {
02137 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneHome()));
02138 }
02139 else
02140 {
02141 $column++;
02142 }
02143 if ($member->getPref("public_phone_mobile")=="y")
02144 {
02145 $worksheet->writeString($row, $column++, $this->cleanString($member->getPhoneMobile()));
02146 }
02147 else
02148 {
02149 $column++;
02150 }
02151 if ($member->getPref("public_fax")=="y")
02152 {
02153 $worksheet->writeString($row, $column++, $this->cleanString($member->getFax()));
02154 }
02155 else
02156 {
02157 $column++;
02158 }
02159 if ($member->getPref("public_matriculation")=="y")
02160 {
02161 $worksheet->writeString($row, $column++, $this->cleanString($member->getMatriculation()));
02162 }
02163 else
02164 {
02165 $column++;
02166 }
02167 $row++;
02168 }
02169 $workbook->close();
02170 }
02171
02180 function cleanString($str)
02181 {
02182 return str_replace(array("ä","ö","ü","ß","Ä","Ö","Ü"), array("ae","oe","ue","ss","Ae","Oe","Ue"), $str);
02183 }
02184
02185 }
02186 ?>