ajax.php 11 KB

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