4require_once 
'Services/Table/classes/class.ilTable2GUI.php';
 
    5require_once 
'Services/Mail/classes/class.ilMailUserCache.php';
 
    6require_once 
'Services/Mail/classes/class.ilMailBoxQuery.php';
 
   58    public function __construct($a_parent_obj, $a_current_folder_id, $a_parent_cmd = 
'')
 
   62        $this->lng  = 
$DIC->language();
 
   63        $this->ctrl = 
$DIC->ctrl();
 
   64        $this->
user = $DIC->user();
 
   66        $this->_currentFolderId = $a_current_folder_id;
 
   67        $this->_parentObject = $a_parent_obj;
 
   69        $this->
setId(
'mail_folder_tbl_' . $a_current_folder_id);
 
   77        parent::__construct($a_parent_obj, $a_parent_cmd);
 
   79        $this->
setFormAction($this->ctrl->getFormAction($this->_parentObject, 
'showFolder'));
 
   83        $this->
setRowTemplate(
'tpl.mail_folder_row.html', 
'Services/Mail');
 
   99        $this->
addColumn($this->lng->txt(
'personal_picture'), 
'', 
'10%');
 
  101            $this->
addColumn($this->lng->txt(
'recipient'), 
'rcp_to', 
'25%');
 
  103            $this->
addColumn($this->lng->txt(
'sender'), 
'from', 
'25%');
 
  107            $this->
addColumn($this->lng->txt(
'search_content'), 
'', 
'40%');
 
  109            $this->
addColumn($this->lng->txt(
'subject'), 
'm_subject', 
'40%');
 
  111        $this->
addColumn($this->lng->txt(
'date'), 
'send_time', 
'20%');
 
  115        $mtree->setTableNames(
'mail_tree', 
'mail_obj_data');
 
  116        $this->_folderNode = $mtree->getNodeData($this->_currentFolderId);
 
  125        $this->
