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