functions.rsettings.inc.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. function rsettings($_action, $_data = null) {
  3. global $pdo;
  4. global $lang;
  5. switch ($_action) {
  6. case 'add':
  7. if ($_SESSION['mailcow_cc_role'] != "admin") {
  8. $_SESSION['return'] = array(
  9. 'type' => 'danger',
  10. 'msg' => sprintf($lang['danger']['access_denied'])
  11. );
  12. return false;
  13. }
  14. $content = $_data['content'];
  15. $desc = $_data['desc'];
  16. $active = $_data['active'];
  17. if (empty($content)) {
  18. $_SESSION['return'] = array(
  19. 'type' => 'danger',
  20. 'msg' => 'Content cannot be empty'
  21. );
  22. return false;
  23. }
  24. try {
  25. $stmt = $pdo->prepare("INSERT INTO `settingsmap` (`content`, `desc`, `active`)
  26. VALUES (:content, :desc, :active)");
  27. $stmt->execute(array(
  28. ':content' => $content,
  29. ':desc' => $desc,
  30. ':active' => $active
  31. ));
  32. }
  33. catch (PDOException $e) {
  34. $_SESSION['return'] = array(
  35. 'type' => 'danger',
  36. 'msg' => 'MySQL: '.$e
  37. );
  38. return false;
  39. }
  40. $_SESSION['return'] = array(
  41. 'type' => 'success',
  42. 'msg' => 'Added settings map entry'
  43. );
  44. break;
  45. case 'edit':
  46. if ($_SESSION['mailcow_cc_role'] != "admin") {
  47. $_SESSION['return'] = array(
  48. 'type' => 'danger',
  49. 'msg' => sprintf($lang['danger']['access_denied'])
  50. );
  51. return false;
  52. }
  53. $ids = (array)$_data['id'];
  54. foreach ($ids as $id) {
  55. $is_now = rsettings('details', $id);
  56. if (!empty($is_now)) {
  57. $content = (!empty($_data['content'])) ? $_data['content'] : $is_now['content'];
  58. $desc = (!empty($_data['desc'])) ? $_data['desc'] : $is_now['desc'];
  59. $active = (isset($_data['active'])) ? intval($_data['active']) : $is_now['active_int'];
  60. }
  61. else {
  62. $_SESSION['return'] = array(
  63. 'type' => 'danger',
  64. 'msg' => 'Settings map invalid'
  65. );
  66. return false;
  67. }
  68. $content = trim($content);
  69. try {
  70. $stmt = $pdo->prepare("UPDATE `settingsmap` SET
  71. `content` = :content,
  72. `desc` = :desc,
  73. `active` = :active
  74. WHERE `id` = :id");
  75. $stmt->execute(array(
  76. ':content' => $content,
  77. ':desc' => $desc,
  78. ':active' => $active,
  79. ':id' => $id
  80. ));
  81. }
  82. catch (PDOException $e) {
  83. $_SESSION['return'] = array(
  84. 'type' => 'danger',
  85. 'msg' => 'MySQL: '.$e
  86. );
  87. return false;
  88. }
  89. }
  90. $_SESSION['return'] = array(
  91. 'type' => 'success',
  92. 'msg' => sprintf($lang['success']['object_modified'], htmlspecialchars(implode(', ', $ids)))
  93. );
  94. break;
  95. case 'delete':
  96. if ($_SESSION['mailcow_cc_role'] != "admin") {
  97. $_SESSION['return'] = array(
  98. 'type' => 'danger',
  99. 'msg' => sprintf($lang['danger']['access_denied'])
  100. );
  101. return false;
  102. }
  103. $ids = (array)$_data['id'];
  104. foreach ($ids as $id) {
  105. try {
  106. $stmt = $pdo->prepare("DELETE FROM `settingsmap` WHERE `id`= :id");
  107. $stmt->execute(array(':id' => $id));
  108. }
  109. catch (PDOException $e) {
  110. $_SESSION['return'] = array(
  111. 'type' => 'danger',
  112. 'msg' => 'MySQL: '.$e
  113. );
  114. return false;
  115. }
  116. }
  117. $_SESSION['return'] = array(
  118. 'type' => 'success',
  119. 'msg' => 'Removed settings map ID'
  120. );
  121. break;
  122. case 'get':
  123. if ($_SESSION['mailcow_cc_role'] != "admin") {
  124. return false;
  125. }
  126. $settingsmaps = array();
  127. try {
  128. $stmt = $pdo->query("SELECT `id`, `desc`, `active` FROM `settingsmap`");
  129. $settingsmaps = $stmt->fetchAll(PDO::FETCH_ASSOC);
  130. }
  131. catch(PDOException $e) {
  132. $_SESSION['return'] = array(
  133. 'type' => 'danger',
  134. 'msg' => 'MySQL: '.$e
  135. );
  136. }
  137. return $settingsmaps;
  138. break;
  139. case 'details':
  140. if ($_SESSION['mailcow_cc_role'] != "admin" || !isset($_data)) {
  141. return false;
  142. }
  143. $settingsmapdata = array();
  144. try {
  145. $stmt = $pdo->prepare("SELECT `id`,
  146. `desc`,
  147. `content`,
  148. `active` AS `active_int`,
  149. CASE `active` WHEN 1 THEN '".$lang['mailbox']['yes']."' ELSE '".$lang['mailbox']['no']."' END AS `active`
  150. FROM `settingsmap`
  151. WHERE `id` = :id");
  152. $stmt->execute(array(':id' => $_data));
  153. $settingsmapdata = $stmt->fetch(PDO::FETCH_ASSOC);
  154. }
  155. catch(PDOException $e) {
  156. $_SESSION['return'] = array(
  157. 'type' => 'danger',
  158. 'msg' => 'MySQL: '.$e
  159. );
  160. }
  161. return $settingsmapdata;
  162. break;
  163. }
  164. }