276 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.mail_search.html',
'Services/Contact');
277 $this->tpl->setVariable(
'ACTION', $this->
ctrl->getFormAction($this));
278 $this->tpl->setTitle($this->
lng->txt(
'mail'));
279 $this->tpl->setVariable(
'SEARCHFORM', $form->getHtml());
288 $this->tpl->printToStdout();
294 if (count($relations)) {
299 $query_parser->setMinWordLength(3);
300 $query_parser->parse();
303 $user_search->enableActiveCheck(
true);
304 $user_search->setFields([
'login']);
305 $result_obj = $user_search->performSearch();
306 $contacts_search_result->mergeEntries($result_obj);
308 $user_search->setFields([
'firstname']);
309 $result_obj = $user_search->performSearch();
310 $contacts_search_result->mergeEntries($result_obj);
312 $user_search->setFields([
'lastname']);
313 $result_obj = $user_search->performSearch();
314 $contacts_search_result->mergeEntries($result_obj);
316 $contacts_search_result->setMaxHits(100000);
317 $contacts_search_result->preventOverwritingMaxhits(
true);
322 $users = array_intersect($users, $relations->getKeys());
325 $tbl_contacts->setTitle($this->
lng->txt(
'mail_addressbook'));
326 $tbl_contacts->setRowTemplate(
'tpl.mail_search_addr_row.html',
'Services/Contact');
328 $has_mail_addr =
false;
331 foreach ($users as $user) {
335 foreach ([
'to',
'cc',
'bcc'] as $recipient_type) {
342 $result[$counter][
'login'] = $login;
344 $has_mail_addr =
true;
350 $result[$counter][
'firstname'] =
$name[
'firstname'];
351 $result[$counter][
'lastname'] =
$name[
'lastname'];
353 $result[$counter][
'firstname'] =
'';
354 $result[$counter][
'lastname'] =
'';
361 $tbl_contacts->addColumn(
362 $this->
lng->txt(
'mail_to') .
'/' . $this->
lng->txt(
'mail_cc') .
'/' . $this->
lng->txt(
'mail_bcc'),
367 $tbl_contacts->addColumn(
'',
'',
'1%',
true);
369 $tbl_contacts->addColumn($this->
lng->txt(
'login'),
'login',
'15%');
370 $tbl_contacts->addColumn($this->
lng->txt(
'firstname'),
'firstname',
'15%');
371 $tbl_contacts->addColumn($this->
lng->txt(
'lastname'),
'lastname',
'15%');
372 if ($has_mail_addr) {
373 foreach ($result as
$key => $val) {
374 if (!isset($val[
'email']) || (string) $val[
'email'] ===
'') {
375 $result[
$key][
'email'] =
' ';
379 $tbl_contacts->addColumn($this->
lng->txt(
'email'),
'email',
"15%");
381 $tbl_contacts->setData($result);
383 $tbl_contacts->setDefaultOrderField(
'login');
384 $tbl_contacts->enable(
'select_all');
385 $tbl_contacts->setSelectAllCheckbox(
'search_name_to_addr');
386 $tbl_contacts->setFormName(
'recipients');
388 $this->tpl->setVariable(
'TABLE_ADDR', $tbl_contacts->getHTML());
395 $query_parser->setMinWordLength(3);
396 $query_parser->parse();
399 $user_search->enableActiveCheck(
true);
400 $user_search->setFields([
'login']);
401 $result_obj = $user_search->performSearch();
402 $all_results->mergeEntries($result_obj);
404 $user_search->setFields([
'firstname']);
405 $result_obj = $user_search->performSearch();
406 $all_results->mergeEntries($result_obj);
408 $user_search->setFields([
'lastname']);
409 $result_obj = $user_search->performSearch();
410 $all_results->mergeEntries($result_obj);
412 $all_results->setMaxHits(100000);
413 $all_results->preventOverwritingMaxhits(
true);
417 $has_mail_usr =
false;
421 $tbl_users->setTitle($this->
lng->txt(
'system') .
': ' . $this->
lng->txt(
'persons'));
422 $tbl_users->setRowTemplate(
'tpl.mail_search_users_row.html',
'Services/Contact');
426 foreach ($users as $user) {
430 foreach ([
'to',
'cc',
'bcc'] as $recipient_type) {
436 $result[$counter][
'login'] = $login;
440 $result[$counter][
'firstname'] =
$name[
'firstname'];
441 $result[$counter][
'lastname'] =
$name[
'lastname'];
443 $result[$counter][
'firstname'] =
'';
444 $result[$counter][
'lastname'] =
'';
448 $has_mail_usr =
true;
456 $tbl_users->addColumn(
457 $this->
lng->txt(
'mail_to') .
'/' . $this->
lng->txt(
'mail_cc') .
'/' . $this->
lng->txt(
'mail_bcc'),
462 $tbl_users->addColumn(
'',
'',
'1%');
464 $tbl_users->addColumn($this->
lng->txt(
'login'),
'login',
'15%');
465 $tbl_users->addColumn($this->
lng->txt(
'firstname'),
'firstname',
'15%');
466 $tbl_users->addColumn($this->
lng->txt(
'lastname'),
'lastname',
'15%');
467 if ($has_mail_usr ===
true) {
468 foreach ($result as
$key => $val) {
469 if (!isset($val[
'email']) || (string) $val[
'email'] ===
'') {
470 $result[
$key][
'email'] =
' ';
474 $tbl_users->addColumn($this->
lng->txt(
'email'),
'email',
'15%');
476 $tbl_users->setData($result);
478 $tbl_users->setDefaultOrderField(
'login');
479 $tbl_users->enable(
'select_all');
480 $tbl_users->setSelectAllCheckbox(
'search_name_to_usr');
481 $tbl_users->setFormName(
'recipients');
483 $this->tpl->setVariable(
'TABLE_USERS', $tbl_users->getHTML());
490 $query_parser->setMinWordLength(3);
491 $query_parser->parse();
494 $search->setFilter([
'grp']);
495 $result = $search->performSearch();
496 $group_results->mergeEntries($result);
497 $group_results->setMaxHits(PHP_INT_MAX);
498 $group_results->preventOverwritingMaxhits(
true);
499 $group_results->setRequiredPermission(
'read');
502 $visible_groups = [];
503 if ($group_results->getResults()) {
505 $tbl_grp->setTitle($this->
lng->txt(
'system') .
': ' . $this->
lng->txt(
'groups'));
506 $tbl_grp->setRowTemplate(
'tpl.mail_search_groups_row.html',
'Services/Contact');
511 $this->object_data_cache->preloadReferenceCache(array_keys($group_results->getResults()));
513 $groups = $group_results->getResults();
514 foreach ($groups as $grp) {
521 $roles = $this->rbacreview->getAssignableChildRoles($grp[
'ref_id']);
522 foreach ($roles as $role) {
524 strpos($role[
'title'],
'il_grp_member_') === 0 ||
525 strpos($role[
'title'],
'il_grp_admin_') === 0
528 $members[] =
'#' . $role[
'title'];
531 $str_members = implode(
',', $members);
533 foreach ([
'to',
'cc',
'bcc'] as $recipient_type) {
539 $result[$counter][
'title'] = $this->object_data_cache->lookupTitle((
int) $grp[
'obj_id']);
540 $result[$counter][
'description'] = $this->object_data_cache->lookupDescription((
int) $grp[
'obj_id']);
543 $visible_groups[] = $grp;
546 if ($visible_groups) {
547 $tbl_grp->setData($result);
551 $this->
lng->txt(
'mail_to') .
'/' . $this->
lng->txt(
'mail_cc') .
'/' . $this->
lng->txt(
'mail_bcc'),
556 $tbl_grp->addColumn(
'',
'',
'1%');
558 $tbl_grp->addColumn($this->
lng->txt(
'title'),
'title',
'15%');
559 $tbl_grp->addColumn($this->
lng->txt(
'description'),
'description',
'15%');
561 $tbl_grp->setDefaultOrderField(
'title');
562 $tbl_grp->enable(
'select_all');
563 $tbl_grp->setSelectAllCheckbox(
'search_name_to_grp');
564 $tbl_grp->setFormName(
'recipients');
566 $this->tpl->setVariable(
'TABLE_GRP', $tbl_grp->getHTML());
570 if (count($users) || count($visible_groups) || count($relations)) {
572 $this->tpl->setVariable(
"ALT_ARROW",
'');
574 $this->tpl->setVariable(
"ALT_ARROW_UP",
'');
577 $this->tpl->setVariable(
'BUTTON_ADOPT', $this->
lng->txt(
'adopt'));
579 $this->tpl->setVariable(
'BUTTON_ADOPT', $this->
lng->txt(
'wsp_share_with_users'));
582 $this->
lng->loadLanguageModule(
'search');
583 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'search_no_match'));
587 $this->tpl->printToStdout();
static get(string $a_var)
static getInstanceByGlobalUser()
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static _lookupName(int $a_user_id)
lookup user name
static _lookupPref(int $a_usr_id, string $a_keyword)
static _getUserSearchInstance(ilQueryParser $query_parser)
static _getObjectSearchInstance(ilQueryParser $query_parser)
static hasParticipantListAccess(int $a_obj_id, int $a_usr_id=null)
Check if (current) user has access to the participant list.
isDefaultRequestContext()
appendRecipientSelection(array &$result, int $index, string $search_type, string $recipient_type, string $value)
static _lookupEmail(int $a_user_id)
static _lookupLogin(int $a_user_id)