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