/**
  * edit members
  *
  * @access public
  * @return
  */
 public function membersObject()
 {
     global $ilUser, $ilToolbar, $lng, $ilCtrl;
     include_once './Modules/Group/classes/class.ilGroupParticipants.php';
     include_once './Modules/Group/classes/class.ilGroupParticipantsTableGUI.php';
     $this->checkPermission('write');
     include_once './Services/Tracking/classes/class.ilObjUserTracking.php';
     include_once './Services/Tracking/classes/class.ilLPObjSettings.php';
     $this->show_tracking = (ilObjUserTracking::_enabledLearningProgress() and ilObjUserTracking::_enabledUserRelatedData() and ilLPObjSettings::_lookupMode($this->object->getId()) != LP_MODE_DEACTIVATED);
     $part = ilGroupParticipants::_getInstanceByObjId($this->object->getId());
     $this->setSubTabs('members');
     $this->tabs_gui->setTabActive('members');
     $this->tabs_gui->setSubTabActive('grp_edit_members');
     $this->tpl->addBlockfile('ADM_CONTENT', 'adm_content', 'tpl.grp_edit_members.html', 'Modules/Group');
     $this->tpl->setVariable('FORMACTION', $this->ctrl->getFormAction($this));
     // add members
     include_once './Services/Search/classes/class.ilRepositorySearchGUI.php';
     ilRepositorySearchGUI::fillAutoCompleteToolbar($this, $ilToolbar, array('auto_complete_name' => $lng->txt('user'), 'user_type' => array(ilObjGroup::GRP_MEMBER => $lng->txt("member"), ilObjGroup::GRP_ADMIN => $lng->txt("administrator")), 'submit_name' => $lng->txt('add')));
     // spacer
     $ilToolbar->addSeparator();
     // search button
     $ilToolbar->addButton($this->lng->txt("grp_search_users"), $this->ctrl->getLinkTargetByClass('ilRepositorySearchGUI', 'start'));
     $ilToolbar->addSeparator();
     // print button
     $ilToolbar->addButton($this->lng->txt("grp_print_list"), $this->ctrl->getLinkTarget($this, 'printMembers'));
     $this->setShowHidePrefs();
     // Waiting list table
     include_once './Modules/Group/classes/class.ilGroupWaitingList.php';
     $waiting_list = new ilGroupWaitingList($this->object->getId());
     if (count($wait = $waiting_list->getAllUsers())) {
         include_once './Services/Membership/classes/class.ilWaitingListTableGUI.php';
         if ($ilUser->getPref('grp_wait_hide')) {
             $table_gui = new ilWaitingListTableGUI($this, $waiting_list, false);
             $this->ctrl->setParameter($this, 'wait_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'), '', ilUtil::getImagePath('edit_add.png'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilWaitingListTableGUI($this, $waiting_list, true);
             $this->ctrl->setParameter($this, 'wait_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'), '', ilUtil::getImagePath('edit_remove.png'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->setUsers($wait);
         $table_gui->setTitle($this->lng->txt('grp_header_waiting_list'), 'icon_usr.png', $this->lng->txt('group_new_registrations'));
         $this->tpl->setVariable('TABLE_SUB', $table_gui->getHTML());
     }
     // Subscriber table
     if ($part->getSubscribers()) {
         include_once './Services/Membership/classes/class.ilSubscriberTableGUI.php';
         if ($ilUser->getPref('grp_subscriber_hide')) {
             $table_gui = new ilSubscriberTableGUI($this, false);
             $this->ctrl->setParameter($this, 'subscriber_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'), '', ilUtil::getImagePath('edit_add.png'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilSubscriberTableGUI($this, true);
             $this->ctrl->setParameter($this, 'subscriber_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'), '', ilUtil::getImagePath('edit_remove.png'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->readSubscriberData();
         $table_gui->setTitle($this->lng->txt('group_new_registrations'), 'icon_usr.png', $this->lng->txt('group_new_registrations'));
         $this->tpl->setVariable('TABLE_SUB', $table_gui->getHTML());
     }
     if (count($part->getAdmins())) {
         if ($ilUser->getPref('grp_admin_hide')) {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'admin', false, false);
             $this->ctrl->setParameter($this, 'admin_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'), '', ilUtil::getImagePath('edit_add.png'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'admin', true, false);
             $this->ctrl->setParameter($this, 'admin_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'), '', ilUtil::getImagePath('edit_remove.png'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->setTitle($this->lng->txt('grp_admins'), 'icon_usr.png', $this->lng->txt('grp_admins'));
         $table_gui->parse($this->readMemberData($part->getAdmins()));
         $this->tpl->setVariable('ADMINS', $table_gui->getHTML());
     }
     if (count($part->getMembers())) {
         if ($ilUser->getPref('grp_member_hide')) {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'member', false, $this->show_tracking);
             $this->ctrl->setParameter($this, 'member_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'), '', ilUtil::getImagePath('edit_add.png'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'member', true, $this->show_tracking);
             $this->ctrl->setParameter($this, 'member_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'), '', ilUtil::getImagePath('edit_remove.png'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->setTitle($this->lng->txt('grp_members'), 'icon_usr.png', $this->lng->txt('grp_members'));
         $table_gui->parse($this->readMemberData($part->getMembers()));
         $this->tpl->setVariable('MEMBERS', $table_gui->getHTML());
     }
     $this->tpl->setVariable('TXT_SELECTED_USER', $this->lng->txt('grp_selected_users'));
     $this->tpl->setVariable('BTN_FOOTER_EDIT', $this->lng->txt('edit'));
     $this->tpl->setVariable('BTN_FOOTER_VAL', $this->lng->txt('remove'));
     $this->tpl->setVariable('BTN_FOOTER_MAIL', $this->lng->txt('grp_mem_send_mail'));
     $this->tpl->setVariable('ARROW_DOWN', ilUtil::getImagePath('arrow_downright.png'));
 }
 /**
  * Init acceptance
  * @return 
  */
 public function initAcceptedAgreements()
 {
     if (self::$accepted_ids !== NULL) {
         return true;
     }
     self::$export_allowed = ilPrivacySettings::_getInstance()->checkExportAccess($this->getParentObject()->object->getRefId());
     self::$confirmation_required = ilPrivacySettings::_getInstance()->groupConfirmationRequired();
     include_once 'Services/Membership/classes/class.ilMemberAgreement.php';
     self::$accepted_ids = ilMemberAgreement::lookupAcceptedAgreements($this->getParentObject()->object->getId());
 }
 /**
  * edit members
  *
  * @access public
  * @return
  */
 public function membersObject()
 {
     global $ilUser, $ilToolbar, $lng, $ilCtrl;
     include_once './Modules/Group/classes/class.ilGroupParticipants.php';
     include_once './Modules/Group/classes/class.ilGroupParticipantsTableGUI.php';
     $this->checkPermission('write');
     include_once './Services/Tracking/classes/class.ilObjUserTracking.php';
     $this->show_tracking = (ilObjUserTracking::_enabledLearningProgress() and ilObjUserTracking::_enabledUserRelatedData());
     if ($this->show_tracking) {
         include_once './Services/Object/classes/class.ilObjectLP.php';
         $olp = ilObjectLP::getInstance($this->object->getId());
         $this->show_tracking = $olp->isActive();
     }
     $part = ilGroupParticipants::_getInstanceByObjId($this->object->getId());
     $this->setSubTabs('members');
     $this->tabs_gui->setTabActive('members');
     $this->tabs_gui->setSubTabActive('grp_edit_members');
     $this->tpl->addBlockfile('ADM_CONTENT', 'adm_content', 'tpl.grp_edit_members.html', 'Modules/Group');
     $this->tpl->setVariable('FORMACTION', $this->ctrl->getFormAction($this));
     // add members
     include_once './Services/Search/classes/class.ilRepositorySearchGUI.php';
     ilRepositorySearchGUI::fillAutoCompleteToolbar($this, $ilToolbar, array('auto_complete_name' => $lng->txt('user'), 'user_type' => $this->getLocalRoles(), 'submit_name' => $lng->txt('add')));
     // spacer
     $ilToolbar->addSeparator();
     // search button
     $ilToolbar->addButton($this->lng->txt("grp_search_users"), $this->ctrl->getLinkTargetByClass('ilRepositorySearchGUI', 'start'));
     $ilToolbar->addSeparator();
     // print button
     $ilToolbar->addButton($this->lng->txt("grp_print_list"), $this->ctrl->getLinkTarget($this, 'printMembers'));
     $this->setShowHidePrefs();
     // Waiting list table
     include_once './Modules/Group/classes/class.ilGroupWaitingList.php';
     $waiting_list = new ilGroupWaitingList($this->object->getId());
     if (count($wait = $waiting_list->getAllUsers())) {
         include_once './Services/Membership/classes/class.ilWaitingListTableGUI.php';
         if ($ilUser->getPref('grp_wait_hide')) {
             $table_gui = new ilWaitingListTableGUI($this, $waiting_list, false);
             $this->ctrl->setParameter($this, 'wait_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilWaitingListTableGUI($this, $waiting_list, true);
             $this->ctrl->setParameter($this, 'wait_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->setUsers($wait);
         $table_gui->setTitle($this->lng->txt('grp_header_waiting_list'), 'icon_usr.svg', $this->lng->txt('group_new_registrations'));
         $this->tpl->setVariable('TABLE_SUB', $table_gui->getHTML());
     }
     // Subscriber table
     if ($part->getSubscribers()) {
         include_once './Services/Membership/classes/class.ilSubscriberTableGUI.php';
         if ($ilUser->getPref('grp_subscriber_hide')) {
             $table_gui = new ilSubscriberTableGUI($this, false);
             $this->ctrl->setParameter($this, 'subscriber_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilSubscriberTableGUI($this, true);
             $this->ctrl->setParameter($this, 'subscriber_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->readSubscriberData();
         $table_gui->setTitle($this->lng->txt('group_new_registrations'), 'icon_usr.svg', $this->lng->txt('group_new_registrations'));
         $this->tpl->setVariable('TABLE_SUB', $table_gui->getHTML());
     }
     if (count($part->getAdmins())) {
         if ($ilUser->getPref('grp_admin_hide')) {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'admin', false, false);
             $this->ctrl->setParameter($this, 'admin_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'admin', true, false);
             $this->ctrl->setParameter($this, 'admin_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->setTitle($this->lng->txt('grp_admins'), 'icon_usr.svg', $this->lng->txt('grp_admins'));
         $table_gui->parse($this->readMemberData($part->getAdmins()));
         $this->tpl->setVariable('ADMINS', $table_gui->getHTML());
     }
     if ($GLOBALS['rbacreview']->getNumberOfAssignedUsers(array($this->object->getDefaultMemberRole()))) {
         if ($ilUser->getPref('grp_member_hide')) {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'member', false, $this->show_tracking, $this->object->getDEfaultMemberRole());
             $this->ctrl->setParameter($this, 'member_hide', 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'member', true, $this->show_tracking, $this->object->getDefaultMemberRole());
             $this->ctrl->setParameter($this, 'member_hide', 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->setTitle($this->lng->txt('grp_members'), 'icon_usr.svg', $this->lng->txt('grp_members'));
         $table_gui->parse($this->readMemberData($GLOBALS['rbacreview']->assignedUsers($this->object->getDefaultMemberRole()), null, $table_gui->getSelectedColumns()));
         $this->tpl->setCurrentBlock('member_block');
         $this->tpl->setVariable('MEMBERS', $table_gui->getHTML());
         $this->tpl->parseCurrentBlock();
     }
     foreach (ilGroupParticipants::getMemberRoles($this->object->getRefId()) as $role_id) {
         // Do not show table if no user is assigned
         if (!$GLOBALS['rbacreview']->getNumberOfAssignedUsers(array($role_id))) {
             continue;
         }
         if ($ilUser->getPref('grp_role_hide' . $role_id)) {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'role', false, $this->show_tracking, $role_id);
             $this->ctrl->setParameter($this, 'role_hide_' . $role_id, 0);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('show'));
             $this->ctrl->clearParameters($this);
         } else {
             $table_gui = new ilGroupParticipantsTableGUI($this, 'role', true, $this->show_tracking, $role_id);
             $this->ctrl->setParameter($this, 'role_hide_' . $role_id, 1);
             $table_gui->addHeaderCommand($this->ctrl->getLinkTarget($this, 'members'), $this->lng->txt('hide'));
             $this->ctrl->clearParameters($this);
         }
         $table_gui->setTitle(ilObject::_lookupTitle($role_id), 'icon_usr.gif', ilObject::_lookupTitle($role_id));
         $table_gui->parse($this->readMemberData($GLOBALS['rbacreview']->assignedUsers($role_id)));
         $this->tpl->setCurrentBlock('member_block');
         $this->tpl->setVariable('MEMBERS', $table_gui->getHTML());
         $this->tpl->parseCurrentBlock();
     }
     $this->tpl->setVariable('TXT_SELECTED_USER', $this->lng->txt('grp_selected_users'));
     $this->tpl->setVariable('BTN_FOOTER_EDIT', $this->lng->txt('edit'));
     $this->tpl->setVariable('BTN_FOOTER_VAL', $this->lng->txt('remove'));
     $this->tpl->setVariable('BTN_FOOTER_MAIL', $this->lng->txt('grp_mem_send_mail'));
     $this->tpl->setVariable('ARROW_DOWN', ilUtil::getImagePath('arrow_downright.svg'));
 }