functions.presets.inc.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. function presets($_action, $_kind) {
  3. global $lang;
  4. switch ($_action) {
  5. case 'get':
  6. if ($_SESSION['mailcow_cc_role'] != "admin" && $_SESSION['mailcow_cc_role'] != "domainadmin") {
  7. return false;
  8. }
  9. $presets = array();
  10. $kind = strtolower(trim($_kind));
  11. $lang_base = 'admin';
  12. $presets_path = __DIR__ . '/presets/' . $kind;
  13. if (!in_array($kind, ['rspamd', 'sieve'], true)) {
  14. return array();
  15. }
  16. if ($kind === 'sieve') {
  17. $lang_base = 'mailbox';
  18. }
  19. foreach (glob($presets_path . '/*.yml') as $filename) {
  20. $presets[] = getPresetFromFilePath($filename, $lang_base);
  21. }
  22. return $presets;
  23. break;
  24. }
  25. return array();
  26. }
  27. function getPresetFromFilePath($filePath, $lang_base) {
  28. global $lang;
  29. $preset = Spyc::YAMLLoad($filePath);
  30. $preset = ['name' => basename($filePath, '.yml')] + $preset;
  31. /* get translated headlines */
  32. if (isset($preset['headline']) && strpos($preset['headline'], 'lang.') === 0) {
  33. $langTextName = trim(substr($preset['headline'], 5));
  34. if (isset($lang[$lang_base][$langTextName])) {
  35. $preset['headline'] = $lang[$lang_base][$langTextName];
  36. }
  37. }
  38. return $preset;
  39. }