initMultiCommands($this->_parentObject->mbox->getActions($this->_currentFolderId));
 
  139        if (
null === $a_bool) {
 
  143        $this->_isDraftsFolder = $a_bool;
 
  157        if (
null === $a_bool) {
 
  161        $this->_isSentFolder = $a_bool;
 
  175        if (
null === $a_bool) {
 
  179        $this->_isTrashFolder = $a_bool;
 
  193        if ($this->_folderNode[
'm_type'] == 
'trash' && $this->
getNumerOfMails() > 0) {
 
  194            $this->
addCommandButton(
'askForEmptyTrash', $this->lng->txt(
'mail_empty_trash'));
 
  210            if (
$key == 
'moveMails') {
 
  211                $folders = $this->_parentObject->mbox->getSubFolders();
 
  212                foreach ($folders as $folder) {
 
  213                    if ($folder[
'type'] != 
'trash' ||
 
  216                        if ($folder[
'type'] != 
'user_folder') {
 
  217                            $label = 
$action . 
' ' . $this->lng->txt(
'mail_' . $folder[
'title']) .
 
  218                                ($folder[
'type'] == 
'trash' ? 
' (' . $this->lng->txt(
'delete') . 
')' : 
'');
 
  244        $this->_selectedItems = $a_selected_items;
 
  265        include_once 
'Services/Search/classes/class.ilSearchSettings.php';
 
  277        if ($this->_folderNode[
'm_type'] == 
'user_folder') {
 
  278            $txt_folder = $this->_folderNode[
'title'];
 
  279            $img_folder = 
'icon_user_folder.png';
 
  281            $txt_folder = $this->lng->txt(
'mail_' . $this->_folderNode[
'title']);
 
  282            $img_folder = 
'icon' . substr($this->_folderNode[
'title'], 1) . 
'.png';
 
  287                include_once 
'Services/Mail/classes/class.ilMailLuceneQueryParser.php';
 
  289                $query_parser->setFields(array(
 
  290                    'title'       => (
bool) $this->filter[
'mail_filter_subject'],
 
  291                    'content'     => (
bool) $this->filter[
'mail_filter_body'],
 
  292                    'mattachment' => (
bool) $this->filter[
'mail_filter_attach'],
 
  293                    'msender'     => (
bool) $this->filter[
'mail_filter_sender'],
 
  294                    'mrcp'        => (
bool) $this->filter[
'mail_filter_recipients']
 
  296                $query_parser->parse();
 
  298                require_once 
'Services/Mail/classes/class.ilMailLuceneSearcher.php';
 
  299                require_once 
'Services/Mail/classes/class.ilMailSearchResult.php';
 
  302                $searcher->search($this->
user->getId(), $this->_currentFolderId);
 
  331        } 
catch (Exception $e) {
 
  334            if (
'mail_search_empty_result' == $e->getMessage()) {
 
  335                $data[
'set'] = array();
 
  344            foreach (
$data[
'set'] as $mail) {
 
  345                if ($mail[
'sender_id'] && $mail[
'sender_id'] != ANONYMOUS_USER_ID) {
 
  346                    $user_ids[$mail[
'sender_id']] = $mail[
'sender_id'];
 
  354        foreach (
$data[
'set'] as 
$key => $mail) {
 
  358                $mail[
'checked'] = 
' checked="checked" ';
 
  363                    $this->_parentObject->umail->formatNamesForOutput($mail[
'rcp_to']),
 
  367                if ($mail[
'sender_id'] == ANONYMOUS_USER_ID) {
 
  369                    $mail[
'from'] = $mail[
'mail_login'] = $mail[
'alt_sender'] = htmlspecialchars(ilMail::_getIliasMailerName());
 
  373                        $mail[
'img_sender'] = 
$user->getPersonalPicturePath(
'xxsmall');
 
  374                        $mail[
'from'] = $mail[
'mail_login'] = $mail[
'alt_sender'] = htmlspecialchars(
$user->getPublicName());
 
  376                        $mail[
'from'] = $mail[
'mail_login'] = $mail[
'import_name'] . 
' (' . $this->lng->txt(
'user_deleted') . 
')';
 
  382                $this->ctrl->setParameterByClass(
'ilmailformgui', 
'mail_id', $mail[
'mail_id']);
 
  383                $this->ctrl->setParameterByClass(
'ilmailformgui', 
'type', 
'draft');
 
  384                $link_mark_as_read = $this->ctrl->getLinkTargetByClass(
'ilmailformgui');
 
  385                $this->ctrl->clearParametersByClass(
'ilmailformgui');
 
  387                $this->ctrl->setParameter($this->_parentObject, 
'mail_id', $mail[
'mail_id']);
 
  388                $link_mark_as_read = $this->ctrl->getLinkTarget($this->_parentObject, 
'showMail');
 
  389                $this->ctrl->clearParameters($this->_parentObject);
 
  391            $css_class = $mail[
'm_status'] == 
'read' ? 
'mailread' : 
'mailunread';
 
  394                $search_result = array();
 
  395                foreach (
$result->getFields($mail[
'mail_id']) as $content) {
 
  396                    if (
'title' == $content[0]) {
 
  397                        $mail[
'msr_subject_link_read'] = $link_mark_as_read;
 
  398                        $mail[
'msr_subject_mailclass'] = $css_class;
 
  399                        $mail[
'msr_subject']           = $content[1];
 
  401                        $search_result[] = $content[1];
 
  404                $mail[
'msr_data'] = implode(
'', array_map(
function ($value) {
 
  405                    return '<p>' . $value . 
'</p>';
 
  408                if (!$mail[
'msr_subject']) {
 
  409                    $mail[
'msr_subject_link_read'] = $link_mark_as_read;
 
  410                    $mail[
'msr_subject_mailclass'] = $css_class;
 
  411                    $mail[
'msr_subject']           = htmlspecialchars($mail[
'm_subject']);
 
  414                $mail[
'mail_link_read'] = $link_mark_as_read;
 
  415                $mail[
'mailclass']      = $css_class;
 
  416                $mail[
'mail_subject']   = htmlspecialchars($mail[
'm_subject']);
 
  443    protected function setTitleData($folderLabel, $mailCount, $unreadCount, $imgFolder)
 
  445        $titleTemplate = 
new ilTemplate(
'tpl.mail_folder_title.html', 
true, 
true, 
'Services/Mail');
 
  446        $titleTemplate->setVariable(
'TXT_FOLDER', $folderLabel);
 
  447        $titleTemplate->setVariable(
'MAIL_COUNT', $mailCount);
 
  448        $titleTemplate->setVariable(
'TXT_MAIL_S', $this->lng->txt(
'mail_s'));
 
  449        $titleTemplate->setVariable(
'MAIL_COUNT_UNREAD', $unreadCount);
 
  450        $titleTemplate->setVariable(
'TXT_UNREAD', $this->lng->txt(
'unread'));
 
  452        parent::setTitle($titleTemplate->get(), $imgFolder);
 
  466        $this->_number_of_mails = $a_number_of_mails;
 
  490        foreach ($a_set as 
$key => $value) {
 
  491            $this->tpl->setVariable(strtoupper(
$key), $value);
 
  497        $this->filter = array();
 
  499        include_once 
'Services/Mail/classes/Form/class.ilMailQuickFilterInputGUI.php';
 
  501        $ti->setSubmitFormOnEnter(
false);
 
  503        $ti->readFromSession();
 
  504        $this->filter[
'mail_filter'] = $ti->getValue();
 
  506        include_once 
'Services/Form/classes/class.ilCheckboxInputGUI.php';
 
  509            $this->sub_filter[] = $ci = 
new ilCheckboxInputGUI($this->lng->txt(
'mail_filter_recipients'), 
'mail_filter_recipients');
 
  510            $ci->setOptionTitle($this->lng->txt(
'mail_filter_recipients'));
 
  512            $ti->addSubItem($ci);
 
  513            $ci->setParent($this);
 
  514            $ci->readFromSession();
 
  515            $this->filter[
'mail_filter_recipients'] = (int) $ci->getChecked();
 
  517            $this->sub_filter[] = $ci = 
new ilCheckboxInputGUI($this->lng->txt(
'mail_filter_sender'), 
'mail_filter_sender');
 
  518            $ci->setOptionTitle($this->lng->txt(
'mail_filter_sender'));
 
  520            $ti->addSubItem($ci);
 
  521            $ci->setParent($this);
 
  522            $ci->readFromSession();
 
  523            $this->filter[
'mail_filter_sender'] = (int) $ci->getChecked();
 
  526        $this->sub_filter[] = $ci = 
new ilCheckboxInputGUI($this->lng->txt(
'mail_filter_subject'), 
'mail_filter_subject');
 
  527        $ci->setOptionTitle($this->lng->txt(
'mail_filter_subject'));
 
  529        $ti->addSubItem($ci);
 
  530        $ci->setParent($this);
 
  531        $ci->readFromSession();
 
  532        $this->filter[
'mail_filter_subject'] = (int) $ci->getChecked();
 
  534        $this->sub_filter[] = $ci = 
new ilCheckboxInputGUI($this->lng->txt(
'mail_filter_body'), 
'mail_filter_body');
 
  535        $ci->setOptionTitle($this->lng->txt(
'mail_filter_body'));
 
  537        $ti->addSubItem($ci);
 
  538        $ci->setParent($this);
 
  539        $ci->readFromSession();
 
  540        $this->filter[
'mail_filter_body'] = (int) $ci->getChecked();
 
  542        $this->sub_filter[] = $ci = 
new ilCheckboxInputGUI($this->lng->txt(
'mail_filter_attach'), 
'mail_filter_attach');
 
  543        $ci->setOptionTitle($this->lng->txt(
'mail_filter_attach'));
 
  545        $ti->addSubItem($ci);
 
  546        $ci->setParent($this);
 
  547        $ci->readFromSession();
 
  548        $this->filter[
'mail_filter_attach'] = (int) $ci->getChecked();
 
  556        parent::writeFilterToSession();
 
  558        foreach ($this->sub_filter as $item) {
 
  559            if ($item->checkInput()) {
 
  560                $item->setValueByArray(
$_POST);
 
  561                $item->writeToSession();
 
  571        parent::resetFilter();
 
  573        foreach ($this->sub_filter as $item) {
 
  574            if ($item->checkInput()) {
 
  575                $item->setValueByArray(
$_POST);
 
  576                $item->clearFromSession();
 
An exception for terminatinating execution or to throw for unit testing.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date @access public.
@classDescription Date and time handling
Base class for ILIAS Exception handling.
static _getMailBoxListData()
_getMailBoxListData
getNumerOfMails()
Returns the total number of mails of the current folder @access public.
writeFilterToSession()
Write filter values to session.
fillRow($a_set)
Fill row @access public.
isSentFolder($a_bool=null)
Setter/Getter for folder status @access public.
setNumerOfMails($a_number_of_mails)
Set the total number of mails of the current folder @access public.
isTrashFolder($a_bool=null)
Setter/Getter for folder status @access public.
setSelectedItems($a_selected_items)
Set the selected items @access public.
getSelectedItems()
Get all selected items @access public.
__construct($a_parent_obj, $a_current_folder_id, $a_parent_cmd='')
Constructor @access public.
isDraftFolder($a_bool=null)
Setter/Getter for folder status @access public.
initMultiCommands($actions)
initMultiCommands @access private
initCommandButtons()
Performs special actions for folders such as user folders, trash and local folders @access private.
setTitleData($folderLabel, $mailCount, $unreadCount, $imgFolder)
Function to set the table title @access protected.
resetFilter()
Reset filter.
prepareHTML()
Call this before using getHTML() @access public.
static getUserObjectById($usr_id)
static preloadUserObjects(array $usr_ids)
setExternalSorting($a_val)
Set external sorting.
setPrefix($a_prefix)
set prefix for sort and offset fields (if you have two or more tables on a page that you want to sort...
determineOffsetAndOrder($a_omit_offset=false)
Determine offset and order.
setData($a_data)
set table data @access public
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
setEnableTitle($a_enabletitle)
Set Enable Title.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
resetOffset($a_in_determination=false)
Reset offset.
addMultiCommand($a_cmd, $a_text)
Add Command button.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
addColumn( $a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setExternalSegmentation($a_val)
Set external segmentation.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setFilterCommand($a_val, $a_caption=null)
Set filter command.
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
getOrderDirection()
Get order direction.
setMaxCount($a_max_count)
set max.
special template class to simplify handling of ITX/PEAR
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
static htmlencodePlainString($a_str, $a_make_links_clickable, $a_detect_goto_links=false)
Encodes a plain text string into HTML for display in a browser.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)