functions.inc.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. // Label functions
  3. function pa($array) {
  4. echo '<pre>';
  5. print_r($array);
  6. echo '</pre>';
  7. }
  8. function error($message) {
  9. echo $message;
  10. }
  11. function getLabels() {
  12. global $db;
  13. $return = array();
  14. $labels = $db->selectQuery("SELECT * FROM `labels`;");
  15. foreach($labels as $label) {
  16. $return[] = new Label($label->id, $label->name);
  17. }
  18. return $return;
  19. }
  20. function getLabelById($labelId) {
  21. global $db;
  22. $return = array();
  23. $labels = $db->selectQuery("SELECT * FROM `labels` WHERE `id` = " . $labelId . ";");
  24. foreach($labels as $label) {
  25. $return[] = new Label($label->id, $label->name);
  26. }
  27. return $return;
  28. }
  29. function getLabelByPath($path) {
  30. global $db;
  31. $return = array();
  32. $labels = $db->selectQuery("SELECT * FROM `labels` WHERE `path` = '" . $path . "';");
  33. foreach($labels as $label) {
  34. $return[] = new Label($label->id, $label->name);
  35. }
  36. return $return;
  37. }
  38. function getDocumentsByLabelId($labelId) {
  39. global $db;
  40. $return = array();
  41. $documents = $db->selectQuery("SELECT * FROM `documents` WHERE `label_id` = " . $labelId . ";");
  42. foreach($documents as $document) {
  43. $return[] = new Document($document->id, $document->filename, $document->path, $document->label_id, $document->draft, $document->created, $document->last_change, $document->type, $document->mail_uid);
  44. }
  45. return $return;
  46. }
  47. function getDocumentsByPath($path) {
  48. global $db;
  49. $return = array();
  50. $documents = $db->selectQuery("SELECT documents.* FROM `documents` JOIN `labels` ON labels.id = documents.label_id WHERE labels.path = '" . $path . "';");
  51. foreach($documents as $document) {
  52. $return[] = new Document($document->id, $document->filename, $document->path, $document->label_id, $document->draft, $document->created, $document->last_change, $document->type, $document->mail_uid);
  53. }
  54. return $return;
  55. }
  56. function getDocumentsByMailUidLabelId($mailUid, $labelId) {
  57. global $db;
  58. $return = array();
  59. $documents = $db->selectQuery("SELECT * FROM `documents` WHERE `mail_uid` = " . $mailUid . " AND `label_id` = " . $labelId . ";");
  60. foreach($documents as $document) {
  61. $return[] = new Document($document->id, $document->filename, $document->path, $document->label_id, $document->draft, $document->created, $document->last_change, $document->type, $document->mail_uid);
  62. }
  63. return $return;
  64. }
  65. function getMailboxes() {
  66. global $db;
  67. $return = array();
  68. $mailboxes = $db->selectQuery("SELECT * FROM `mailboxes`;");
  69. foreach($mailboxes as $mailbox) {
  70. $useSsl = '';
  71. $noValidCert = '';
  72. if($mailbox->use_ssl) {
  73. $useSsl = '/ssl';
  74. }
  75. if(!$mailbox->valid_ssl) {
  76. $noValidCert = '/novalidate-cert';
  77. }
  78. $return[] = new Imap('{' . $mailbox->server . ':' . $mailbox->port . '/' . $mailbox->protocol . $useSsl . $noValidCert . '}', $mailbox->username, $mailbox->password); // TODO: Encrypt password
  79. }
  80. return $return;
  81. }
  82. function getMailboxesByUserId($userId) {
  83. global $db;
  84. $return = array();
  85. $mailboxes = $db->selectQuery("SELECT * FROM `mailboxes` WHERE `user_id` = " . $userId . ";");
  86. foreach($mailboxes as $mailbox) {
  87. $useSsl = '';
  88. $noValidCert = '';
  89. if($mailbox->use_ssl) {
  90. $useSsl = '/ssl';
  91. }
  92. if(!$mailbox->valid_ssl) {
  93. $noValidCert = '/novalidate-cert';
  94. }
  95. $return[] = new Imap('{' . $mailbox->server . ':' . $mailbox->port . '/' . $mailbox->protocol . $useSsl . $noValidCert . '}', $mailbox->username, $mailbox->password); // TODO: Encrypt password
  96. }
  97. return $return;
  98. }
  99. function getMailboxFolderByName($folderName) {
  100. global $db;
  101. $return = array();
  102. $folders = $db->selectQuery("SELECT * FROM `mailbox-folders` WHERE `folder_name` = '" . $folderName . "';");
  103. if(!$folders) {
  104. return false;
  105. }
  106. foreach($folders as $folder) {
  107. $return[] = new MailboxFolder($folder->folder_name, $folder->mailbox_id, $folder->label_id);
  108. }
  109. return $return;
  110. }
  111. function addDocument($type, $fileName, $path, $labelId, $draft, $created, $lastChange, $mailUid) {
  112. global $db;
  113. $query = "INSERT INTO `documents`(`type`, `filename`, `path`, `label_id`, `draft`, `created`, `last_change`, `mail_uid`) VALUES ('" . $type . "', '" . $fileName . "', '" . $path . "', " . $labelId . ", '" . $draft . "', " . $created . ", " . $lastChange . ", " . $mailUid . ");";
  114. $db->insertQuery($query);
  115. }
  116. function searchNewFiles($scanDir) {
  117. global $db;
  118. global $CONFIG;
  119. $oldDocuments = getDocumentsByPath($scanDir);
  120. $files = scandir($CONFIG['documentPath'] . $scanDir);
  121. foreach($files as $file) {
  122. $existed = false;
  123. if($file === '.' || $file === '..') {
  124. continue;
  125. }
  126. foreach($oldDocuments as $oldDocument) {
  127. if($oldDocument->getFileName() === $file) { // TODO: Check update-date, maybe removed files
  128. $existed = true;
  129. break;
  130. }
  131. }
  132. if($existed) {
  133. continue;
  134. }
  135. addDocument('file', $file, '/', getLabelByPath($scanDir)[0]->getId(), '', 'NOW()', 'NOW()', 0); // TODO: get dates by filesystem
  136. }
  137. }
  138. function searchMails() {
  139. global $user;
  140. //$imap = new Imap('{mail.mmnx.de:993/imap/ssl/novalidate-cert}', 'mobi@mmnx.de', 'msmoro');
  141. //$imap->listFolders();
  142. $mailboxes = getMailBoxes();
  143. //pa($mailboxes);
  144. foreach($mailboxes as $mailbox) {
  145. $mailbox->listFolders();
  146. }
  147. foreach($mailboxes as $mailbox) {
  148. foreach($mailbox->getFolders() as $folder) {
  149. $mbFolder = getMailboxFolderByName($folder);
  150. if($mbFolder[0] != false) {
  151. $mailbox->changeFolder($mbFolder[0]->getFolderName());
  152. $messageCount = imap_num_msg($mailbox->getMailbox());
  153. for($i = 1; $i <= $messageCount; ++$i) {
  154. $headers = imap_header($mailbox->getMailbox(), $i);
  155. $uid = imap_uid($mailbox->getMailbox(), $i);
  156. $documents = getDocumentsByMailUidLabelId($uid, $mbFolder[0]->getLabelId());
  157. if(sizeof($documents) < 1) {
  158. addDocument('mail', $headers->subject, $headers->from[0]->mailbox . '@' . $headers->from[0]->host, $mbFolder[0]->getLabelId(), '', '\'' . $headers->date . '\'', '\'' . $headers->date . '\'', $uid);
  159. }
  160. }
  161. }
  162. }
  163. }
  164. }
  165. ?>