ajax.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. <?php
  2. // AJAX handling
  3. // Includes
  4. require('includes/config.inc.php');
  5. require('includes/database.inc.php');
  6. require('includes/functions.inc.php');
  7. require('includes/document.inc.php');
  8. require('includes/label.inc.php');
  9. require('includes/mailbox.inc.php');
  10. require('includes/mailboxfolder.inc.php');
  11. require('includes/documenthandler.inc.php');
  12. require('includes/call.inc.php');
  13. $db = new Database($CONFIG['dbHost'], $CONFIG['dbUser'], $CONFIG['dbPassword'], $CONFIG['dbDatabase']);
  14. switch($_REQUEST['action']) {
  15. case 'updateMailaccounts':
  16. switch($_POST['name']) {
  17. case 'hostname':
  18. header("Status: 200 OK");
  19. $db->updateQuery("UPDATE `mailboxes` SET `server`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  20. break;
  21. case 'port':
  22. header("Status: 200 OK");
  23. $db->updateQuery("UPDATE `mailboxes` SET `port`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  24. break;
  25. case 'protocol':
  26. header("Status: 200 OK");
  27. $db->updateQuery("UPDATE `mailboxes` SET `protocol`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  28. break;
  29. case 'use-ssl':
  30. header("Status: 200 OK");
  31. $db->updateQuery("UPDATE `mailboxes` SET `use_ssl`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  32. break;
  33. case 'no-valid-cert':
  34. header("Status: 200 OK");
  35. $db->updateQuery("UPDATE `mailboxes` SET `valid_ssl`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  36. break;
  37. case 'username':
  38. header("Status: 200 OK");
  39. $db->updateQuery("UPDATE `mailboxes` SET `username`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  40. break;
  41. case 'password':
  42. header("Status: 200 OK");
  43. $db->updateQuery("UPDATE `mailboxes` SET `password`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  44. break;
  45. default:
  46. header("Status: 400 Wrong Field");
  47. echo 'error';
  48. break;
  49. }
  50. break;
  51. case 'updateMailfolder':
  52. switch($_POST['name']) {
  53. case 'mailaccount':
  54. header("Status: 200 OK");
  55. $db->updateQuery("UPDATE `mailbox-folders` SET `mailbox_id`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  56. break;
  57. case 'mailfolder':
  58. header("Status: 200 OK");
  59. $db->updateQuery("UPDATE `mailbox-folders` SET `folder_name`='" . $_POST['value'] . "' WHERE id=" . $_POST['pk'] . ";");
  60. break;
  61. default:
  62. header("Status: 400 Wrong Field");
  63. echo 'error';
  64. break;
  65. }
  66. break;
  67. case 'addDefaultMailaccount':
  68. header("Status: 200 OK");
  69. $db->insertQuery("INSERT INTO `mailboxes` (`user_id`) VALUES (" . $_POST['user-id'] . ");");
  70. break;
  71. case 'addDefaultMailfolder':
  72. header("Status: 200 OK");
  73. $db->insertQuery("INSERT INTO `mailbox-folders` (`label_id`) VALUES (" . $_POST['label-id'] . ");");
  74. break;
  75. case 'removeMailaccount':
  76. header("Status: 200 OK");
  77. $db->removeQuery("DELETE FROM `mailboxes` WHERE `id` = " . $_POST['id'] . ";");
  78. break;
  79. case 'removeMailboxFolder':
  80. header("Status: 200 OK");
  81. $db->removeQuery("DELETE FROM `mailbox-folders` WHERE `id` = " . $_POST['id'] . ";");
  82. break;
  83. case 'manageMailboxFolder':
  84. header("Status: 200 OK");
  85. $allMailBoxes = Mailbox::getAllMailboxes(false);
  86. $editBox = array(
  87. "options" => array(
  88. array(
  89. "type" => "select",
  90. "name" => "account",
  91. "value" => Mailbox::getMailboxNameFromMailaccountId($_GET['mbId']),
  92. "values" => array()
  93. ),
  94. array(
  95. "type" => "text",
  96. "name" => "folder",
  97. "value" => MailboxFolder::getMailboxFolderNameFromId($_GET['mfId'])
  98. )
  99. ),
  100. "title" => "Mailkonto bearbeiten",
  101. "mailboxFolderID" => $_GET['mfId']
  102. );
  103. foreach($allMailBoxes as $mailBox) {
  104. $editBox['options'][0]['values'][] = $mailBox->getUsername();
  105. }
  106. echo json_encode($editBox);
  107. break;
  108. case 'getMailAccountsByUid':
  109. header("Status: 200 OK");
  110. $mailboxes = Mailbox::getMailboxesByUserId($_REQUEST['uId']);
  111. $mbArray = array();
  112. foreach($mailboxes as $mailbox) {
  113. $mbArray[$mailbox->getId()] = $mailbox->getUsername();
  114. }
  115. echo json_encode($mbArray);
  116. break;
  117. case 'getNewDocumentBox':
  118. header("Status: 200 OK");
  119. // TODO: add reload on draft change
  120. // TODO: add draft-fields as options, depends on ^
  121. $editBox = array(
  122. "options" => array(
  123. array(
  124. "type" => "select",
  125. "name" => "vorlage",
  126. "value" => Document::getDefaultDraft()->filename,
  127. "values" => Document::getAllDrafts()
  128. ),
  129. array(
  130. "type" => "text",
  131. "name" => "filename",
  132. "value" => str_replace(".docx", "", Document::getDefaultDraft()->filename) . "_" . date("d_m_Y") . ".docx" // TODO: get value based on draft
  133. )
  134. ),
  135. "title" => "Neues Dokument"
  136. );
  137. echo json_encode($editBox);
  138. break;
  139. case 'getDraftVars':
  140. header("Status: 200 OK");
  141. // TODO: handle no draft given
  142. $documentHandle = new \PhpOffice\PhpWord\TemplateProcessor('drafts/' . $_REQUEST['draft']);
  143. $templateVars = $documentHandle->getVariables();
  144. echo json_encode(array_values($templateVars));
  145. break;
  146. case 'getMailboxStatus':
  147. header("Status: 200 OK");
  148. $mailbox = Mailbox::getMailboxById($_REQUEST['mailboxId'], true);
  149. $mailboxStatus = array(
  150. "connected" => $mailbox->getConnected()
  151. );
  152. echo json_encode($mailboxStatus);
  153. break;
  154. case 'saveNewDocument':
  155. header("Status: 200 OK");
  156. $newDocument = new DocumentHandler(Label::getLabelById($_REQUEST['labelId'])->getPath() . '/' . $_REQUEST['filename'], $_REQUEST['draft']);
  157. foreach($_REQUEST['draftVars'] as $key => $draftVar) {
  158. $newDocument->setVal($key, htmlspecialchars($draftVar));
  159. }
  160. $newDocument->saveFile();
  161. echo json_encode($_REQUEST);
  162. break;
  163. case 'getNewLabelBox':
  164. header("Status: 200 OK");
  165. $editBox = array(
  166. "options" => array(
  167. array(
  168. "type" => "text",
  169. "name" => "name",
  170. "value" => ""
  171. ),
  172. array(
  173. "type" => "text",
  174. "name" => "path",
  175. "value" => ""
  176. )
  177. ),
  178. "title" => "Neues Label"
  179. );
  180. echo json_encode($editBox);
  181. break;
  182. case 'saveNewLabel':
  183. header("Status: 200 OK");
  184. Label::addLabel($_REQUEST['name'], $_REQUEST['path']);
  185. // TODO: get status by DB (See: #40, #43)
  186. $return = array(
  187. "status" => "OK"
  188. );
  189. echo json_encode($return);
  190. break;
  191. case 'removeLabel':
  192. header("Status: 200 OK");
  193. Label::removeLabel($_REQUEST['labelId']);
  194. // TODO: get status by DB (See: #40, #43)
  195. $return = array(
  196. "status" => "OK"
  197. );
  198. echo json_encode($return);
  199. break;
  200. case 'saveMailFolder':
  201. header("Status: 200 OK");
  202. MailboxFolder::updateMailboxFolder($_REQUEST['mailboxFolderID'], $_REQUEST['folder'], Mailbox::getMailboxByUsername($_REQUEST['account'])->getId(), $_REQUEST['labelID']);
  203. // TODO: get status by DB (See: #40, #43)
  204. $return = array(
  205. "status" => "OK"
  206. );
  207. echo json_encode($return);
  208. break;
  209. case 'saveNewMailFolder':
  210. header("Status: 200 OK");
  211. MailboxFolder::addMailboxFolder($_REQUEST['folder'], Mailbox::getMailboxByUsername($_REQUEST['account'])->getId(), $_REQUEST['labelID']);
  212. // TODO: get status by DB (See: #40, #43)
  213. $return = array(
  214. "status" => "OK"
  215. );
  216. echo json_encode($return);
  217. break;
  218. case 'getNewCallBox':
  219. header("Status: 200 OK");
  220. $allLabels = Label::getAllLabels();
  221. $editBox = array(
  222. "options" => array(
  223. array(
  224. "type" => "datetime",
  225. "name" => "call-date",
  226. "value" => ""
  227. ),
  228. array(
  229. "type" => "text",
  230. "name" => "caller-telnr",
  231. "value" => ""
  232. ),
  233. array(
  234. "type" => "select",
  235. "name" => "label-id",
  236. "value" => Label::getLabelById($_REQUEST['labelID'])->getName(),
  237. "values" => array()
  238. ),
  239. array(
  240. "type" => "textarea",
  241. "name" => "call-notes",
  242. "value" => ""
  243. ),
  244. array(
  245. "type" => "checkbox",
  246. "name" => "call-set-reminder",
  247. "value" => ""
  248. )
  249. ),
  250. "title" => "Neuer Anruf"
  251. );
  252. foreach($allLabels as $label) {
  253. $editBox['options'][2]['values'][] = $label->getName();
  254. }
  255. echo json_encode($editBox);
  256. break;
  257. case 'saveNewCall':
  258. header("Status: 200 OK");
  259. Call::addCall($_REQUEST['callDate'], $_REQUEST['callerTelNr'], Label::getLabelByName($_REQUEST['labelID'])->getId(), $_REQUEST['callNotes']);
  260. $return = array(
  261. "status" => "OK"
  262. );
  263. echo json_encode($return);
  264. break;
  265. case 'debugTest': // for testing single methods etc.
  266. pa(MailBox::getMailboxByUsername($_REQUEST['account'])->getId());
  267. break;
  268. default:
  269. header("Status: 400 No Action Defined");
  270. echo 'error';
  271. break;
  272. }
  273. //pa($_POST); // Debug
  274. ?>