header.inc.php 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. // CSS
  3. if (preg_match("/mailbox/i", $_SERVER['REQUEST_URI'])) {
  4. $css_minifier->add('/web/css/site/mailbox.css');
  5. }
  6. if (preg_match("/admin/i", $_SERVER['REQUEST_URI'])) {
  7. $css_minifier->add('/web/css/site/admin.css');
  8. }
  9. if (preg_match("/user/i", $_SERVER['REQUEST_URI'])) {
  10. $css_minifier->add('/web/css/site/user.css');
  11. }
  12. if (preg_match("/edit/i", $_SERVER['REQUEST_URI'])) {
  13. $css_minifier->add('/web/css/site/edit.css');
  14. }
  15. if (preg_match("/(quarantine|qhandler)/i", $_SERVER['REQUEST_URI'])) {
  16. $css_minifier->add('/web/css/site/quarantine.css');
  17. }
  18. if (preg_match("/debug/i", $_SERVER['REQUEST_URI'])) {
  19. $css_minifier->add('/web/css/site/debug.css');
  20. }
  21. if ($_SERVER['REQUEST_URI'] == '/') {
  22. $css_minifier->add('/web/css/site/index.css');
  23. }
  24. $hash = $css_minifier->getDataHash();
  25. $CSSPath = '/tmp/' . $hash . '.css';
  26. if(!file_exists($CSSPath)) {
  27. $css_minifier->minify($CSSPath);
  28. cleanupCSS($hash);
  29. }
  30. $mailcow_apps_processed = $MAILCOW_APPS;
  31. $app_links = customize('get', 'app_links');
  32. $app_links_processed = $app_links;
  33. $hide_mailcow_apps = true;
  34. for ($i = 0; $i < count($mailcow_apps_processed); $i++) {
  35. if ($hide_mailcow_apps && !$mailcow_apps_processed[$i]['hide']){
  36. $hide_mailcow_apps = false;
  37. }
  38. if (!empty($_SESSION['mailcow_cc_username'])){
  39. if ($app_links_processed[$i]['user_link']) {
  40. $mailcow_apps_processed[$i]['user_link'] = str_replace('%u', $_SESSION['mailcow_cc_username'], $mailcow_apps_processed[$i]['user_link']);
  41. } else {
  42. $mailcow_apps_processed[$i]['user_link'] = $mailcow_apps_processed[$i]['link'];
  43. }
  44. }
  45. }
  46. if ($app_links_processed){
  47. for ($i = 0; $i < count($app_links_processed); $i++) {
  48. $key = array_key_first($app_links_processed[$i]);
  49. if ($hide_mailcow_apps && !$app_links_processed[$i][$key]['hide']){
  50. $hide_mailcow_apps = false;
  51. }
  52. if (!empty($_SESSION['mailcow_cc_username'])){
  53. if ($app_links_processed[$i][$key]['user_link']) {
  54. $app_links_processed[$i][$key]['user_link'] = str_replace('%u', $_SESSION['mailcow_cc_username'], $app_links_processed[$i][$key]['user_link']);
  55. } else {
  56. $app_links_processed[$i][$key]['user_link'] = $app_links_processed[$i][$key]['link'];
  57. }
  58. }
  59. }
  60. }
  61. // Workaround to get text with <br> straight to twig.
  62. // Using "nl2br" doesn't work with Twig as it would escape everything by default.
  63. if (isset($UI_TEXTS["ui_footer"])) {
  64. $UI_TEXTS["ui_footer"] = nl2br($UI_TEXTS["ui_footer"]);
  65. }
  66. $globalVariables = [
  67. 'mailcow_hostname' => getenv('MAILCOW_HOSTNAME'),
  68. 'mailcow_locale' => @$_SESSION['mailcow_locale'],
  69. 'mailcow_cc_role' => @$_SESSION['mailcow_cc_role'],
  70. 'mailcow_cc_username' => @$_SESSION['mailcow_cc_username'],
  71. 'is_master' => preg_match('/y|yes/i', getenv('MASTER')),
  72. 'dual_login' => @$_SESSION['dual-login'],
  73. 'ui_texts' => $UI_TEXTS,
  74. 'css_path' => '/cache/'.basename($CSSPath),
  75. 'logo' => customize('get', 'main_logo'),
  76. 'logo_dark' => customize('get', 'main_logo_dark'),
  77. 'available_languages' => $AVAILABLE_LANGUAGES,
  78. 'lang' => $lang,
  79. 'skip_sogo' => (getenv('SKIP_SOGO') == 'y'),
  80. 'allow_admin_email_login' => (getenv('ALLOW_ADMIN_EMAIL_LOGIN') == 'n'),
  81. 'hide_mailcow_apps' => $hide_mailcow_apps,
  82. 'mailcow_apps' => $MAILCOW_APPS,
  83. 'mailcow_apps_processed' => $mailcow_apps_processed,
  84. 'app_links' => $app_links,
  85. 'app_links_processed' => $app_links_processed,
  86. 'is_root_uri' => (parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) == '/'),
  87. 'uri' => $_SERVER['REQUEST_URI'],
  88. ];
  89. foreach ($globalVariables as $globalVariableName => $globalVariableValue) {
  90. $twig->addGlobal($globalVariableName, $globalVariableValue);
  91. }