functions.rsettings.inc.php 5.7 KB

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