73        $this->
ilias = $DIC[
'ilias'];
 
   74        $this->lng = 
$DIC->language();
 
   75        $this->db = 
$DIC->database();
 
   77        $this->user_id = $a_user_id;
 
   79        $this->table_mail_obj_data = 
'mail_obj_data';
 
   80        $this->table_tree = 
'mail_tree';
 
   83            $this->mtree = 
new ilTree($this->user_id);
 
   84            $this->mtree->setTableNames($this->table_tree, $this->table_mail_obj_data);
 
   90        if (is_object($this->lng)) {
 
   91            $this->lng->loadLanguageModule(
"mail");
 
   93            $this->actions = array(
 
   94                "moveMails" => $this->lng->txt(
"mail_move_to"),
 
   95                "markMailsRead" => $this->lng->txt(
"mail_mark_read"),
 
   96                "markMailsUnread" => $this->lng->txt(
"mail_mark_unread"),
 
   97                "deleteMails" => $this->lng->txt(
"delete"));
 
  101        $this->default_folder = array(
 
  102            "b_inbox" => 
"inbox",
 
  103            "c_trash" => 
"trash",
 
  104            "d_drafts" => 
"drafts",
 
  106            "z_local" => 
"local");
 
  114        $res = $this->db->queryF(
 
  116                        SELECT obj_id FROM ' . $this->table_mail_obj_data . 
' 
  119            array(
'integer', 
'text'),
 
  120            array($this->user_id, 
'inbox')
 
  125        return $row[
'obj_id'];
 
  133        $res = $this->db->queryF(
 
  135                        SELECT obj_id FROM ' . $this->table_mail_obj_data . 
' 
  138            array(
'integer', 
'text'),
 
  139            array($this->user_id, 
'drafts')
 
  144        return $row[
'obj_id'];
 
  152        $res = $this->db->queryf(
 
  154                        SELECT obj_id FROM ' . $this->table_mail_obj_data . 
' 
  157            array(
'integer', 
'text'),
 
  158            array($this->user_id, 
'trash')
 
  163        return $row[
'obj_id'];
 
  171        $res = $this->db->queryf(
 
  173                        SELECT obj_id FROM ' . $this->table_mail_obj_data . 
' 
  176            array(
'integer', 
'text'),
 
  177            array($this->user_id, 
'sent')
 
  182        return $row[
'obj_id'];
 
  190        return $this->mtree->getRootID($this->user_id);
 
  205            if ($folder_data[
"type"] == 
"user_folder" or $folder_data[
"type"] == 
"local") {
 
  218        $root_id = $this->db->nextId($this->table_mail_obj_data);
 
  219        $this->db->manipulateF(
 
  221                        INSERT INTO ' . $this->table_mail_obj_data . 
'  
  227                        VALUES(%s, %s, %s, %s)',
 
  228            array(
'integer',
'integer', 
'text', 
'text'),
 
  229            array($root_id, $this->user_id, 
'a_root', 
'root')
 
  231        $this->mtree->addTree($this->user_id, $root_id);
 
  233        foreach ($this->default_folder as 
$key => $folder) {
 
  234            $last_id = $this->db->nextId($this->table_mail_obj_data);
 
  235            $this->db->manipulateF(
 
  237                                INSERT INTO ' . $this->table_mail_obj_data . 
'  
  243                                VALUES(%s, %s, %s, %s)',
 
  244                array(
'integer',
'integer', 
'text', 
'text'),
 
  245                array($last_id, $this->user_id, 
$key, $folder)
 
  247            $this->mtree->insertNode($last_id, $root_id);
 
  263        $next_id = $this->db->nextId($this->table_mail_obj_data);
 
  264        $this->db->manipulateF(
 
  266                        INSERT INTO ' . $this->table_mail_obj_data . 
' 
  272                         VALUES(%s,%s,%s,%s)',
 
  273            array(
'integer',
'integer', 
'text', 
'text'),
 
  274            array($next_id, $this->user_id, $a_folder_name, 
'user_folder')
 
  276        $this->mtree->insertNode($next_id, $a_parent_id);
 
  293        $this->db->manipulateF(
 
  295                        UPDATE ' . $this->table_mail_obj_data . 
' 
  297                        WHERE obj_id = %s AND user_id = %s',
 
  298            array(
'text', 
'integer', 
'integer'),
 
  299            array($a_new_folder_name, $a_obj_id, $this->user_id)
 
  312        $res = $this->db->queryF(
 
  314                        SELECT obj_id FROM ' . $this->table_mail_obj_data . 
' 
  317            array(
'integer', 
'text'),
 
  318            array($this->user_id, $a_folder_name)
 
  322        return is_array(
$row) && 
$row[
'obj_id'] > 0 ? true : 
false;
 
  332        $query = $this->db->queryf(
 
  334                        SELECT obj_id, title FROM mail_obj_data 
  335                        WHERE obj_id = %s AND user_id = %s',
 
  336            array(
'integer', 
'integer'),
 
  337            array($a_folder_id, $this->user_id)
 
  341        if (!is_array(
$row) || array_key_exists(
$row[
'title'], $this->default_folder)) {
 
  345        require_once 
'Services/Mail/classes/class.ilMail.php';
 
  346        $umail = 
new ilMail($this->user_id);
 
  348        $subtree = $this->mtree->getSubtree($this->mtree->getNodeData($a_folder_id));
 
  349        $this->mtree->deleteTree($this->mtree->getNodeData($a_folder_id));
 
  351        foreach ($subtree as $node) {
 
  352            $mails = $umail->getMailsOfFolder($node[
"obj_id"]);
 
  354            foreach ($mails as $mail) {
 
  355                $mail_ids[] = $mail[
"mail_id"];
 
  358            $umail->deleteMails($mail_ids);
 
  360            $this->db->manipulateF(
 
  362                                DELETE FROM ' . $this->table_mail_obj_data . 
'  
  363                                WHERE obj_id = %s AND user_id = %s',
 
  364                array(
'integer', 
'integer'),
 
  365                array($node[
'obj_id'], $this->user_id)
 
  379        $res = $this->db->queryF(
 
  381                        SELECT * FROM ' . $this->table_mail_obj_data . 
'  
  384            array(
'integer', 
'integer'),
 
  385            array($this->user_id, $a_obj_id)
 
  390            'obj_id' => 
$row[
'obj_id'],
 
  391            'title' => 
$row[
'title'],
 
  392            'type' => 
$row[
'm_type']
 
  403        $res = $this->db->queryF(
 
  405                        SELECT * FROM  ' . $this->table_tree . 
'  
  406                        WHERE child = %s AND tree = %s',
 
  407            array(
'integer', 
'integer'),
 
  408            array($a_obj_id, $this->user_id)
 
  412        return is_array(
$row) ? 
$row[
'parent'] : 0;
 
  427        $user_folder = array();
 
  429        foreach ($this->default_folder as 
$key => $value) {
 
  430            $res = $this->db->queryF(
 
  432                                SELECT obj_id, m_type 
  433                                FROM ' . $this->table_mail_obj_data . 
'  
  436                array(
'integer', 
'text'),
 
  437                array($this->user_id, 
$key)
 
  441            $user_folder[] = array(
 
  443                'type' => 
$row[
'm_type'],
 
  444                'obj_id' => 
$row[
'obj_id']
 
  448        $res = $this->db->queryF(
 
  450                        SELECT * FROM ' . $this->table_tree . 
', ' . $this->table_mail_obj_data . 
' 
  451                        WHERE ' . $this->table_mail_obj_data . 
'.obj_id = ' . $this->table_tree . 
'.child  
  452                        AND ' . $this->table_tree . 
'.depth  > %s 
  453                        AND ' . $this->table_tree . 
'.tree  = %s 
  454                        ORDER BY ' . $this->table_tree . 
'.lft, ' . $this->table_mail_obj_data . 
'.title  ',
 
  455            array(
'integer', 
'integer'),
 
  456            array(2, $this->user_id)
 
  458        while (
$row = $this->db->fetchAssoc(
$res)) {
 
  459            $user_folder[] = array(
 
  460                'title' => 
$row[
'title'],
 
  461                'type' => 
$row[
'm_type'],
 
  462                'obj_id' => 
$row[
'child']
 
  474        $this->user_id = $a_user_id;
 
  491    public function delete()
 
  493        $this->db->manipulateF(
 
  495                        DELETE FROM mail_obj_data WHERE user_id = %s',
 
  497            array($this->user_id)
 
  500        $this->db->manipulateF(
 
  502                        DELETE FROM mail_options WHERE user_id = %s',
 
  504            array($this->user_id)
 
  507        $this->db->manipulateF(
 
  509                        DELETE FROM mail_saved WHERE user_id = %s',
 
  511            array($this->user_id)
 
  514        $this->db->manipulateF(
 
  516                        DELETE FROM mail_tree WHERE tree = %s',
 
  518            array($this->user_id)
 
  522        require_once 
'Services/Mail/classes/class.ilFileDataMail.php';
 
  524        $fdm->onUserDelete();
 
  527        $this->db->manipulateF(
 
  528            'DELETE FROM mail WHERE user_id = %s',
 
  530            array($this->user_id)
 
  543        $this->db->manipulateF(
 
  546                        SET sender_id = %s, import_name = %s 
  547                        WHERE sender_id = %s',
 
  548            array(
'integer', 
'text', 
'integer'),
 
  549            array(0, $nameToShow, $this->user_id)
 
  561        return $folderData[
'obj_id'] == $folderId;
 
An exception for terminatinating execution or to throw for unit testing.
Mail Box class Base class for creating and handling mail boxes.
renameFolder($a_obj_id, $a_new_folder_name)
Rename a folder and check if the name already exists.
updateMailsOfDeletedUser($nameToShow)
Update existing mails.
isOwnedFolder(int $folderId)
getActions($a_mobj_id)
get all possible actions if no mobj_id is given or folder specific actions if mobj_id is given
folderNameExists($a_folder_name)
Checks whether or not the passed folder name exists in the context of the folder owner.
getTrashFolder()
get Id of the trash folder of an user
__construct($a_user_id=0)
ilMailbox constructor.
getSentFolder()
get Id of the sent folder of an user
createDefaultFolder()
Creates all default folders for a user.
getInboxFolder()
get Id of the inbox folder of an user
getRootFolderId()
get Id of the root folder of an user
getSubFolders($a_folder=0, $a_folder_parent=0)
Get all folders under a given folder/node id.
getDraftsFolder()
get Id of the inbox folder of an user
addFolder($a_parent_id, $a_folder_name)
Adds a new mail folder with the passed name under the given parent folder.
getParentFolderId($a_obj_id)
Get id of parent folder.
getFolderData($a_obj_id)
Fetches the data of a specific folder.
deleteFolder($a_folder_id)
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
redirection script todo: (a better solution should control the processing via a xml file)
foreach($_POST as $key=> $value) $res