ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilMailSearchGUI Class Reference
+ Collaboration diagram for ilMailSearchGUI:

Public Member Functions

 __construct ()
 executeCommand ()
 adopt ()
 cancel ()
 search ()
 showResults ()

Private Member Functions

 saveMailData ()

Private Attributes

 $tpl = null
 $ctrl = null
 $lng = null
 $umail = null
 $errorDelete = false

Detailed Description

Author
Jens Conze
Version
$Id$

Definition at line 36 of file class.ilMailSearchGUI.php.

Constructor & Destructor Documentation

ilMailSearchGUI::__construct ( )

Definition at line 46 of file class.ilMailSearchGUI.php.

References $ilCtrl, $lng, and $tpl.

{
global $tpl, $ilCtrl, $lng, $ilUser;
$this->tpl = $tpl;
$this->ctrl = $ilCtrl;
$this->lng = $lng;
$this->ctrl->saveParameter($this, "mobj_id");
$this->umail = new ilFormatMail($ilUser->getId());
}

Member Function Documentation

ilMailSearchGUI::adopt ( )

Definition at line 76 of file class.ilMailSearchGUI.php.

References $_POST, $_SESSION, and saveMailData().

{
// necessary because of select all feature of ilTable2GUI
$recipients = array();
$recipients = array_merge($recipients, (array)$_POST['search_name_to_addr']);
$recipients = array_merge($recipients, (array)$_POST['search_name_to_usr']);
$recipients = array_merge($recipients, (array)$_POST['search_name_to_grp']);
$recipients = array_unique($recipients);
$_SESSION["mail_search_results_to"] = $recipients;
$_SESSION["mail_search_results_cc"] = $_POST["search_name_cc"];
$_SESSION["mail_search_results_bcc"] = $_POST["search_name_bcc"];
$this->saveMailData();
$this->ctrl->returnToParent($this);
}

+ Here is the call graph for this function:

ilMailSearchGUI::cancel ( )

Definition at line 113 of file class.ilMailSearchGUI.php.

{
$this->ctrl->returnToParent($this);
}
ilMailSearchGUI::executeCommand ( )

Definition at line 59 of file class.ilMailSearchGUI.php.

References $cmd.

{
$forward_class = $this->ctrl->getNextClass($this);
switch($forward_class)
{
default:
if (!($cmd = $this->ctrl->getCmd()))
{
$cmd = "showResults";
}
$this->$cmd();
break;
}
return true;
}
ilMailSearchGUI::saveMailData ( )
private

Definition at line 95 of file class.ilMailSearchGUI.php.

Referenced by adopt(), and showResults().

{
$mail_data = $this->umail->getSavedData();
$this->umail->savePostData(
$mail_data["user_id"],
$mail_data["attachments"],
$mail_data["rcp_to"],
$mail_data["rcp_cc"],
$mail_data["rcp_bcc"],
$mail_data["m_type"],
$mail_data["m_email"],
$mail_data["m_subject"],
$mail_data["m_message"],
$mail_data["use_placeholders"]
);
}

+ Here is the caller graph for this function:

ilMailSearchGUI::search ( )

Definition at line 118 of file class.ilMailSearchGUI.php.

References $_POST, $_SESSION, ilUtil\sendInfo(), and showResults().

{
$_SESSION["mail_search_search"] = $_POST["search"];
$_SESSION["mail_search_type_system"] = $_POST["type_system"];
$_SESSION["mail_search_type_addressbook"] = $_POST["type_addressbook"];
// IF NO TYPE IS GIVEN SEARCH IN BOTH 'system' and 'addressbook'
if(!$_SESSION["mail_search_type_system"] &&
!$_SESSION["mail_search_type_addressbook"])
{
$_SESSION["mail_search_type_system"] = 1;
$_SESSION["mail_search_type_addressbook"] = 1;
}
if (strlen(trim($_SESSION["mail_search_search"])) == 0)
{
ilUtil::sendInfo($this->lng->txt("mail_insert_query"));
}
else if(strlen(trim($_SESSION["mail_search_search"])) < 3)
{
$this->lng->loadLanguageModule('search');
ilUtil::sendInfo($this->lng->txt('search_minimum_three'));
}
$this->showResults();
return true;
}

+ Here is the call graph for this function:

