24 require_once
'./Services/User/classes/class.ilObjUser.php';
25 require_once
'Services/Mail/classes/class.ilMailbox.php';
26 require_once
'Services/Mail/classes/class.ilFormatMail.php';
27 include_once
'Services/Table/classes/class.ilTable2GUI.php';
28 include_once
'Services/Search/classes/class.ilQueryParser.php';
29 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
30 include_once
'Services/Search/classes/class.ilSearchResult.php';
69 public function __construct($wsp_access_handler = null, $wsp_node_id = null)
73 $this->tpl = $DIC[
'tpl'];
74 $this->ctrl = $DIC[
'ilCtrl'];
75 $this->lng = $DIC[
'lng'];
76 $this->rbacreview = $DIC[
'rbacreview'];
77 $this->object_data_cache = $DIC[
'ilObjDataCache'];
80 $this->wsp_access_handler = $wsp_access_handler;
81 $this->wsp_node_id = $wsp_node_id;
83 $this->ctrl->saveParameter($this,
"mobj_id");
84 $this->ctrl->saveParameter($this,
"ref");
91 $forward_class = $this->ctrl->getNextClass($this);
92 switch($forward_class)
95 if (!(
$cmd = $this->ctrl->getCmd()))
109 $recipients =
array();
110 $recipients = array_merge($recipients, (
array)
$_POST[
'search_name_to_addr']);
111 $recipients = array_merge($recipients, (
array)$_POST[
'search_name_to_usr']);
112 $recipients = array_merge($recipients, (
array)$_POST[
'search_name_to_grp']);
114 $recipients = array_unique($recipients);
116 $_SESSION[
"mail_search_results_to"] = $recipients;
117 $_SESSION[
"mail_search_results_cc"] = $_POST[
"search_name_cc"];
118 $_SESSION[
"mail_search_results_bcc"] = $_POST[
"search_name_bcc"];
120 if(
$_GET[
"ref"] !=
"wsp")
129 $this->ctrl->returnToParent($this);
134 $mail_data = $this->umail->getSavedData();
136 $this->umail->savePostData(
137 $mail_data[
"user_id"],
138 $mail_data[
"attachments"],
139 $mail_data[
"rcp_to"],
140 $mail_data[
"rcp_cc"],
141 $mail_data[
"rcp_bcc"],
142 $mail_data[
"m_type"],
143 $mail_data[
"m_email"],
144 $mail_data[
"m_subject"],
145 $mail_data[
"m_message"],
146 $mail_data[
"use_placeholders"],
147 $mail_data[
'tpl_ctx_id'],
148 $mail_data[
'tpl_ctx_params']
154 $this->ctrl->returnToParent($this);
161 if (strlen(trim(
$_SESSION[
"mail_search_search"])) == 0)
165 else if(strlen(trim(
$_SESSION[
"mail_search_search"])) < 3)
167 $this->lng->loadLanguageModule(
'search');
178 if(
$_GET[
"ref"] !=
"wsp")
181 $title = $this->lng->txt(
'search_recipients');
185 $this->lng->loadLanguageModule(
"wsp");
186 $title = $this->lng->txt(
"wsp_share_search_users");
190 include_once
'Services/Form/classes/class.ilPropertyFormGUI.php';
193 $form->setId(
'search_rcp');
194 $form->setFormAction($this->ctrl->getFormAction($this,
'search'));
196 $inp =
new ilTextInputGUI($this->lng->txt(
"search_for"),
'search');
198 $dsDataLink = $this->ctrl->getLinkTarget($this,
'lookupRecipientAsync',
'',
true,
false);
199 $inp->setDataSource($dsDataLink);
201 if (strlen(trim(
$_SESSION[
"mail_search_search"])) > 0)
205 $form->addItem($inp);
207 $form->addCommandButton(
'search', $this->lng->txt(
"search"));
208 $form->addCommandButton(
'cancel', $this->lng->txt(
"cancel"));
215 include_once
'Services/JSON/classes/class.ilJsonUtil.php';
216 include_once
'Services/Mail/classes/class.ilMailForm.php';
217 include_once
'Services/Utilities/classes/class.ilStr.php';
220 if (isset(
$_GET[
"term"]) && is_string(
$_GET[
"term"])) {
221 $search =
$_GET[
"term"];
223 if (isset(
$_POST[
"term"]) && is_string(
$_POST[
"term"])) {
227 $search = trim($search);
237 $quoted = str_replace(
'%',
'\%', $quoted);
238 $quoted = str_replace(
'_',
'\_', $quoted);
240 $search_recipients = (
$_GET[
"ref"] !=
"wsp");
254 $this->tpl->addBlockFile(
"ADM_CONTENT",
"adm_content",
"tpl.mail_search.html",
"Services/Contact");
255 $this->tpl->setVariable(
"ACTION", $this->ctrl->getFormAction($this));
256 $this->tpl->setTitle($this->lng->txt(
"mail"));
257 $this->tpl->setVariable(
'SEARCHFORM', $form->getHtml());
260 if(strlen(
$_SESSION[
'mail_search_search']) < 3)
262 if(
$_GET[
"ref"] !=
"wsp")
269 require_once
'Services/Contact/BuddySystem/classes/class.ilBuddyList.php';
271 if(count($relations))
277 $query_parser->setMinWordLength(3);
278 $query_parser->parse();
281 $user_search->enableActiveCheck(
true);
282 $user_search->setFields(
array(
'login'));
283 $result_obj = $user_search->performSearch();
284 $contacts_search_result->mergeEntries($result_obj);
286 $user_search->setFields(
array(
'firstname'));
287 $result_obj = $user_search->performSearch();
288 $contacts_search_result->mergeEntries($result_obj);
290 $user_search->setFields(
array(
'lastname'));
291 $result_obj = $user_search->performSearch();
292 $contacts_search_result->mergeEntries($result_obj);
294 $contacts_search_result->setMaxHits(100000);
295 $contacts_search_result->preventOverwritingMaxhits(
true);
296 $contacts_search_result->filter(ROOT_FOLDER_ID,
true);
299 include_once
'Services/User/classes/class.ilUserFilter.php';
301 $users = array_intersect($users, $relations->getKeys());
304 $tbl_contacts->setTitle($this->lng->txt(
'mail_addressbook'));
305 $tbl_contacts->setRowTemplate(
'tpl.mail_search_addr_row.html',
'Services/Contact');
307 $has_mail_addr =
false;
310 foreach($users as $user)
314 if(
$_GET[
'ref'] ==
'wsp')
329 $has_mail_addr =
true;
348 if(
$_GET[
'ref'] ==
'wsp')
350 $tbl_contacts->addColumn(
"",
"",
"1%",
true);
354 $tbl_contacts->addColumn($this->lng->txt(
'mail_to') .
'/' . $this->lng->txt(
'cc') .
'/' . $this->lng->txt(
'bc'),
'check',
'10%');
356 $tbl_contacts->addColumn($this->lng->txt(
'login'),
'login',
'15%');
357 $tbl_contacts->addColumn($this->lng->txt(
'firstname'),
'firstname',
'15%');
358 $tbl_contacts->addColumn($this->lng->txt(
'lastname'),
'lastname',
'15%');
361 foreach(
$result as $key => $val)
363 if($val[
'email'] ==
'')
$result[$key][
'email'] =
' ';
366 $tbl_contacts->addColumn($this->lng->txt(
'email'),
'email',
"15%");
368 $tbl_contacts->setData(
$result);
370 $tbl_contacts->setDefaultOrderField(
'login');
371 $tbl_contacts->setPrefix(
'addr_');
372 $tbl_contacts->enable(
'select_all');
373 $tbl_contacts->setSelectAllCheckbox(
'search_name_to_addr');
374 $tbl_contacts->setFormName(
'recipients');
376 $this->tpl->setVariable(
'TABLE_ADDR', $tbl_contacts->getHTML());
383 $query_parser->setMinWordLength(3);
384 $query_parser->parse();
387 $user_search->enableActiveCheck(
true);
388 $user_search->setFields(
array(
'login'));
389 $result_obj = $user_search->performSearch();
390 $all_results->mergeEntries($result_obj);
392 $user_search->setFields(
array(
'firstname'));
393 $result_obj = $user_search->performSearch();
394 $all_results->mergeEntries($result_obj);
396 $user_search->setFields(
array(
'lastname'));
397 $result_obj = $user_search->performSearch();
398 $all_results->mergeEntries($result_obj);
400 $all_results->setMaxHits(100000);
401 $all_results->preventOverwritingMaxhits(
true);
402 $all_results->filter(ROOT_FOLDER_ID,
true);
405 include_once
'Services/User/classes/class.ilUserFilter.php';
410 $tbl_users->setTitle($this->lng->txt(
'system') .
': ' . $this->lng->txt(
'persons'));
411 $tbl_users->setRowTemplate(
'tpl.mail_search_users_row.html',
'Services/Contact');
415 foreach($users as $user)
419 if(
$_GET[
"ref"] !=
"wsp")
445 $has_mail_usr =
true;
452 if(
$_GET[
"ref"] !=
"wsp")
454 $tbl_users->addColumn($this->lng->txt(
'mail_to') .
'/' . $this->lng->txt(
'cc') .
'/' . $this->lng->txt(
'bc'),
'check',
'10%');
458 $tbl_users->addColumn(
"",
"",
"1%");
460 $tbl_users->addColumn($this->lng->txt(
'login'),
'login',
'15%');
461 $tbl_users->addColumn($this->lng->txt(
'firstname'),
'firstname',
'15%');
462 $tbl_users->addColumn($this->lng->txt(
'lastname'),
'lastname',
'15%');
463 if($has_mail_usr ==
true)
465 foreach(
$result as $key => $val)
467 if($val[
'email'] ==
'')
$result[$key][
'email'] =
' ';
470 $tbl_users->addColumn($this->lng->txt(
'email'),
'email',
'15%');
474 $tbl_users->setDefaultOrderField(
'login');
475 $tbl_users->setPrefix(
'usr_');
476 $tbl_users->enable(
'select_all');
477 $tbl_users->setSelectAllCheckbox(
'search_name_to_usr');
478 $tbl_users->setFormName(
'recipients');
480 $this->tpl->setVariable(
'TABLE_USERS', $tbl_users->getHTML());
483 include_once
'Services/Search/classes/class.ilQueryParser.php';
484 include_once
'Services/Search/classes/class.ilObjectSearchFactory.php';
485 include_once
'Services/Search/classes/class.ilSearchResult.php';
486 include_once
'Services/Membership/classes/class.ilParticipants.php';
492 $query_parser->setMinWordLength(3);
493 $query_parser->parse();
496 $search->setFilter(
array(
'grp'));
497 $result = $search->performSearch();
498 $group_results->mergeEntries(
$result);
499 $group_results->setMaxHits(PHP_INT_MAX);
500 $group_results->preventOverwritingMaxhits(
true);
501 $group_results->setRequiredPermission(
'read');
502 $group_results->filter(ROOT_FOLDER_ID,
true);
504 $visible_groups =
array();
505 if($group_results->getResults())
508 $tbl_grp->setTitle($this->lng->txt(
'system') .
': ' . $this->lng->txt(
'groups'));
509 $tbl_grp->setRowTemplate(
'tpl.mail_search_groups_row.html',
'Services/Contact');
514 $this->object_data_cache->preloadReferenceCache(array_keys($group_results->getResults()));
516 $groups = $group_results->getResults();
517 foreach($groups as $grp)
524 if(
$_GET[
"ref"] !=
"wsp")
527 $roles = $this->rbacreview->getAssignableChildRoles($grp[
'ref_id']);
528 foreach($roles as $role)
530 if(substr($role[
'title'], 0, 14) ==
'il_grp_member_' ||
531 substr($role[
'title'], 0, 13) ==
'il_grp_admin_' 535 array_push($members,
'#' . $role[
'title']);
538 $str_members = implode(
',', $members);
549 $result[
$counter][
'title'] = $this->object_data_cache->lookupTitle($grp[
'obj_id']);
550 $result[
$counter][
'description'] = $this->object_data_cache->lookupDescription($grp[
'obj_id']);
553 $visible_groups[] = $grp;
560 if(
$_GET[
"ref"] !=
"wsp")
562 $tbl_grp->addColumn($this->lng->txt(
'mail_to') .
'/' . $this->lng->txt(
'cc') .
'/' . $this->lng->txt(
'bc'),
'check',
'10%');
566 $tbl_grp->addColumn(
"",
"",
"1%");
568 $tbl_grp->addColumn($this->lng->txt(
'title'),
'title',
'15%');
569 $tbl_grp->addColumn($this->lng->txt(
'description'),
'description',
'15%');
571 $tbl_grp->setDefaultOrderField(
'title');
572 $tbl_grp->setPrefix(
'grp_');
573 $tbl_grp->enable(
'select_all');
574 $tbl_grp->setSelectAllCheckbox(
'search_name_to_grp');
575 $tbl_grp->setFormName(
'recipients');
577 $this->tpl->setVariable(
'TABLE_GRP', $tbl_grp->getHTML());
581 if(count($users) || count($visible_groups) || count($relations))
584 $this->tpl->setVariable(
"ALT_ARROW",
'');
586 if(
$_GET[
"ref"] !=
"wsp")
588 $this->tpl->setVariable(
'BUTTON_ADOPT', $this->lng->txt(
'adopt'));
592 $this->tpl->setVariable(
'BUTTON_ADOPT', $this->lng->txt(
'wsp_share_with_users'));
597 $this->lng->loadLanguageModule(
'search');
601 if(
$_GET[
"ref"] !=
"wsp")
609 if(!is_array($a_obj_ids))
611 $a_obj_ids =
array($a_obj_ids);
614 $existing = $this->wsp_access_handler->getPermissions($this->wsp_node_id);
616 foreach($a_obj_ids as $object_id)
618 if(!in_array($object_id, $existing))
620 $added = $this->wsp_access_handler->addPermission($this->wsp_node_id, $object_id);
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static _lookupLogin($a_user_id)
lookup login
static _lookupName($a_user_id)
lookup user name
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
static getInstanceByGlobalUser()
__construct($wsp_access_handler=null, $wsp_node_id=null)
static getInstance()
Singelton get instance.
static hasParticipantListAccess($a_obj_id, $a_usr_id=null)
Check if (current) user has access to the participant list.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static _getUserSearchInstance($query_parser)
get reference of ilLikeUserSearch
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
setSize($a_size)
Set Size.
This class represents a text property in a property form.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
Create styles array
The data for the language used.
addPermission($a_obj_ids)
static _lookupEmail($a_user_id)
Lookup email.
static _lookupPref($a_usr_id, $a_keyword)
static _getObjectSearchInstance($query_parser)
get reference of ilFulltext/LikeObjectSearch.
static formCheckbox($checked, $varname, $value, $disabled=false)
??? public