ajax.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  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. // TODO: add reload on draft change
  121. // TODO: add draft-fields as options, depends on ^
  122. $editBox = array(
  123. "options" => array(
  124. array(
  125. "type" => "select",
  126. "name" => "vorlage",
  127. "value" => Document::getDefaultDraft()->filename,
  128. "values" => Document::getAllDrafts()
  129. ),
  130. array(
  131. "type" => "text",
  132. "name" => "filename",
  133. "value" => str_replace(".docx", "", Document::getDefaultDraft()->filename) . "_" . date("d_m_Y") . ".docx" // TODO: get value based on draft
  134. )
  135. ),
  136. "title" => "Neues Dokument"
  137. );
  138. echo json_encode($editBox);
  139. break;
  140. case 'getDraftVars':
  141. header("Status: 200 OK");
  142. // TODO: handle no draft given
  143. $documentHandle = new \PhpOffice\PhpWord\TemplateProcessor('drafts/' . $_REQUEST['draft']);
  144. $templateVars = $documentHandle->getVariables();
  145. echo json_encode(array_values($templateVars));
  146. break;
  147. case 'getMailboxStatus':
  148. header("Status: 200 OK");
  149. $mailbox = Mailbox::getMailboxById($_REQUEST['mailboxId'], true);
  150. $mailboxStatus = array(
  151. "connected" => $mailbox->getConnected()
  152. );
  153. echo json_encode($mailboxStatus);
  154. break;
  155. case 'saveNewDocument':
  156. header("Status: 200 OK");
  157. $newDocument = new DocumentHandler(Label::getLabelById($_REQUEST['labelId'])->getPath() . '/' . $_REQUEST['filename'], $_REQUEST['draft']);
  158. foreach($_REQUEST['draftVars'] as $key => $draftVar) {
  159. $newDocument->setVal($key, htmlspecialchars($draftVar));
  160. }
  161. $newDocument->saveFile();
  162. echo json_encode($_REQUEST);
  163. break;
  164. case 'getNewLabelBox':
  165. header("Status: 200 OK");
  166. $editBox = array(
  167. "options" => array(
  168. array(
  169. "type" => "text",
  170. "name" => "name",
  171. "value" => ""
  172. ),
  173. array(
  174. "type" => "text",
  175. "name" => "path",
  176. "value" => ""
  177. )
  178. ),
  179. "title" => "Neues Label"
  180. );
  181. echo json_encode($editBox);
  182. break;
  183. case 'saveNewLabel':
  184. header("Status: 200 OK");
  185. Label::addLabel($_REQUEST['name'], $_REQUEST['path']);
  186. // TODO: get status by DB (See: #40, #43)
  187. $return = array(
  188. "status" => "OK"
  189. );
  190. echo json_encode($return);
  191. break;
  192. case 'removeLabel':
  193. header("Status: 200 OK");
  194. Label::removeLabel($_REQUEST['labelId']);
  195. // TODO: get status by DB (See: #40, #43)
  196. $return = array(
  197. "status" => "OK"
  198. );
  199. echo json_encode($return);
  200. break;
  201. case 'saveMailFolder':
  202. header("Status: 200 OK");
  203. MailboxFolder::updateMailboxFolder($_REQUEST['mailboxFolderID'], $_REQUEST['folder'], Mailbox::getMailboxByUsername($_REQUEST['account'])->getId(), $_REQUEST['labelID']);
  204. // TODO: get status by DB (See: #40, #43)
  205. $return = array(
  206. "status" => "OK"
  207. );
  208. echo json_encode($return);
  209. break;
  210. case 'saveNewMailFolder':
  211. header("Status: 200 OK");
  212. MailboxFolder::addMailboxFolder($_REQUEST['folder'], Mailbox::getMailboxByUsername($_REQUEST['account'])->getId(), $_REQUEST['labelID']);
  213. // TODO: get status by DB (See: #40, #43)
  214. $return = array(
  215. "status" => "OK"
  216. );
  217. echo json_encode($return);
  218. break;
  219. case 'getNewCallBox':
  220. header("Status: 200 OK");
  221. $allLabels = Label::getAllLabels();
  222. $editBox = array(
  223. "options" => array(
  224. array(
  225. "type" => "datetime",
  226. "name" => "call-date",
  227. "value" => ""
  228. ),
  229. array(
  230. "type" => "text",
  231. "name" => "caller-telnr",
  232. "value" => ""
  233. ),
  234. array(
  235. "type" => "select",
  236. "name" => "label-id",
  237. "value" => Label::getLabelById($_REQUEST['labelID'])->getName(),
  238. "values" => array()
  239. ),
  240. array(
  241. "type" => "textarea",
  242. "name" => "call-notes",
  243. "value" => ""
  244. ),
  245. array(
  246. "type" => "checkbox",
  247. "name" => "call-set-reminder",
  248. "value" => ""
  249. )
  250. ),
  251. "title" => "Neuer Anruf"
  252. );
  253. foreach($allLabels as $label) {
  254. $editBox['options'][2]['values'][] = $label->getName();
  255. }
  256. echo json_encode($editBox);
  257. break;
  258. case 'saveNewCall':
  259. header("Status: 200 OK");
  260. Call::addCall($_REQUEST['callDate'], $_REQUEST['callerTelNr'], Label::getLabelByName($_REQUEST['labelID'])->getId(), $_REQUEST['callNotes']);
  261. $return = array(
  262. "status" => "OK"
  263. );
  264. echo json_encode($return);
  265. break;
  266. case 'getEvents':
  267. header("Status: 200 OK");
  268. $upcomingReminders = getObjectsAsArray(Reminder::getUpcomingRemindersByUserID($_REQUEST['userID']), array("id", "userID", "reminderDate", "remindedYet"));
  269. $return = array(
  270. "type" => "reminder",
  271. "reminders" => $upcomingReminders
  272. );
  273. echo json_encode($return);
  274. break;
  275. case 'setReminderReminded':
  276. header("Status: 200 OK");
  277. $reminder = Reminder::getReminderByID($_REQUEST['reminderID']);
  278. $reminder->setRemindedYet(1);
  279. $reminder->save();
  280. $return = array(
  281. "status" => "OK"
  282. );
  283. echo json_encode($return);
  284. break;
  285. case 'setReminderSnooze':
  286. header("Status: 200 OK");
  287. $reminder = Reminder::getReminderByID($_REQUEST['reminderID']);
  288. $reminder->setReminderDate(date("Y-m-d H:i:s", strtotime("+30 minutes"))); // TODO: add more values as select somewhere
  289. $reminder->save();
  290. $return = array(
  291. "status" => "OK"
  292. );
  293. echo json_encode($return);
  294. break;
  295. case 'debugTest': // for testing single methods etc.
  296. pa(Reminder::getUpcomingRemindersByUserID(1));
  297. pa(getObjectsAsArray(Reminder::getUpcomingRemindersByUserID(1), array("id", "userID", "reminderDate", "remindedYet")));
  298. break;
  299. default:
  300. header("Status: 400 No Action Defined");
  301. echo 'error';
  302. break;
  303. }
  304. //pa($_POST); // Debug
  305. ?>