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';
27 public function __construct($wsp_access_handler = null, $wsp_node_id = null)
36 $this->wsp_access_handler = $wsp_access_handler;
37 $this->wsp_node_id = $wsp_node_id;
40 include_once
"Services/Mail/classes/class.ilMail.php";
42 $this->mailing_allowed = $rbacsystem->checkAccess(
'internal_mail',$mail->getMailObjectReferenceId());
44 $this->ctrl->saveParameter($this,
"mobj_id");
45 $this->ctrl->saveParameter($this,
"ref");
50 public function executeCommand()
57 $forward_class = $this->ctrl->getNextClass($this);
58 switch($forward_class)
60 case 'ilbuddysystemgui':
63 $ilErr->raiseError($this->lng->txt(
'msg_no_perm_read'), $ilErr->MESSAGE);
66 require_once
'Services/Contact/BuddySystem/classes/class.ilBuddySystemGUI.php';
67 $this->ctrl->saveParameter($this,
'search_crs');
68 $this->ctrl->setReturn($this,
'showMembers');
73 if (!(
$cmd = $this->ctrl->getCmd()))
75 $cmd =
"showMyCourses";
87 if (
$_GET[
"view"] ==
"mycourses")
89 $ids = ((int)
$_GET[
'search_crs']) ? array((
int)
$_GET[
'search_crs']) :
$_POST[
'search_crs'];
98 $this->showMyCourses();
101 else if (
$_GET[
"view"] ==
"crs_members")
103 $ids = ((int)
$_GET[
'search_members']) ? array((
int)
$_GET[
'search_members']) :
$_POST[
'search_members'];
116 $this->showMyCourses();
126 if (!is_array($old_mail_data = $this->umail->getSavedData()))
128 $this->umail->savePostData(
142 require_once
'./Services/Object/classes/class.ilObject.php';
144 $ids = ((int)
$_GET[
'search_crs']) ? array((
int)
$_GET[
'search_crs']) :
$_POST[
'search_crs'];
146 foreach ($ids as $crs_id)
152 $roles = $rbacreview->getAssignableChildRoles($ref_id);
153 foreach ($roles as $role)
155 if (substr($role[
'title'], 0, 14) ==
'il_crs_member_' ||
156 substr($role[
'title'], 0, 13) ==
'il_crs_tutor_' ||
157 substr($role[
'title'], 0, 13) ==
'il_crs_admin_')
159 if(isset($old_mail_data[
'rcp_to']) &&
160 trim($old_mail_data[
'rcp_to']) !=
'')
162 $rcpt = $rbacreview->getRoleMailboxAddress($role[
'obj_id']);
163 if(!$this->umail->doesRecipientStillExists($rcpt, $old_mail_data[
'rcp_to']))
165 array_push($members, $rcpt);
170 array_push($members, $rbacreview->getRoleMailboxAddress($role[
'obj_id']));
178 $mail_data = $this->umail->appendSearchResult($members,
'to');
180 $mail_data = $this->umail->getSavedData();
182 $this->umail->savePostData(
183 $mail_data[
"user_id"],
184 $mail_data[
"attachments"],
185 $mail_data[
"rcp_to"],
186 $mail_data[
"rcp_cc"],
187 $mail_data[
"rcp_bcc"],
188 $mail_data[
"m_type"],
189 $mail_data[
"m_email"],
190 $mail_data[
"m_subject"],
191 $mail_data[
"m_message"],
192 $mail_data[
"use_placeholders"],
193 $mail_data[
'tpl_ctx_id'],
194 $mail_data[
'tpl_ctx_params']
197 #$this->ctrl->returnToParent($this); 207 if (!is_array($this->umail->getSavedData()))
209 $this->umail->savePostData(
223 $ids = ((int)
$_GET[
'search_members']) ? array((
int)
$_GET[
'search_members']) :
$_POST[
'search_members'];
225 foreach ($ids as $member)
228 array_push($members, $login);
230 $mail_data = $this->umail->appendSearchResult($members,
"to");
232 $this->umail->savePostData(
233 $mail_data[
"user_id"],
234 $mail_data[
"attachments"],
235 $mail_data[
"rcp_to"],
236 $mail_data[
"rcp_cc"],
237 $mail_data[
"rcp_bcc"],
238 $mail_data[
"m_type"],
239 $mail_data[
"m_email"],
240 $mail_data[
"m_subject"],
241 $mail_data[
"m_message"],
242 $mail_data[
"use_placeholders"],
243 $mail_data[
'tpl_ctx_id'],
244 $mail_data[
'tpl_ctx_params']
247 #$this->ctrl->returnToParent($this); 256 if (
$_GET[
"view"] ==
"mycourses" &&
257 $_GET[
"ref"] ==
"mail")
259 $this->ctrl->returnToParent($this);
263 $this->showMyCourses();
270 public function showMyCourses()
274 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
276 $this->tpl->setTitle($this->lng->txt(
'mail_addressbook') );
278 $searchTpl =
new ilTemplate(
'tpl.mail_search_template.html',
true,
true,
'Services/Contact');
280 $_GET[
'view'] =
'mycourses';
282 $lng->loadLanguageModule(
'crs');
284 include_once
'Services/Contact/classes/class.ilMailSearchCoursesTableGUI.php';
286 $table->setId(
'search_crs_tbl');
287 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
290 $tableData = array();
291 if (is_array($crs_ids) && count($crs_ids) > 0)
293 $num_courses_hidden_members = 0;
294 include_once(
"./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
295 foreach($crs_ids as $crs_id)
302 $isOffline = !$oTmpCrs->isActivated();
304 $showMemberListEnabled = (boolean)$oTmpCrs->getShowMembers();
306 $isPrivilegedUser = $rbacsystem->checkAccess(
'write', $ref_ids[0]);
308 if($hasUntrashedReferences && ((!$isOffline && $showMemberListEnabled) || $isPrivilegedUser))
311 $crs_members = $oCrsParticipants->getParticipants();
313 foreach($crs_members as $key => $member)
316 if($tmp_usr->checkTimeLimit()==
false || $tmp_usr->getActive() == false )
318 unset($crs_members[$key]);
323 $hiddenMembers =
false;
324 if((
int)$oTmpCrs->getShowMembers() == $oTmpCrs->SHOW_MEMBERS_DISABLED)
326 ++$num_courses_hidden_members;
327 $hiddenMembers =
true;
333 $path_arr = $tree->getPathFull(
$ref_id, $tree->getRootId());
336 foreach($path_arr as
$data)
342 $path .= $data[
'title'];
347 $current_selection_list->setListTitle($this->lng->txt(
"actions"));
348 $current_selection_list->setId(
"act_".$counter);
350 $this->ctrl->setParameter($this,
'search_crs', $crs_id);
351 $this->ctrl->setParameter($this,
'view',
'mycourses');
353 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 else if(
$_GET[
"ref"] ==
"wsp")
360 $current_selection_list->addItem($this->lng->txt(
"wsp_share_with_members"),
'', $this->ctrl->getLinkTarget($this,
"share"));
362 $current_selection_list->addItem($this->lng->txt(
"mail_list_members"),
'', $this->ctrl->getLinkTarget($this,
"showMembers"));
364 $this->ctrl->clearParameters($this);
369 "CRS_NAME" => $ilObjDataCache->lookupTitle($crs_id),
370 "CRS_NO_MEMBERS" => count($crs_members),
372 'COMMAND_SELECTION_LIST' => $current_selection_list->getHTML(),
373 "hidden_members" => $hiddenMembers,
376 $tableData[] = $rowData;
386 if($num_courses_hidden_members > 0)
388 $searchTpl->setCurrentBlock(
'caption_block');
389 $searchTpl->setVariable(
'TXT_LIST_MEMBERS_NOT_AVAILABLE', $this->lng->txt(
'mail_crs_list_members_not_available'));
390 $searchTpl->parseCurrentBlock();
394 $searchTpl->setVariable(
'TXT_MARKED_ENTRIES', $lng->txt(
'marked_entries'));
396 $table->setData($tableData);
397 if(
$_GET[
'ref'] ==
'mail') $this->tpl->setVariable(
'BUTTON_CANCEL', $lng->txt(
'cancel'));
399 $searchTpl->setVariable(
'TABLE', $table->getHtml());
400 $tpl->setContent($searchTpl->get());
402 if(
$_GET[
"ref"] !=
"wsp")
415 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
417 if (
$_GET[
"search_crs"] !=
"")
419 $_POST[
"search_crs"] = explode(
",",
$_GET[
"search_crs"]);
420 $_GET[
"search_crs"] =
"";
428 if(is_array(
$_POST[
'search_crs']))
430 $_POST[
'search_crs'] = array_filter(array_map(
'intval',
$_POST[
'search_crs']));
433 if (!is_array(
$_POST[
"search_crs"]) ||
434 count(
$_POST[
"search_crs"]) == 0)
437 $this->showMyCourses();
441 foreach(
$_POST[
'search_crs'] as $crs_id)
444 if($oTmpCrs->getShowMembers() == $oTmpCrs->SHOW_MEMBERS_DISABLED)
446 unset(
$_POST[
'search_crs']);
447 ilUtil::sendInfo($lng->txt(
'mail_crs_list_members_not_available_for_at_least_one_crs'));
448 return $this->showMyCourses();
453 $this->tpl->setTitle($this->lng->txt(
"mail_addressbook"));
455 $this->ctrl->setParameter($this,
"view",
"crs_members");
456 if (
$_GET[
"ref"] !=
"") $this->ctrl->setParameter($this,
"ref",
$_GET[
"ref"]);
457 if (is_array(
$_POST[
"search_crs"])) $this->ctrl->setParameter($this,
"search_crs", implode(
",",
$_POST[
"search_crs"]));
458 $this->tpl->setVariable(
"ACTION", $this->ctrl->getFormAction($this));
459 $this->ctrl->clearParameters($this);
461 $lng->loadLanguageModule(
'crs');
462 include_once
'Services/Contact/classes/class.ilMailSearchCoursesMembersTableGUI.php';
463 $context =
$_GET[
"ref"] ?
$_GET[
"ref"] :
"mail";
465 $tableData = array();
466 $searchTpl =
new ilTemplate(
'tpl.mail_search_template.html',
true,
true,
'Services/Contact');
467 foreach(
$_POST[
"search_crs"] as $crs_id)
469 $members_obj = ilCourseParticipants::_getinstanceByObjId($crs_id);
470 $tmp_members = $members_obj->getParticipants();
471 $course_members =
ilUtil::_sortIds($tmp_members,
'usr_data',
'lastname',
'usr_id');
473 foreach ($course_members as $member)
476 if($tmp_usr->checkTimeLimit()==
false || $tmp_usr->getActive() == false )
488 $fullname = $name[
'lastname'].
', '.$name[
'firstname'];
491 'members_id' => $member,
492 'members_login' => $login,
493 'members_name' => $fullname,
494 'members_crs_grp' => $ilObjDataCache->lookupTitle($crs_id),
495 'search_crs' => $crs_id
500 $relation = ilBuddyList::getInstanceByGlobalUser()->getRelationByUserId($member);
502 $rowData[
'status'] =
'';
503 if($member != $ilUser->getId())
505 if($relation->isOwnedByRequest())
507 $rowData[
'status'] = $this->lng->txt(
'buddy_bs_state_' . $state_name .
'_a');
511 $rowData[
'status'] = $this->lng->txt(
'buddy_bs_state_' . $state_name .
'_p');
516 $tableData[] = $rowData;
519 $table->setData($tableData);
520 if (count($tableData))
522 $searchTpl->setVariable(
"TXT_MARKED_ENTRIES",$lng->txt(
"marked_entries"));
525 $searchTpl->setVariable(
'TABLE', $table->getHtml());
526 $this->tpl->setContent($searchTpl->get());
528 if(
$_GET[
"ref"] !=
"wsp")
539 if (
$_GET[
"view"] ==
"mycourses")
549 $this->showMyCourses();
552 else if (
$_GET[
"view"] ==
"crs_members")
567 $this->showMyCourses();
573 if(!is_array($a_obj_ids))
575 $a_obj_ids = array($a_obj_ids);
578 $existing = $this->wsp_access_handler->getPermissions($this->wsp_node_id);
580 foreach($a_obj_ids as $object_id)
582 if(!in_array($object_id, $existing))
584 $added = $this->wsp_access_handler->addPermission($this->wsp_node_id, $object_id);
592 $this->ctrl->redirectByClass(
"ilworkspaceaccessgui",
"share");
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
addPermission($a_obj_ids)
static _lookupLogin($a_user_id)
lookup login
static _lookupName($a_user_id)
lookup user name
static convertUpperCamelCaseToUnderscoreCase($value)
Convert a value given in camel case conversion to underscore case conversion (e.g.
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
__construct($wsp_access_handler=null, $wsp_node_id=null)
_lookupPref($a_usr_id, $a_keyword)
static _getAllReferences($a_id)
get all reference ids of object
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static _sortIds($a_ids, $a_table, $a_field, $a_id_name)
Function that sorts ids by a given table field using WHERE IN E.g: __sort(array(6,7),'usr_data','lastname','usr_id') => sorts by lastname.
showMembers()
Show course members.
Class Mail this class handles base functions for mail handling.
special template class to simplify handling of ITX/PEAR
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
User interface class for advanced drop-down selection lists.
_hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash
if($_REQUEST['ilias_path']) define('ILIAS_HTTP_PATH' $_REQUEST['ilias_path']
static redirect($a_script)
http redirect to other script