5 require_once
'./Services/User/classes/class.ilObjUser.php';
6 require_once
'Services/Mail/classes/class.ilMailbox.php';
7 require_once
'Services/Mail/classes/class.ilFormatMail.php';
8 require_once
'Services/Contact/BuddySystem/classes/class.ilBuddySystem.php';
73 public function __construct($wsp_access_handler = null, $wsp_node_id = null)
77 $this->tpl = $DIC[
'tpl'];
78 $this->ctrl = $DIC[
'ilCtrl'];
79 $this->lng = $DIC[
'lng'];
80 $this->
user = $DIC[
'ilUser'];
81 $this->error = $DIC[
'ilErr'];
82 $this->rbacsystem = $DIC[
'rbacsystem'];
83 $this->rbacreview = $DIC[
'rbacreview'];
84 $this->tree = $DIC[
'tree'];
85 $this->cache = $DIC[
'ilObjDataCache'];
88 $this->wsp_access_handler = $wsp_access_handler;
89 $this->wsp_node_id = $wsp_node_id;
91 $this->ctrl->saveParameter($this,
"mobj_id");
92 $this->ctrl->saveParameter($this,
"ref");
94 include_once
"Services/Mail/classes/class.ilMail.php";
96 $this->mailing_allowed = $this->rbacsystem->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId());
103 $forward_class = $this->ctrl->getNextClass($this);
104 switch ($forward_class) {
105 case 'ilbuddysystemgui':
107 $this->error->raiseError($this->lng->txt(
'msg_no_perm_read'), $this->error->MESSAGE);
110 require_once
'Services/Contact/BuddySystem/classes/class.ilBuddySystemGUI.php';
111 $this->ctrl->saveParameter($this,
'search_grp');
112 $this->ctrl->setReturn($this,
'showMembers');
117 if (!($cmd = $this->ctrl->getCmd())) {
118 $cmd =
"showMyGroups";
129 if (
$_GET[
"view"] ==
"mygroups") {
130 $ids = ((int)
$_GET[
'search_grp']) ? array((
int)
$_GET[
'search_grp']) :
$_POST[
'search_grp'];
135 $this->showMyGroups();
137 } elseif (
$_GET[
"view"] ==
"grp_members") {
138 $ids = ((int)
$_GET[
'search_members']) ? array((
int)
$_GET[
'search_members']) :
$_POST[
'search_members'];
146 $this->showMyGroups();
154 if (!is_array($old_mail_data = $this->umail->getSavedData())) {
155 $this->umail->savePostData(
156 $this->
user->getId(),
169 require_once
'./Services/Object/classes/class.ilObject.php';
170 require_once
'Services/Mail/classes/Address/Type/class.ilMailRoleAddressType.php';
172 $ids = ((int)
$_GET[
'search_grp']) ? array((
int)
$_GET[
'search_grp']) :
$_POST[
'search_grp'];
173 foreach ($ids as $grp_id) {
175 foreach ($ref_ids as $ref_id) {
176 $roles = $this->rbacreview->getAssignableChildRoles($ref_id);
177 foreach ($roles as $role) {
178 if (substr($role[
'title'], 0, 14) ==
'il_grp_member_' ||
179 substr($role[
'title'], 0, 13) ==
'il_grp_admin_') {
180 if (isset($old_mail_data[
'rcp_to']) &&
181 trim($old_mail_data[
'rcp_to']) !=
'') {
182 $rcpt = (new \ilRoleMailboxAddress($role[
'obj_id']))->value();
183 if (!$this->umail->existsRecipient($rcpt, (
string) $old_mail_data[
'rcp_to'])) {
184 array_push($members, $rcpt);
194 if (count($members)) {
195 $mail_data = $this->umail->appendSearchResult($members,
'to');
197 $mail_data = $this->umail->getSavedData();
200 $this->umail->savePostData(
201 $mail_data[
"user_id"],
202 $mail_data[
"attachments"],
203 $mail_data[
"rcp_to"],
204 $mail_data[
"rcp_cc"],
205 $mail_data[
"rcp_bcc"],
206 $mail_data[
"m_type"],
207 $mail_data[
"m_email"],
208 $mail_data[
"m_subject"],
209 $mail_data[
"m_message"],
210 $mail_data[
"use_placeholders"],
211 $mail_data[
'tpl_ctx_id'],
212 $mail_data[
'tpl_ctx_params']
222 if (!is_array($this->umail->getSavedData())) {
223 $this->umail->savePostData(
224 $this->
user->getId(),
237 $ids = ((int)
$_GET[
'search_members']) ? array((
int)
$_GET[
'search_members']) :
$_POST[
'search_members'];
239 foreach ($ids as $member) {
241 array_push($members,
$login);
243 $mail_data = $this->umail->appendSearchResult($members,
"to");
245 $this->umail->savePostData(
246 $mail_data[
"user_id"],
247 $mail_data[
"attachments"],
248 $mail_data[
"rcp_to"],
249 $mail_data[
"rcp_cc"],
250 $mail_data[
"rcp_bcc"],
251 $mail_data[
"m_type"],
252 $mail_data[
"m_email"],
253 $mail_data[
"m_subject"],
254 $mail_data[
"m_message"],
255 $mail_data[
"use_placeholders"],
256 $mail_data[
'tpl_ctx_id'],
257 $mail_data[
'tpl_ctx_params']
268 if (
$_GET[
"view"] ==
"mygroups" &&
269 $_GET[
"ref"] ==
"mail") {
270 $this->ctrl->returnToParent($this);
272 $this->showMyGroups();
279 public function showMyGroups()
281 include_once
'Modules/Group/classes/class.ilGroupParticipants.php';
283 $this->tpl->setTitle($this->lng->txt(
'mail_addressbook'));
285 $searchTpl =
new ilTemplate(
'tpl.mail_search_template.html',
true,
true,
'Services/Contact');
287 $_GET[
'view'] =
'mygroups';
289 $this->lng->loadLanguageModule(
'crs');
291 $this->ctrl->setParameter($this,
'view',
'mygroups');
293 include_once
'Services/Contact/classes/class.ilMailSearchCoursesTableGUI.php';
295 $table->setId(
'search_grps_tbl');
299 $tableData = array();
300 if (is_array($grp_ids) &&
301 count($grp_ids) > 0) {
302 $num_groups_hidden_members = 0;
303 include_once(
"./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
304 foreach ($grp_ids as $grp_id) {
311 $showMemberListEnabled = (boolean) $oTmpGrp->getShowMembers();
313 $isPrivilegedUser = $this->rbacsystem->checkAccess(
'write', $ref_ids[0]);
315 if ($hasUntrashedReferences && ($showMemberListEnabled || $isPrivilegedUser)) {
317 $grp_members = $oGroupParticipants->getParticipants();
319 foreach ($grp_members as
$key => $member) {
322 if (!$tmp_usr->getActive()) {
323 unset($grp_members[
$key]);
327 $hiddenMembers =
false;
328 if ((
int) $oTmpGrp->getShowMembers() == $oTmpGrp->SHOW_MEMBERS_DISABLED) {
329 ++$num_groups_hidden_members;
330 $hiddenMembers =
true;
335 $ref_id = current($ref_ids);
336 $path_arr = $this->tree->getPathFull($ref_id, $this->tree->getRootId());
339 foreach ($path_arr as
$data) {
340 if ($path_counter++) {
343 $path .= $data[
'title'];
345 $path = $this->lng->txt(
'path') .
': ' .
$path;
348 $current_selection_list->setListTitle($this->lng->txt(
"actions"));
349 $current_selection_list->setId(
"act_" . $counter);
351 $this->ctrl->setParameter($this,
'search_grp', $grp_id);
352 $this->ctrl->setParameter($this,
'view',
'mygroups');
354 if (
$_GET[
"ref"] ==
"mail") {
355 if ($this->mailing_allowed) {
356 $current_selection_list->addItem($this->lng->txt(
"mail_members"),
'', $this->ctrl->getLinkTarget($this,
"mail"));
358 } elseif (
$_GET[
"ref"] ==
"wsp") {
359 $current_selection_list->addItem($this->lng->txt(
"wsp_share_with_members"),
'', $this->ctrl->getLinkTarget($this,
"share"));
361 $current_selection_list->addItem($this->lng->txt(
"mail_list_members"),
'', $this->ctrl->getLinkTarget($this,
"showMembers"));
363 $this->ctrl->clearParameters($this);
367 'CRS_NAME' => $this->cache->lookupTitle($grp_id),
368 'CRS_NO_MEMBERS' => count($grp_members),
370 'COMMAND_SELECTION_LIST' => $current_selection_list->getHTML(),
371 "hidden_members" => $hiddenMembers
374 $tableData[] = $rowData;
377 if ($num_groups_hidden_members > 0) {
378 $searchTpl->setCurrentBlock(
'caption_block');
379 $searchTpl->setVariable(
'TXT_LIST_MEMBERS_NOT_AVAILABLE', $this->lng->txt(
'mail_crs_list_members_not_available'));
380 $searchTpl->parseCurrentBlock();
383 $table->setData($tableData);
385 $this->tpl->setVariable(
'TXT_MARKED_ENTRIES', $this->lng->txt(
'marked_entries'));
388 $searchTpl->setVariable(
'TABLE',
$table->getHTML());
389 $this->tpl->setContent($searchTpl->get());
391 if (
$_GET[
"ref"] !=
"wsp") {
401 if (
$_GET[
"search_grp"] !=
"") {
402 $_POST[
"search_grp"] = explode(
",",
$_GET[
"search_grp"]);
405 if (!is_array(
$_POST[
"search_grp"]) ||
406 count(
$_POST[
"search_grp"]) == 0) {
408 $this->showMyGroups();
410 $this->tpl->setTitle($this->lng->txt(
"mail_addressbook"));
411 include_once
'Services/Contact/classes/class.ilMailSearchCoursesMembersTableGUI.php';
414 $this->lng->loadLanguageModule(
'crs');
416 $tableData = array();
417 $searchTpl =
new ilTemplate(
'tpl.mail_search_template.html',
true,
true,
'Services/Contact');
419 foreach (
$_POST[
"search_grp"] as $grp_id) {
421 $ref_id = current($ref_ids);
424 $grp_members = $group_obj->getGroupMemberData($group_obj->getGroupMemberIds());
426 foreach ($grp_members as $member) {
428 if (!$tmp_usr->getActive()) {
434 $fullname = $member[
'lastname'] .
', ' . $member[
'firstname'];
438 'members_id' => $member[
"id"],
439 'members_login' => $member[
"login"],
440 'members_name' => $fullname,
441 'members_crs_grp' => $group_obj->getTitle(),
442 'search_grp' => $grp_id,
448 $rowData[
'status'] =
'';
449 if ($member[
'id'] != $this->
user->getId()) {
450 if ($relation->isOwnedByRequest()) {
451 $rowData[
'status'] = $this->lng->txt(
'buddy_bs_state_' . $state_name .
'_a');
453 $rowData[
'status'] = $this->lng->txt(
'buddy_bs_state_' . $state_name .
'_p');
458 $tableData[] = $rowData;
462 $table->setData($tableData);
463 if (count($tableData)) {
464 $searchTpl->setVariable(
"TXT_MARKED_ENTRIES", $this->lng->txt(
"marked_entries"));
466 $searchTpl->setVariable(
'TABLE',
$table->getHTML());
467 $this->tpl->setContent($searchTpl->get());
469 if (
$_GET[
"ref"] !=
"wsp") {
477 if (
$_GET[
"view"] ==
"mygroups") {
478 $ids = $_REQUEST[
"search_grp"];
483 $this->showMyGroups();
485 } elseif (
$_GET[
"view"] ==
"grp_members") {
486 $ids = $_REQUEST[
"search_members"];
494 $this->showMyGroups();
500 if (!is_array($a_obj_ids)) {
501 $a_obj_ids = array($a_obj_ids);
504 $existing = $this->wsp_access_handler->getPermissions($this->wsp_node_id);
506 foreach ($a_obj_ids as $object_id) {
507 if (!in_array($object_id, $existing)) {
508 $added = $this->wsp_access_handler->addPermission($this->wsp_node_id, $object_id);
513 ilUtil::sendSuccess($this->lng->txt(
"wsp_share_success"),
true);
515 $this->ctrl->redirectByClass(
"ilworkspaceaccessgui",
"share");
static _lookupLogin($a_user_id)
lookup login
static _hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash
static convertUpperCamelCaseToUnderscoreCase($value)
Convert a value given in camel case conversion to underscore case conversion (e.g.
static getInstanceByGlobalUser()
addPermission($a_obj_ids)
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
Class ilRoleMailboxAddress.
static _getAllReferences($a_id)
get all reference ids of object
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
showMembers()
Show course members.
special template class to simplify handling of ITX/PEAR
__construct($wsp_access_handler=null, $wsp_node_id=null)
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
User interface class for advanced drop-down selection lists.
static _lookupPref($a_usr_id, $a_keyword)
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
if(empty($password)) $table
static redirect($a_script)