BuildUrl.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\Core\Helper;
  3. use \ModulesGarden\ProxmoxAddon\Core\ServiceLocator;
  4. use \ModulesGarden\ProxmoxAddon\Core\App\Controllers\Instances\Addon\Config;
  5. use function \ModulesGarden\ProxmoxAddon\Core\Helper\isAdmin;
  6. use function \ModulesGarden\ProxmoxAddon\Core\Helper\getModuleName;
  7. /**
  8. * Description of BuildUrl
  9. *
  10. * @author Rafał Ossowski <rafal.os@modulesgarden.com>
  11. */
  12. class BuildUrl
  13. {
  14. public static function getUrl($controller = null, $action = null, array $params = [], $isFullUrl = true)
  15. {
  16. if (isAdmin())
  17. {
  18. $url = 'addonmodules.php?module=' . getModuleName();
  19. }
  20. else
  21. {
  22. $url = 'index.php?m=' . getModuleName();
  23. }
  24. if ($controller)
  25. {
  26. $url .= '&mg-page=' . $controller;
  27. if ($action)
  28. {
  29. $url .= '&mg-action=' . $action;
  30. }
  31. if ($params)
  32. {
  33. $url .= '&' . http_build_query($params);
  34. }
  35. }
  36. if ($isFullUrl)
  37. {
  38. $baseUrl = self::baseUrl();
  39. $url = $baseUrl . $url;
  40. }
  41. return $url;
  42. }
  43. public static function getBaseUrl()
  44. {
  45. return self::baseUrl();
  46. }
  47. public static function getNewUrl($protocol = 'http', $host = 'modulesgarden.com', $params = [])
  48. {
  49. $url = "{$protocol}://{$host}";
  50. if ($params)
  51. {
  52. $url .= '?' . http_build_query($params);
  53. }
  54. return $url;
  55. }
  56. public static function getAssetsURL()
  57. {
  58. $addon = ServiceLocator::call(Config::class);
  59. $name = $addon->getConfigValue('systemName');
  60. $template = $addon->getConfigValue('template', 'default');
  61. if (isAdmin())
  62. {
  63. return '../modules/' . self::getType() . '/' . $name . '/templates/admin/assets';
  64. }
  65. return 'modules/' . self::getType() . '/' . $name . '/templates/client/' . $template . '/assets';
  66. }
  67. public static function getType()
  68. {
  69. if (strpos(trim(self::class, '\\'), 'ModulesGarden\Servers') === 0)
  70. {
  71. return 'servers';
  72. }
  73. return 'addons';
  74. }
  75. private static function baseUrl()
  76. {
  77. $host = $GLOBALS['CONFIG']['SystemURL'] ? $GLOBALS['CONFIG']['SystemURL'] : $_SERVER['HTTP_HOST'];
  78. $url = \parse_url( $host );
  79. $surfix = $_SERVER['PHP_SELF'];
  80. $surfix = explode('/', $surfix);
  81. array_pop($surfix);
  82. $surfix = implode('/', $surfix);
  83. return "{$url['scheme']}://{$url['host']}{$surfix}/";
  84. }
  85. }