src/Controller/LegacyController.php line 72

  1. <?php
  2. namespace App\Controller;
  3. use Empire\Core\Core;
  4. use Empire\Legacy\Menu;
  5. use Empire\Legacy\publicpage;
  6. use Symfony\Component\Asset\Packages;
  7. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Twig\Markup;
  13. /**
  14. * Class LegacyController
  15. * @package App\Controller
  16. *
  17. * Contains the controllers for the remaining public legacy pages.
  18. */
  19. class LegacyController extends BaseController {
  20. /**
  21. * @param Request $request
  22. * @return BinaryFileResponse|\Symfony\Component\HttpFoundation\RedirectResponse
  23. */
  24. #[Route("Public/Reference/showdocument.php")]
  25. public function legacy_doclib(Request $request) {
  26. $clearance = Core::user() !== null ? Core::user()->getClearance()->order : 0;
  27. $file = $request->query->get('file', null);
  28. if($file !== null) {
  29. return $this->redirect("/p/library/" . $file);
  30. } else {
  31. $this->addFlash('error', 'Missing Reference Number');
  32. return $this->redirect('/Public/Reference/doclibrary.php');
  33. }
  34. }
  35. /**
  36. * @param Request $request
  37. * @return Response
  38. */
  39. #[Route("gejs.php")]
  40. public function legacy_gejs(Request $request) {
  41. ini_set('html_errors', 0);
  42. $input = json_decode($request->getContent(), true);
  43. $gejs = new \Empire\Core\GEjs(isset($input['gejsOptions']) ? $input['gejsOptions'] : null);
  44. //var_dump($input, $gejs);
  45. $response = new Response();
  46. $response->setContent(json_encode($gejs->processSecureAjax(
  47. $input['gejsFunction'],
  48. isset($input['gejsValues']) ? $input['gejsValues'] : [],
  49. isset($input['gejsCid']) ? $input['gejsCid'] : null
  50. )));
  51. $response->headers->set('Content-Type', 'application/json');
  52. //Do not enable this for production!
  53. //$response->headers->set('Access-Control-Allow-Origin', '*');
  54. return $response;
  55. }
  56. /**
  57. * @param $path
  58. * @return object|Response
  59. */
  60. #[Route("/Public/{path}", requirements: ["path" =>".*"])]
  61. public function legacy_public(Packages $assets, $path) {
  62. if(preg_match('/\.php$/', $path) && file_exists(EMPIRE_APPLICATION . "/legacy/Public/" . $path)) {
  63. /* Try and get the path category, otherwise fallback to Main */
  64. $pageInfo = Menu::getPacaId(substr(Core::get('fullPage'), 1));
  65. $menu_category = isset($pageInfo->PACA_ID) ? $pageInfo->PACA_ID : 0;
  66. require_once EMPIRE_APPLICATION . '/legacy/globalfunctions.php';
  67. /* Load legacy content and return it */
  68. ob_start();
  69. require EMPIRE_APPLICATION . "/legacy/Public/" . $path;
  70. //Deal with GEjs
  71. if(isset($gejs))
  72. $gejs = array_unique(array_merge((array) $gejs, array("ajax")));
  73. else
  74. $gejs = ["ajax"];
  75. return $this->render('legacy.twig', [
  76. 'content' => ob_get_clean(),
  77. 'headerDiv' => new Markup(publicpage::displayHeaderDiv($menu_category), 'UTF-8'),
  78. 'title' => is_object($pageInfo) ? $pageInfo->SEPA_TITLE : '',
  79. 'gejs' => $gejs,
  80. ]);
  81. } elseif(file_exists(EMPIRE_APPLICATION . "/legacy/Public/" . $path)) {
  82. if(is_dir(EMPIRE_APPLICATION . "/legacy/Public/" . $path)) {
  83. return $this->redirect(Core::get('base_url') . "Public/" . $path . "index.php");
  84. }
  85. return new BinaryFileResponse(EMPIRE_APPLICATION . "/legacy/Public/" . $path);
  86. } else {
  87. return (new Response())->setStatusCode(404);
  88. }
  89. }
  90. /**
  91. * @param Packages $assets
  92. * @param $file
  93. * @return mixed
  94. */
  95. #[Route("/Members/{file}")]
  96. public function legacy_members(Packages $assets, $file) {
  97. $lc = Core::loginCheck();
  98. if($lc) return new Response($lc);
  99. if(preg_match('/\.php$/', $file) && file_exists(EMPIRE_APPLICATION . "/legacy/Members/" . $file)) {
  100. /* Try and get the path category, otherwise fallback to Main */
  101. $pageInfo = \Empire\Legacy\Menu::getPacaId(substr(Core::get('fullPage'), 1));
  102. require EMPIRE_APPLICATION . '/legacy/globalfunctions.php';
  103. /* Setup for the pages */
  104. $objUser = Core::user();
  105. $GLOBALS['gImagePath'] = $assets->getUrl('', 'gfx');
  106. $GLOBALS['gLegacyImagePath'] = Core::get('base_url');
  107. $GLOBALS['gJSPath'] = $assets->getUrl('', 'js');
  108. $GLOBALS['gCSSPath'] = $assets->getUrl('', 'css');
  109. $GLOBALS['gURLPath'] = Core::get('base_url');
  110. $flash = \Empire\Core\GEContext::getContext()->getFlash();
  111. /* Load legacy content and return it */
  112. ob_start();
  113. require EMPIRE_APPLICATION . "/legacy/Members/". $file;
  114. /** Potential Redirect */
  115. if(isset($redirect)) {
  116. return $this->redirect($redirect[0]);
  117. }
  118. //Deal with GEjs
  119. if(isset($gejs))
  120. $gejs = array_unique(array_merge((array) $gejs, array("ajax")));
  121. else
  122. $gejs = ["ajax"];
  123. //Deal with asset loading
  124. Core::set('secure',isset($isSecure) ? $isSecure : false);
  125. // Check for page security.
  126. return $this->render('legacy.twig', [
  127. 'content' => ob_get_clean(),
  128. 'headerDiv' => new Markup(publicpage::displayHeaderDiv(0), 'UTF-8'),
  129. 'title' => $pageInfo->SEPA_TITLE,
  130. 'gejs' => $gejs,
  131. ]);
  132. } elseif(file_exists(EMPIRE_APPLICATION . "/legacy/Members/" . $file)) {
  133. if(is_dir(EMPIRE_APPLICATION . "/legacy/Members/" . $file)) {
  134. return $this->redirect(Core::get('base_url') . "Members/" . $file . "index.php");
  135. }
  136. return new BinaryFileResponse(EMPIRE_APPLICATION . "/legacy/Members/" . $file);
  137. } else {
  138. return (new Response())->setStatusCode(404);
  139. }
  140. }
  141. }