12 require_once(
"Services/Mail/classes/class.ilMail.php");
74 $this->
ilias = $DIC[
'ilias'];
75 $this->lng = $DIC->language();
76 $this->db = $DIC->database();
78 $this->user_id = $a_user_id;
80 $this->table_mail_obj_data =
'mail_obj_data';
81 $this->table_tree =
'mail_tree';
84 $this->mtree =
new ilTree($this->user_id);
85 $this->mtree->setTableNames($this->table_tree, $this->table_mail_obj_data);
91 if (is_object($this->lng)) {
92 $this->lng->loadLanguageModule(
"mail");
94 $this->actions =
array(
95 "moveMails" => $this->lng->txt(
"mail_move_to"),
96 "markMailsRead" => $this->lng->txt(
"mail_mark_read"),
97 "markMailsUnread" => $this->lng->txt(
"mail_mark_unread"),
98 "deleteMails" => $this->lng->txt(
"delete"));
102 $this->default_folder =
array(
103 "b_inbox" =>
"inbox",
104 "c_trash" =>
"trash",
105 "d_drafts" =>
"drafts",
107 "z_local" =>
"local");
115 $res = $this->db->queryF(
117 SELECT obj_id FROM ' . $this->table_mail_obj_data .
' 120 array(
'integer',
'text'),
121 array($this->user_id,
'inbox')
126 return $row[
'obj_id'];
134 $res = $this->db->queryF(
136 SELECT obj_id FROM ' . $this->table_mail_obj_data .
' 139 array(
'integer',
'text'),
140 array($this->user_id,
'drafts')
145 return $row[
'obj_id'];
153 $res = $this->db->queryf(
155 SELECT obj_id FROM ' . $this->table_mail_obj_data .
' 158 array(
'integer',
'text'),
159 array($this->user_id,
'trash')
164 return $row[
'obj_id'];
172 $res = $this->db->queryf(
174 SELECT obj_id FROM ' . $this->table_mail_obj_data .
' 177 array(
'integer',
'text'),
178 array($this->user_id,
'sent')
183 return $row[
'obj_id'];
191 return $this->mtree->getRootID($this->user_id);
206 if ($folder_data[
"type"] ==
"user_folder" or $folder_data[
"type"] ==
"local") {
207 #return array_merge($this->actions,array("add" => $this->lng->txt("mail_add_subfolder"))); 220 $root_id = $this->db->nextId($this->table_mail_obj_data);
221 $this->db->manipulateF(
223 INSERT INTO ' . $this->table_mail_obj_data .
' 229 VALUES(%s, %s, %s, %s)',
230 array(
'integer',
'integer',
'text',
'text'),
231 array($root_id, $this->user_id,
'a_root',
'root')
233 $this->mtree->addTree($this->user_id, $root_id);
235 foreach ($this->default_folder as
$key => $folder) {
236 $last_id = $this->db->nextId($this->table_mail_obj_data);
237 $this->db->manipulateF(
239 INSERT INTO ' . $this->table_mail_obj_data .
' 245 VALUES(%s, %s, %s, %s)',
246 array(
'integer',
'integer',
'text',
'text'),
247 array($last_id, $this->user_id,
$key, $folder)
249 $this->mtree->insertNode($last_id, $root_id);
265 $next_id = $this->db->nextId($this->table_mail_obj_data);
266 $this->db->manipulateF(
268 INSERT INTO ' . $this->table_mail_obj_data .
' 274 VALUES(%s,%s,%s,%s)',
275 array(
'integer',
'integer',
'text',
'text'),
276 array($next_id, $this->user_id, $a_folder_name,
'user_folder')
278 $this->mtree->insertNode($next_id, $a_parent_id);
295 $this->db->manipulateF(
297 UPDATE ' . $this->table_mail_obj_data .
' 299 WHERE obj_id = %s AND user_id = %s',
300 array(
'text',
'integer',
'integer'),
301 array($a_new_folder_name, $a_obj_id, $this->user_id)
314 $res = $this->db->queryF(
316 SELECT obj_id FROM ' . $this->table_mail_obj_data .
' 319 array(
'integer',
'text'),
320 array($this->user_id, $a_folder_name)
324 return is_array(
$row) &&
$row[
'obj_id'] > 0 ? true :
false;
334 $query = $this->db->queryf(
336 SELECT obj_id, title FROM mail_obj_data 337 WHERE obj_id = %s AND user_id = %s',
338 array(
'integer',
'integer'),
339 array($a_folder_id, $this->user_id)
343 if (!is_array(
$row) || array_key_exists(
$row[
'title'], $this->default_folder)) {
347 require_once
'Services/Mail/classes/class.ilMail.php';
348 $umail =
new ilMail($this->user_id);
350 $subtree = $this->mtree->getSubtree($this->mtree->getNodeData($a_folder_id));
351 $this->mtree->deleteTree($this->mtree->getNodeData($a_folder_id));
353 foreach ($subtree as $node) {
354 $mails = $umail->getMailsOfFolder($node[
"obj_id"]);
356 foreach ($mails as $mail) {
357 $mail_ids[] = $mail[
"mail_id"];
360 $umail->deleteMails($mail_ids);
362 $this->db->manipulateF(
364 DELETE FROM ' . $this->table_mail_obj_data .
' 365 WHERE obj_id = %s AND user_id = %s',
366 array(
'integer',
'integer'),
367 array($node[
'obj_id'], $this->user_id)
381 $res = $this->db->queryF(
383 SELECT * FROM ' . $this->table_mail_obj_data .
' 386 array(
'integer',
'integer'),
387 array($this->user_id, $a_obj_id)
392 'obj_id' =>
$row[
'obj_id'],
393 'title' =>
$row[
'title'],
394 'type' =>
$row[
'm_type']
405 $res = $this->db->queryF(
407 SELECT * FROM ' . $this->table_tree .
' 408 WHERE child = %s AND tree = %s',
409 array(
'integer',
'integer'),
410 array($a_obj_id, $this->user_id)
414 return is_array(
$row) ?
$row[
'parent'] : 0;
429 $user_folder =
array();
431 foreach ($this->default_folder as
$key => $value) {
432 $res = $this->db->queryF(
434 SELECT obj_id, m_type 435 FROM ' . $this->table_mail_obj_data .
' 438 array(
'integer',
'text'),
443 $user_folder[] =
array(
445 'type' =>
$row[
'm_type'],
446 'obj_id' =>
$row[
'obj_id']
450 $res = $this->db->queryF(
452 SELECT * FROM ' . $this->table_tree .
', ' . $this->table_mail_obj_data .
' 453 WHERE ' . $this->table_mail_obj_data .
'.obj_id = ' . $this->table_tree .
'.child 454 AND ' . $this->table_tree .
'.depth > %s 455 AND ' . $this->table_tree .
'.tree = %s 456 ORDER BY ' . $this->table_tree .
'.lft, ' . $this->table_mail_obj_data .
'.title ',
457 array(
'integer',
'integer'),
458 array(2, $this->user_id)
460 while (
$row = $this->db->fetchAssoc(
$res)) {
461 $user_folder[] =
array(
462 'title' =>
$row[
'title'],
463 'type' =>
$row[
'm_type'],
464 'obj_id' =>
$row[
'child']
476 $this->user_id = $a_user_id;
485 public function delete()
487 $this->db->manipulateF(
489 DELETE FROM mail_obj_data WHERE user_id = %s',
491 array($this->user_id)
494 $this->db->manipulateF(
496 DELETE FROM mail_options WHERE user_id = %s',
498 array($this->user_id)
501 $this->db->manipulateF(
503 DELETE FROM mail_saved WHERE user_id = %s',
505 array($this->user_id)
508 $this->db->manipulateF(
510 DELETE FROM mail_tree WHERE tree = %s',
512 array($this->user_id)
516 require_once
'Services/Mail/classes/class.ilFileDataMail.php';
518 $fdm->onUserDelete();
521 $this->db->manipulateF(
522 'DELETE FROM mail WHERE user_id = %s',
524 array($this->user_id)
537 $this->db->manipulateF(
540 SET sender_id = %s, import_name = %s 541 WHERE sender_id = %s',
542 array(
'integer',
'text',
'integer'),
543 array(0, $nameToShow, $this->user_id)
updateMailsOfDeletedUser($nameToShow)
Update existing mails.
This class handles all operations on files (attachments) in directory ilias_data/mail.
getSentFolder()
get Id of the sent folder of an user
getRootFolderId()
get Id of the root 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.
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.
foreach($_POST as $key=> $value) $res
getTrashFolder()
get Id of the trash folder of an user
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.
getInboxFolder()
get Id of the inbox folder of an user
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)
ilMailbox constructor.
getDraftsFolder()
get Id of the inbox folder of an user
deleteFolder($a_folder_id)