static-globals.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. // ===================================
  3. // Organizr Version
  4. $GLOBALS['installedVersion'] = '2.0.20';
  5. // ===================================
  6. // Quick php Version check
  7. $GLOBALS['minimumPHP'] = '7.1.3';
  8. if (!(version_compare(PHP_VERSION, $GLOBALS['minimumPHP']) >= 0)) {
  9. die('Organizr needs PHP Version: ' . $GLOBALS['minimumPHP'] . '<br/> You have PHP Version: ' . PHP_VERSION);
  10. }
  11. // Set GLOBALS from config file
  12. $GLOBALS['userConfigPath'] = dirname(__DIR__, 1) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
  13. $GLOBALS['defaultConfigPath'] = dirname(__DIR__, 1) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'default.php';
  14. $GLOBALS['currentTime'] = gmdate("Y-m-d\TH:i:s\Z");
  15. $GLOBALS['docker'] = (file_exists(dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'Docker.txt')) ? true : false;
  16. $GLOBALS['quickConfig'] = (file_exists($GLOBALS['userConfigPath'])) ? loadConfigOnce($GLOBALS['userConfigPath']) : null;
  17. // Quick function for plugins
  18. function pluginFiles($type)
  19. {
  20. $files = '';
  21. switch ($type) {
  22. case 'js':
  23. foreach (glob(dirname(__DIR__, 1) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . "*.js") as $filename) {
  24. $files .= '<script src="api/plugins/js/' . basename($filename) . '?v=' . $GLOBALS['installedVersion'] . '" defer="true"></script>';
  25. }
  26. break;
  27. case 'css':
  28. foreach (glob(dirname(__DIR__, 1) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . 'css' . DIRECTORY_SEPARATOR . "*.js") as $filename) {
  29. $files .= '<link href="api/plugins/css/' . basename($filename) . $GLOBALS['installedVersion'] . '" rel="stylesheet">';
  30. }
  31. break;
  32. default:
  33. break;
  34. }
  35. return $files;
  36. }
  37. function loadConfigOnce($path = null)
  38. {
  39. $path = ($path) ? $path : $GLOBALS['userConfigPath'];
  40. if (!is_file($path)) {
  41. return null;
  42. } else {
  43. return (array)call_user_func(function () use ($path) {
  44. return include($path);
  45. });
  46. }
  47. }
  48. function formKey()
  49. {
  50. if (isset($GLOBALS['quickConfig']['organizrAPI'])) {
  51. if ($GLOBALS['quickConfig']['organizrAPI'] !== '') {
  52. $hash = password_hash(substr($GLOBALS['quickConfig']['organizrHash'], 2, 10), PASSWORD_BCRYPT);
  53. return '<script>local("s","formKey","' . $hash . '");</script>';
  54. }
  55. }
  56. }
  57. function favIcons()
  58. {
  59. $favicon = '
  60. <link rel="apple-touch-icon" sizes="180x180" href="plugins/images/favicon/apple-touch-icon.png">
  61. <link rel="icon" type="image/png" sizes="32x32" href="plugins/images/favicon/favicon-32x32.png">
  62. <link rel="icon" type="image/png" sizes="16x16" href="plugins/images/favicon/favicon-16x16.png">
  63. <link rel="manifest" href="plugins/images/favicon/site.webmanifest">
  64. <link rel="mask-icon" href="plugins/images/favicon/safari-pinned-tab.svg" color="#5bbad5">
  65. <link rel="shortcut icon" href="plugins/images/favicon/favicon.ico">
  66. <meta name="msapplication-TileColor" content="#da532c">
  67. <meta name="msapplication-TileImage" content="plugins/images/favicon/mstile-144x144.png">
  68. <meta name="msapplication-config" content="plugins/images/favicon/browserconfig.xml">
  69. <meta name="theme-color" content="#ffffff">
  70. ';
  71. if (isset($GLOBALS['quickConfig']['favIcon'])) {
  72. if ($GLOBALS['quickConfig']['favIcon'] !== '') {
  73. $favicon = $GLOBALS['quickConfig']['favIcon'];
  74. }
  75. }
  76. return $favicon;
  77. }
  78. function languagePacks($encode = false)
  79. {
  80. $files = array();
  81. foreach (glob(dirname(__DIR__, 2) . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . 'langpack' . DIRECTORY_SEPARATOR . "*.json") as $filename) {
  82. if (strpos(basename($filename), '[') !== false) {
  83. $explode = explode('[', basename($filename));
  84. $files[] = array(
  85. 'filename' => basename($filename),
  86. 'code' => $explode[0],
  87. 'language' => matchBrackets(basename($filename))
  88. );
  89. }
  90. }
  91. usort($files, function ($a, $b) {
  92. return $a['language'] <=> $b['language'];
  93. });
  94. return ($encode) ? json_encode($files) : $files;
  95. }
  96. function matchBrackets($text, $brackets = 's')
  97. {
  98. switch ($brackets) {
  99. case 's':
  100. case 'square':
  101. $pattern = '#\[(.*?)\]#';
  102. break;
  103. case 'c':
  104. case 'curly':
  105. $pattern = '#\((.*?)\)#';
  106. break;
  107. default:
  108. return null;
  109. }
  110. preg_match($pattern, $text, $match);
  111. return $match[1];
  112. }