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',
543 DELETE FROM mail_options WHERE user_id = %s',
548 DELETE FROM mail_saved WHERE user_id = %s',
553 DELETE FROM mail_tree WHERE tree = %s',
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.
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...
Create styles array
The data for the language used.
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)