ilMailSearchGUI::showResults ( )

Definition at line 146 of file class.ilMailSearchGUI.php.

References $_SESSION, $ilCtrl, $lng, $name, ilObjectSearchFactory\_getUserSearchInstance(), ilObjUser\_lookupEmail(), ilObjUser\_lookupId(), ilObjUser\_lookupLogin(), ilObjUser\_lookupName(), ilObjUser\_lookupPref(), ilUtil\formCheckbox(), ilUtil\getImagePath(), ilUserFilter\getInstance(), ilUtil\prepareFormOutput(), QP_COMBINATION_OR, saveMailData(), ilUtil\searchGroups(), ilAddressbook\searchUsers(), ilUtil\sendInfo(), ilCheckboxInputGUI\setChecked(), and ilTextInputGUI\setSize().

Referenced by search().

{
global $rbacsystem, $lng, $ilUser, $ilCtrl, $rbacreview;
$this->saveMailData();
$this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.mail_search.html", "Services/Contact");
$this->tpl->setVariable("HEADER", $this->lng->txt("mail"));
$this->tpl->setVariable("ACTION", $this->ctrl->getFormAction($this));
// searchform
include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
$form = new ilPropertyFormGUI();
$form->setTitle($this->lng->txt('search_recipients'));
$form->setId('search_rcp');
$form->setFormAction($ilCtrl->getFormAction($this, 'search'));
$inp = new ilTextInputGUI($this->lng->txt("search_for"), 'search');
$inp->setSize(30);
if (strlen(trim($_SESSION["mail_search_search"])) > 0)
{
$inp->setValue(ilUtil::prepareFormOutput(trim($_SESSION["mail_search_search"]), true));
}
$form->addItem($inp);
$chb = new ilCheckboxInputGUI($this->lng->txt("mail_search_addressbook"), 'type_addressbook');
if ($_SESSION['mail_search_type_addressbook'])
$chb->setChecked(true);
$inp->addSubItem($chb);
$chb = new ilCheckboxInputGUI($this->lng->txt("mail_search_system"), 'type_system');
if ($_SESSION['mail_search_type_system'])
$chb->setChecked(true);
$inp->addSubItem($chb);
$form->addCommandButton('search', $this->lng->txt("search"));
$form->addCommandButton('cancel', $this->lng->txt("cancel"));
$this->tpl->setVariable('SEARCHFORM', $form->getHtml());
// searchform end
if (strlen(trim($_SESSION["mail_search_search"])) > 0)
{
$this->tpl->setVariable("VALUE_SEARCH_FOR", ilUtil::prepareFormOutput(trim($_SESSION["mail_search_search"]), true));
}
if (!$_SESSION['mail_search_type_system'] && !$_SESSION['mail_search_type_addressbook'])
{
$this->tpl->setVariable('CHECKED_TYPE_SYSTEM', "checked=\"checked\"");
}
else
{
if ($_SESSION['mail_search_type_addressbook']) $this->tpl->setVariable('CHECKED_TYPE_ADDRESSBOOK', "checked=\"checked\"");
if ($_SESSION['mail_search_type_system'])$this->tpl->setVariable('CHECKED_TYPE_SYSTEM', "checked=\"checked\"");
}
if ($_SESSION['mail_search_type_addressbook'] && strlen(trim($_SESSION["mail_search_search"])) >= 3)
{
$abook = new ilAddressbook($ilUser->getId());
$entries = $abook->searchUsers(addslashes(urldecode($_SESSION['mail_search_search'])));
if (count($entries))
{
$tbl_addr = new ilTable2GUI($this);
$tbl_addr->setTitle($lng->txt('mail_addressbook'));
$tbl_addr->setRowTemplate('tpl.mail_search_addr_row.html', 'Services/Contact');
$result = array();
$counter = 0;
foreach ($entries as $entry)
{
$result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_addr[]', ($entry['login'] ? $entry['login'] : $entry['email'])) .
ilUtil::formCheckbox(0, 'search_name_cc[]', ($entry['login'] ? $entry['login'] : $entry['email'])) .
ilUtil::formCheckbox(0, 'search_name_bcc[]', ($entry['login'] ? $entry['login'] : $entry['email']));
$result[$counter]['login'] = $entry['login'];
$result[$counter]['firstname'] = $entry['firstname'];
$result[$counter]['lastname'] = $entry['lastname'];
$id = ilObjUser::_lookupId($entry['login']);
if (ilObjUser::_lookupPref($id, 'public_email') == 'y' || !$entry['login'])
{
$has_mail_addr = true;
$result[$counter]['email'] = $entry['email'];
}
++$counter;
}
$tbl_addr->addColumn($this->lng->txt('mail_to') . '/' . $this->lng->txt('cc') . '/' . $this->lng->txt('bc'), 'check', '10%');
$tbl_addr->addColumn($this->lng->txt('login'), 'login', "15%");
$tbl_addr->addColumn($this->lng->txt('firstname'), 'firstname', "15%");
$tbl_addr->addColumn($this->lng->txt('lastname'), 'lastname', "15%");
if ($has_mail_addr)
{
foreach ($result as $key => $val)
{
if ($val['email'] == '') $result[$key]['email'] = '&nbsp;';
}
$tbl_addr->addColumn($this->lng->txt('email'), 'email', "15%");
}
$tbl_addr->setData($result);
$tbl_addr->setDefaultOrderField('login');
$tbl_addr->setPrefix('addr_');
$tbl_addr->enable('select_all');
$tbl_addr->setSelectAllCheckbox('search_name_to_addr');
$tbl_addr->setFormName('recipients');
$this->tpl->setVariable('TABLE_ADDR', $tbl_addr->getHTML());
}
}
if ($_SESSION['mail_search_type_system'] && strlen(trim($_SESSION["mail_search_search"])) >= 3)
{
include_once 'Services/Search/classes/class.ilQueryParser.php';
include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
include_once 'Services/Search/classes/class.ilSearchResult.php';
$all_results = new ilSearchResult();
$query_parser = new ilQueryParser(addcslashes($_SESSION['mail_search_search'],'%_'));
$query_parser->setCombination(QP_COMBINATION_OR);
$query_parser->setMinWordLength(3);
$query_parser->parse();
$user_search =& ilObjectSearchFactory::_getUserSearchInstance($query_parser);
$user_search->enableActiveCheck(true);
$user_search->setFields(array('login'));
$result_obj = $user_search->performSearch();
$all_results->mergeEntries($result_obj);
$user_search->setFields(array('firstname'));
$result_obj = $user_search->performSearch();
$all_results->mergeEntries($result_obj);
$user_search->setFields(array('lastname'));
$result_obj = $user_search->performSearch();
$all_results->mergeEntries($result_obj);
$all_results->setMaxHits(100000);
$all_results->preventOverwritingMaxhits(true);
$all_results->filter(ROOT_FOLDER_ID,QP_COMBINATION_OR);
//$users = $all_results->getResults();
// Filter users (depends on setting in user accounts)
include_once './Services/User/classes/class.ilUserFilter.php';
$users = ilUserFilter::getInstance()->filter($all_results->getResultIds());
if (count($users))
{
$tbl_users = new ilTable2GUI($this);
$tbl_users->setTitle($lng->txt('system').': '.$lng->txt('persons'));
$tbl_users->setRowTemplate('tpl.mail_search_users_row.html','Services/Contact');
$result = array();
$counter = 0;
foreach ($users as $user)
{
$login = ilObjUser::_lookupLogin($user);
$result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_usr[]', $login) .
ilUtil::formCheckbox(0, 'search_name_cc[]', $login) .
ilUtil::formCheckbox(0, 'search_name_bcc[]', $login);
$result[$counter]['login'] = $login;
if (in_array(ilObjUser::_lookupPref($user, 'public_profile'), array('y',"g")))
{
$result[$counter]['firstname'] = $name['firstname'];
$result[$counter]['lastname'] = $name['lastname'];
}
else
{
$result[$counter]['firstname'] = '';
$result[$counter]['lastname'] = '';
}
if (ilObjUser::_lookupPref($user, 'public_email') == 'y')
{
$has_mail_usr = true;
$result[$counter]['email'] = ilObjUser::_lookupEmail($user);
}
++$counter;
}
$tbl_users->addColumn($this->lng->txt('mail_to') . '/' . $this->lng->txt('cc') . '/' . $this->lng->txt('bc'), 'check', '10%');
$tbl_users->addColumn($this->lng->txt('login'), 'login', '15%');
$tbl_users->addColumn($this->lng->txt('firstname'), 'firstname', '15%');
$tbl_users->addColumn($this->lng->txt('lastname'), 'lastname', '15%');
if ($has_mail_usr == true)
{
foreach ($result as $key => $val)
{
if ($val['email'] == '') $result[$key]['email'] = '&nbsp;';
}
$tbl_users->addColumn($this->lng->txt('email'), 'email', '15%');
}
$tbl_users->setData($result);
$tbl_users->setDefaultOrderField('login');
$tbl_users->setPrefix('usr_');
$tbl_users->enable('select_all');
$tbl_users->setSelectAllCheckbox('search_name_to_usr');
$tbl_users->setFormName('recipients');
$this->tpl->setVariable('TABLE_USERS', $tbl_users->getHTML());
}
$groups = ilUtil::searchGroups(addslashes(urldecode(addcslashes($_SESSION['mail_search_search'],'%_'))));
if (count($groups))
{
$tbl_grp = new ilTable2GUI($this);
$tbl_grp->setTitle($lng->txt('system').': '.$lng->txt('groups'));
$tbl_grp->setRowTemplate('tpl.mail_search_groups_row.html','Services/Contact');
$result = array();
$counter = 0;
foreach ($groups as $grp)
{
$members = array();
$roles = $rbacreview->getAssignableChildRoles($grp['ref_id']);
foreach ($roles as $role)
{
if (substr($role['title'], 0, 14) == 'il_grp_member_' ||
substr($role['title'], 0, 13) == 'il_grp_admin_')
{
// does not work if Pear is enabled and Mailbox Address contain special chars!!
//array_push($members, $rbacreview->getRoleMailboxAddress($role['obj_id']));
// FIX for Mantis: 7523
array_push($members, $role['title']);
}
}
$str_members = implode(',',$members);
$result[$counter]['check'] = ilUtil::formCheckbox(0, 'search_name_to_grp[]', $str_members) .
ilUtil::formCheckbox(0, 'search_name_cc[]', $str_members) .
ilUtil::formCheckbox(0, 'search_name_bcc[]',$str_members);
$result[$counter]['title'] = $grp['title'];
$result[$counter]['description'] = $grp['description'];
++$counter;
}
$tbl_grp->setData($result);
$tbl_grp->addColumn($this->lng->txt('mail_to') . '/' . $this->lng->txt('cc') . '/' . $this->lng->txt('bc'), 'check', '10%');
$tbl_grp->addColumn($this->lng->txt('title'), 'title', '15%');
$tbl_grp->addColumn($this->lng->txt('description'), 'description', '15%');
$tbl_grp->setDefaultOrderField('title');
$tbl_grp->setPrefix('grp_');
$tbl_grp->enable('select_all');
$tbl_grp->setSelectAllCheckbox('search_name_to_grp');
$tbl_grp->setFormName('recipients');
$this->tpl->setVariable('TABLE_GRP', $tbl_grp->getHTML());
}
}
if (count($users) || count($groups) || count($entries))
{
$this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
$this->tpl->setVariable("ALT_ARROW", '');
$this->tpl->setVariable('BUTTON_ADOPT', $this->lng->txt('adopt'));
}
else if (strlen(trim($_SESSION["mail_search_search"])) >= 3)
{
$this->lng->loadLanguageModule('search');
ilUtil::sendInfo($this->lng->txt('search_no_match'));
}
$this->tpl->show();
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Field Documentation

ilMailSearchGUI::$ctrl = null
private

Definition at line 39 of file class.ilMailSearchGUI.php.

ilMailSearchGUI::$errorDelete = false
private

Definition at line 44 of file class.ilMailSearchGUI.php.

ilMailSearchGUI::$lng = null
private

Definition at line 40 of file class.ilMailSearchGUI.php.

Referenced by __construct(), and showResults().

ilMailSearchGUI::$tpl = null
private

Definition at line 38 of file class.ilMailSearchGUI.php.

Referenced by __construct().

ilMailSearchGUI::$umail = null
private

Definition at line 42 of file class.ilMailSearchGUI.php.


The documentation for this class was generated from the following file: