272 : void
273 {
275
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());
280
281
282 if (
286 ) {
288 $this->tpl->printToStdout();
289 }
290 return;
291 }
292
294 if (count($relations)) {
296
299 $query_parser->setMinWordLength(3);
300 $query_parser->parse();
301
303 $user_search->enableActiveCheck(true);
304 $user_search->setFields(['login']);
305 $result_obj = $user_search->performSearch();
306 $contacts_search_result->mergeEntries($result_obj);
307
308 $user_search->setFields(['firstname']);
309 $result_obj = $user_search->performSearch();
310 $contacts_search_result->mergeEntries($result_obj);
311
312 $user_search->setFields(['lastname']);
313 $result_obj = $user_search->performSearch();
314 $contacts_search_result->mergeEntries($result_obj);
315
316 $contacts_search_result->setMaxHits(100000);
317 $contacts_search_result->preventOverwritingMaxhits(true);
319
320
322 $users = array_intersect($users, $relations->getKeys());
323
325 $tbl_contacts->setTitle($this->
lng->txt(
'mail_addressbook'));
326 $tbl_contacts->setRowTemplate('tpl.mail_search_addr_row.html', 'Services/Contact');
327
328 $has_mail_addr = false;
329 $result = [];
330 $counter = 0;
331 foreach ($users as $user) {
333
335 foreach (['to', 'cc', 'bcc'] as $recipient_type) {
337 }
338 } else {
340 }
341
342 $result[$counter]['login'] = $login;
344 $has_mail_addr = true;
346 }
347
350 $result[$counter][
'firstname'] =
$name[
'firstname'];
351 $result[$counter][
'lastname'] =
$name[
'lastname'];
352 } else {
353 $result[$counter]['firstname'] = '';
354 $result[$counter]['lastname'] = '';
355 }
356
357 ++$counter;
358 }
359
361 $tbl_contacts->addColumn(
362 $this->
lng->txt(
'mail_to') .
'/' . $this->lng->txt(
'mail_cc') .
'/' . $this->lng->txt(
'mail_bcc'),
363 'check',
364 '10%'
365 );
366 } else {
367 $tbl_contacts->addColumn('', '', '1%', true);
368 }
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'] =
' ';
376 }
377 }
378
379 $tbl_contacts->addColumn($this->
lng->txt(
'email'),
'email',
"15%");
380 }
381 $tbl_contacts->setData($result);
382
383 $tbl_contacts->setDefaultOrderField('login');
384 $tbl_contacts->enable('select_all');
385 $tbl_contacts->setSelectAllCheckbox('search_name_to_addr');
386 $tbl_contacts->setFormName('recipients');
387
388 $this->tpl->setVariable('TABLE_ADDR', $tbl_contacts->getHTML());
389 }
390
392
395 $query_parser->setMinWordLength(3);
396 $query_parser->parse();
397
399 $user_search->enableActiveCheck(true);
400 $user_search->setFields(['login']);
401 $result_obj = $user_search->performSearch();
402 $all_results->mergeEntries($result_obj);
403
404 $user_search->setFields(['firstname']);
405 $result_obj = $user_search->performSearch();
406 $all_results->mergeEntries($result_obj);
407
408 $user_search->setFields(['lastname']);
409 $result_obj = $user_search->performSearch();
410 $all_results->mergeEntries($result_obj);
411
412 $all_results->setMaxHits(100000);
413 $all_results->preventOverwritingMaxhits(true);
415
416
417 $has_mail_usr = false;
419 if ($users !== []) {
421 $tbl_users->setTitle($this->
lng->txt(
'system') .
': ' . $this->lng->txt(
'persons'));
422 $tbl_users->setRowTemplate('tpl.mail_search_users_row.html', 'Services/Contact');
423
424 $result = [];
425 $counter = 0;
426 foreach ($users as $user) {
428
430 foreach (['to', 'cc', 'bcc'] as $recipient_type) {
432 }
433 } else {
435 }
436 $result[$counter]['login'] = $login;
437
440 $result[$counter][
'firstname'] =
$name[
'firstname'];
441 $result[$counter][
'lastname'] =
$name[
'lastname'];
442 } else {
443 $result[$counter]['firstname'] = '';
444 $result[$counter]['lastname'] = '';
445 }
446
448 $has_mail_usr = true;
450 }
451
452 ++$counter;
453 }
454
456 $tbl_users->addColumn(
457 $this->
lng->txt(
'mail_to') .
'/' . $this->lng->txt(
'mail_cc') .
'/' . $this->lng->txt(
'mail_bcc'),
458 'check',
459 '10%'
460 );
461 } else {
462 $tbl_users->addColumn('', '', '1%');
463 }
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'] =
' ';
471 }
472 }
473
474 $tbl_users->addColumn($this->
lng->txt(
'email'),
'email',
'15%');
475 }
476 $tbl_users->setData($result);
477
478 $tbl_users->setDefaultOrderField('login');
479 $tbl_users->enable('select_all');
480 $tbl_users->setSelectAllCheckbox('search_name_to_usr');
481 $tbl_users->setFormName('recipients');
482
483 $this->tpl->setVariable('TABLE_USERS', $tbl_users->getHTML());
484 }
485
487
490 $query_parser->setMinWordLength(3);
491 $query_parser->parse();
492
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');
501
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');
507
508 $result = [];
509 $counter = 0;
510
511 $this->object_data_cache->preloadReferenceCache(array_keys($group_results->getResults()));
512
513 $groups = $group_results->getResults();
514 foreach ($groups as $grp) {
516 continue;
517 }
518
520 $members = [];
521 $roles = $this->rbacreview->getAssignableChildRoles($grp['ref_id']);
522 foreach ($roles as $role) {
523 if (
524 strpos($role['title'], 'il_grp_member_') === 0 ||
525 strpos($role['title'], 'il_grp_admin_') === 0
526 ) {
527
528 $members[] = '#' . $role['title'];
529 }
530 }
531 $str_members = implode(',', $members);
532
533 foreach (['to', 'cc', 'bcc'] as $recipient_type) {
535 }
536 } else {
538 }
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']);
541
542 ++$counter;
543 $visible_groups[] = $grp;
544 }
545
546 if ($visible_groups) {
547 $tbl_grp->setData($result);
548
550 $tbl_grp->addColumn(
551 $this->
lng->txt(
'mail_to') .
'/' . $this->lng->txt(
'mail_cc') .
'/' . $this->lng->txt(
'mail_bcc'),
552 'check',
553 '10%'
554 );
555 } else {
556 $tbl_grp->addColumn('', '', '1%');
557 }
558 $tbl_grp->addColumn($this->
lng->txt(
'title'),
'title',
'15%');
559 $tbl_grp->addColumn($this->
lng->txt(
'description'),
'description',
'15%');
560
561 $tbl_grp->setDefaultOrderField('title');
562 $tbl_grp->enable('select_all');
563 $tbl_grp->setSelectAllCheckbox('search_name_to_grp');
564 $tbl_grp->setFormName('recipients');
565
566 $this->tpl->setVariable('TABLE_GRP', $tbl_grp->getHTML());
567 }
568 }
569
570 if (count($users) || count($visible_groups) || count($relations)) {
572 $this->tpl->setVariable("ALT_ARROW", '');
574 $this->tpl->setVariable("ALT_ARROW_UP", '');
575
577 $this->tpl->setVariable(
'BUTTON_ADOPT', $this->
lng->txt(
'adopt'));
578 } else {
579 $this->tpl->setVariable(
'BUTTON_ADOPT', $this->
lng->txt(
'wsp_share_with_users'));
580 }
581 } else {
582 $this->
lng->loadLanguageModule(
'search');
583 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'search_no_match'));
584 }
585
587 $this->tpl->printToStdout();
588 }
589 }
static getInstanceByGlobalUser()
appendRecipientSelection(array &$result, int $index, string $search_type, string $recipient_type, string $value)
static _lookupName(int $a_user_id)
lookup user name
static _lookupPref(int $a_usr_id, string $a_keyword)
static _lookupLogin(int $a_user_id)
static _lookupEmail(int $a_user_id)
static _getObjectSearchInstance(ilQueryParser $query_parser)
static _getUserSearchInstance(ilQueryParser $query_parser)
static hasParticipantListAccess(int $a_obj_id, int $a_usr_id=null)
Check if (current) user has access to the participant list.
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)