12 require_once(
"Services/Mail/classes/class.ilMail.php");
84 $this->user_id = $a_user_id;
86 $this->table_mail_obj_data =
'mail_obj_data';
87 $this->table_tree =
'mail_tree';
91 $this->mtree =
new ilTree($this->user_id);
92 $this->mtree->setTableNames($this->table_tree,$this->table_mail_obj_data);
98 if (is_object($this->lng))
100 $this->lng->loadLanguageModule(
"mail");
102 $this->actions = array(
103 "moveMails" => $this->lng->txt(
"mail_move_to"),
104 "markMailsRead" => $this->lng->txt(
"mail_mark_read"),
105 "markMailsUnread" => $this->lng->txt(
"mail_mark_unread"),
106 "deleteMails" => $this->lng->txt(
"delete"));
110 $this->default_folder = array(
111 "b_inbox" =>
"inbox",
112 "c_trash" =>
"trash",
113 "d_drafts" =>
"drafts",
115 "z_local" =>
"local");
122 public function getInboxFolder()
129 $res = $ilDB->queryF(
' 130 SELECT obj_id FROM '.$this->table_mail_obj_data.
' 133 array(
'integer',
'text'),
134 array($this->user_id,
'inbox')
139 return $row[
'obj_id'];
146 public function getDraftsFolder()
153 $res = $ilDB->queryF(
' 154 SELECT obj_id FROM '.$this->table_mail_obj_data.
' 157 array(
'integer',
'text'),
158 array($this->user_id,
'drafts')
163 return $row[
'obj_id'];
170 public function getTrashFolder()
177 $res = $ilDB->queryf(
' 178 SELECT obj_id FROM '.$this->table_mail_obj_data.
' 181 array(
'integer',
'text'),
182 array($this->user_id,
'trash')
187 return $row[
'obj_id'];
194 public function getSentFolder()
201 $res = $ilDB->queryf(
' 202 SELECT obj_id FROM '.$this->table_mail_obj_data.
' 205 array(
'integer',
'text'),
206 array($this->user_id,
'sent')
211 return $row[
'obj_id'];
220 return $this->mtree->getRootID($this->user_id);
236 if ($folder_data[
"type"] ==
"user_folder" or $folder_data[
"type"] ==
"local")
238 #return array_merge($this->actions,array("add" => $this->lng->txt("mail_add_subfolder"))); 253 $root_id = $ilDB->nextId($this->table_mail_obj_data);
255 INSERT INTO '. $this->table_mail_obj_data .
' 261 VALUES(%s, %s, %s, %s)',
262 array(
'integer',
'integer',
'text',
'text'),
263 array($root_id, $this->user_id,
'a_root',
'root')
265 $this->mtree->addTree($this->user_id, $root_id);
267 foreach($this->default_folder as $key => $folder)
269 $last_id = $ilDB->nextId($this->table_mail_obj_data);
271 INSERT INTO '. $this->table_mail_obj_data .
' 277 VALUES(%s, %s, %s, %s)',
278 array(
'integer',
'integer',
'text',
'text'),
279 array($last_id, $this->user_id, $key, $folder)
281 $this->mtree->insertNode($last_id, $root_id);
300 $next_id = $ilDB->nextId($this->table_mail_obj_data);
302 INSERT INTO '. $this->table_mail_obj_data .
' 308 VALUES(%s,%s,%s,%s)',
309 array(
'integer',
'integer',
'text',
'text'),
310 array($next_id, $this->user_id, $a_folder_name,
'user_folder')
312 $this->mtree->insertNode($next_id, $a_parent_id);
333 UPDATE '. $this->table_mail_obj_data .
' 335 WHERE obj_id = %s AND user_id = %s',
336 array(
'text',
'integer',
'integer'),
337 array($a_new_folder_name, $a_obj_id, $this->user_id)
352 $res = $ilDB->queryF(
' 353 SELECT obj_id FROM '. $this->table_mail_obj_data .
' 356 array(
'integer',
'text'),
357 array($this->user_id, $a_folder_name)
361 return is_array(
$row) &&
$row[
'obj_id'] > 0 ? true :
false;
374 SELECT obj_id, title FROM mail_obj_data 375 WHERE obj_id = %s AND user_id = %s',
376 array(
'integer',
'integer'),
377 array($a_folder_id, $this->user_id)
381 if(!is_array(
$row) || array_key_exists(
$row[
'title'], $this->default_folder))
386 require_once
'Services/Mail/classes/class.ilMail.php';
387 $umail =
new ilMail($this->user_id);
389 $subtree = $this->mtree->getSubtree($this->mtree->getNodeData($a_folder_id));
390 $this->mtree->deleteTree($this->mtree->getNodeData($a_folder_id));
392 foreach($subtree as $node)
394 $mails = $umail->getMailsOfFolder($node[
"obj_id"]);
396 foreach($mails as $mail)
398 $mail_ids[] = $mail[
"mail_id"];
401 $umail->deleteMails($mail_ids);
404 DELETE FROM '. $this->table_mail_obj_data .
' 405 WHERE obj_id = %s AND user_id = %s',
406 array(
'integer',
'integer'),
407 array($node[
'obj_id'], $this->user_id)
423 $res = $ilDB->queryF(
' 424 SELECT * FROM ' . $this->table_mail_obj_data .
' 427 array(
'integer',
'integer'),
428 array($this->user_id, $a_obj_id)
433 'obj_id' =>
$row[
'obj_id'],
434 'title' =>
$row[
'title'],
435 'type' =>
$row[
'm_type']
448 $res = $ilDB->queryF(
' 449 SELECT * FROM '. $this->table_tree .
' 450 WHERE child = %s AND tree = %s',
451 array(
'integer',
'integer'),
452 array($a_obj_id, $this->user_id)
456 return is_array(
$row) ?
$row[
'parent'] : 0;
474 $user_folder = array();
476 foreach($this->default_folder as $key => $value)
478 $res = $ilDB->queryF(
' 479 SELECT obj_id, m_type 480 FROM ' . $this->table_mail_obj_data .
' 483 array(
'integer',
'text'),
484 array($this->user_id, $key)
488 $user_folder[] = array(
490 'type' =>
$row[
'm_type'],
491 'obj_id' =>
$row[
'obj_id']
495 $res = $ilDB->queryF(
' 496 SELECT * FROM ' . $this->table_tree .
', ' . $this->table_mail_obj_data .
' 497 WHERE ' . $this->table_mail_obj_data .
'.obj_id = ' . $this->table_tree .
'.child 498 AND ' . $this->table_tree .
'.depth > %s 499 AND ' . $this->table_tree .
'.tree = %s 500 ORDER BY ' . $this->table_tree .
'.lft, ' . $this->table_mail_obj_data .
'.title ',
501 array(
'integer',
'integer'),
502 array(2, $this->user_id)
504 while(
$row = $ilDB->fetchAssoc(
$res))
506 $user_folder[] = array(
507 'title' =>
$row[
'title'],
508 'type' =>
$row[
'm_type'],
509 'obj_id' =>
$row[
'child']
521 $this->user_id = $a_user_id;
530 public function delete()
538 DELETE FROM mail_obj_data WHERE user_id = %s',
539 array(
'integer'), array($this->user_id)
543 DELETE FROM mail_options WHERE user_id = %s',
544 array(
'integer'), array($this->user_id)
548 DELETE FROM mail_saved WHERE user_id = %s',
549 array(
'integer'), array($this->user_id)
553 DELETE FROM mail_tree WHERE tree = %s',
554 array(
'integer'), array($this->user_id)
558 require_once
'Services/Mail/classes/class.ilFileDataMail.php';
560 $fdm->onUserDelete();
564 'DELETE FROM mail WHERE user_id = %s',
566 array($this->user_id)
577 public function updateMailsOfDeletedUser($nameToShow)
586 SET sender_id = %s, import_name = %s 587 WHERE sender_id = %s',
588 array(
'integer',
'text',
'integer'),
589 array(0, $nameToShow, $this->user_id)
This class handles all operations on files (attachments) in directory ilias_data/mail.
getRootFolderId()
get Id of the root folder of an user public
addFolder($a_parent_id, $a_folder_name)
Adds a new mail folder with the passed name under the given parent folder.
folderNameExists($a_folder_name)
Checks whether or not the passed folder name exists in the context of the folder owner.
getFolderData($a_obj_id)
Fetches the data of a specific folder.
Mail Box class Base class for creating and handling mail boxes.
Class Mail this class handles base functions for mail handling.
createDefaultFolder()
Creates all default folders for a user.
getParentFolderId($a_obj_id)
Get id of parent folder.
redirection script todo: (a better solution should control the processing via a xml file) ...
renameFolder($a_obj_id, $a_new_folder_name)
Rename a folder and check if the name already exists.
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
getSubFolders($a_folder=0, $a_folder_parent=0)
Get all folders under a given folder/node id.
getActions($a_mobj_id)
get all possible actions if no mobj_id is given or folder specific actions if mobj_id is given ...
__construct($a_user_id=0)
Constructor.
deleteFolder($a_folder_id)