src/Controller/Widget/WidgetController.php line 172

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Widget;
  3. use App\Event\ModeEvent;
  4. use App\Service\Internal\CmsService;
  5. use App\Service\Internal\HomePageService;
  6. use App\Service\Internal\JourneyService;
  7. use App\Service\Internal\UserService;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpKernel\KernelInterface;
  12. class WidgetController extends AbstractWidgetController
  13. {
  14. public function testWidget(
  15. Request $request,
  16. KernelInterface $kernel
  17. ): Response {
  18. if($kernel->getEnvironment() !== 'dev'){
  19. die;
  20. }
  21. $this->initServices($request);
  22. //TODO: Temporaire, à supprimer quand la conf par réseau et environnement sera externalisée
  23. $baseUrl = $_SERVER['REQUEST_SCHEME']. '://' . $_SERVER['SERVER_NAME'];
  24. $journeys = null;
  25. $directions = null;
  26. $stopPoints = null;
  27. $itineraryOptions = $this->networkService->getItineraryOptions();
  28. $userPreferences = [];
  29. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  30. $userPreferences = $this->preferenceService->getUserPreferences();
  31. }
  32. $preferences = $this->userPreferencesNormalizer->normalize($userPreferences, ['itineraryOptions' => $itineraryOptions]);
  33. $modeEvent = new ModeEvent();
  34. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  35. $modes = $modeEvent->getDefaultModes();
  36. $modesLayout = $modeEvent->getLayoutModes();
  37. $activeWidgets = [
  38. 'journey' => 1,
  39. 'schedule' => 0,
  40. 'traffic' => 0,
  41. 'linesAndPoi' => 0,
  42. ];
  43. $activeTab = 'journey';
  44. return $this->render('pages/widget/widget-test.html.twig', array(
  45. 'networkId' => $this->networkId,
  46. 'directions' => $directions,
  47. 'stopPoints' => $stopPoints,
  48. 'journeys' => $journeys,
  49. 'modes' => $modes,
  50. 'preferences' => $preferences,
  51. 'baseUrl' => $baseUrl,
  52. 'activeWidgets' => $activeWidgets,
  53. 'activeTab' => $activeTab,
  54. 'modesLayout' => $modesLayout
  55. ));
  56. }
  57. public function testWidgetMulti(
  58. Request $request,
  59. KernelInterface $kernel
  60. ): Response {
  61. if($kernel->getEnvironment() !== 'dev'){
  62. die;
  63. }
  64. $this->initServices($request);
  65. //TODO: Temporaire, à supprimer quand la conf par réseau et environnement sera externalisée
  66. $baseUrl = $_SERVER['REQUEST_SCHEME']. '://' . $_SERVER['SERVER_NAME'];
  67. $journeys = null;
  68. $directions = null;
  69. $stopPoints = null;
  70. $itineraryOptions = $this->networkService->getItineraryOptions();
  71. $userPreferences = [];
  72. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  73. $userPreferences = $this->preferenceService->getUserPreferences();
  74. }
  75. $preferences = $this->userPreferencesNormalizer->normalize($userPreferences, ['itineraryOptions' => $itineraryOptions]);
  76. $modeEvent = new ModeEvent();
  77. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  78. $modes = $modeEvent->getDefaultModes();
  79. $modesLayout = $modeEvent->getLayoutModes();
  80. $activeWidgets = [
  81. 'journey' => 1,
  82. 'schedule' => 0,
  83. 'traffic' => 0,
  84. 'linesAndPoi' => 0,
  85. ];
  86. $activeTab = 'journey';
  87. return $this->render('pages/widget/widget-test-multi.html.twig', array(
  88. 'networkId' => $this->networkId,
  89. 'directions' => $directions,
  90. 'stopPoints' => $stopPoints,
  91. 'journeys' => $journeys,
  92. 'modes' => $modes,
  93. 'preferences' => $preferences,
  94. 'baseUrl' => $baseUrl,
  95. 'activeWidgets' => $activeWidgets,
  96. 'activeTab' => $activeTab,
  97. 'modesLayout' => $modesLayout
  98. ));
  99. }
  100. public function widgetMultiRedirection(): Response
  101. {
  102. return $this->render('pages/widget/widget-multi-with-redirection.html.twig');
  103. }
  104. public function testWidgetRedirection(
  105. Request $request,
  106. KernelInterface $kernel
  107. ): Response {
  108. if($kernel->getEnvironment() !== 'dev'){
  109. die;
  110. }
  111. $this->initServices($request);
  112. //TODO: Temporaire, à supprimer quand la conf par réseau et environnement sera externalisée
  113. $baseUrl = $_SERVER['REQUEST_SCHEME']. '://' . $_SERVER['SERVER_NAME'];
  114. $journeys = null;
  115. $directions = null;
  116. $stopPoints = null;
  117. $itineraryOptions = $this->networkService->getItineraryOptions();
  118. $userPreferences = [];
  119. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  120. $userPreferences = $this->preferenceService->getUserPreferences();
  121. }
  122. $preferences = $this->userPreferencesNormalizer->normalize($userPreferences, ['itineraryOptions' => $itineraryOptions]);
  123. $modeEvent = new ModeEvent();
  124. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  125. $modes = $modeEvent->getDefaultModes();
  126. $modesLayout = $modeEvent->getLayoutModes();
  127. $activeWidgets = [
  128. 'journey' => 1,
  129. 'schedule' => 0,
  130. 'traffic' => 0,
  131. 'linesAndPoi' => 0,
  132. ];
  133. $activeTab = 'journey';
  134. return $this->render('pages/widget/widget-test-redirection.html.twig', array(
  135. 'networkId' => $this->networkId,
  136. 'directions' => $directions,
  137. 'stopPoints' => $stopPoints,
  138. 'journeys' => $journeys,
  139. 'modes' => $modes,
  140. 'preferences' => $preferences,
  141. 'baseUrl' => $baseUrl,
  142. 'activeWidgets' => $activeWidgets,
  143. 'activeTab' => $activeTab,
  144. 'modesLayout' => $modesLayout
  145. ));
  146. }
  147. public function index(Request $request): Response
  148. {
  149. $this->initServices($request);
  150. $product = $request->get('product');
  151. $this->baseUrl = strtok($request->getUri(), '?');
  152. if (!isset($product)) {
  153. return $this->redirectToRoute('widget.page.index', ['product' => 'place-journey']);
  154. }
  155. $istoken = 'INSTANTSYSTEMTEST';
  156. $isInternal = $request->get('internal');
  157. $target = $request->get('target');
  158. $isRedirection = $request->get('redirection');
  159. if ($isRedirection && $isInternal && empty($target)) {
  160. $isRedirection = 'false';
  161. }
  162. $src = $this->baseUrl . '/' . $product . '?redirection=' . $isRedirection . '&internal=' . $isInternal . '&token=' . $istoken ;
  163. if ('traffic' === $product) {
  164. $fullList = $request->get('fullList', false);
  165. $src .= '&fullList=' . $fullList;
  166. }
  167. if ('full' === $product) {
  168. $except = $request->get('except');
  169. if (!empty($except)) {
  170. $src .= '&except=' . $except;
  171. }
  172. }
  173. if (!empty($target)) {
  174. $src .= '&target=' . $target;
  175. }
  176. $isPartner = $request->get('partner');
  177. if (!empty($isPartner)) {
  178. $src .= '&partner=' . $isPartner;
  179. }
  180. switch ($product) {
  181. case 'place':
  182. case 'place-journey':
  183. case 'place-journey-map':
  184. $wrapperSuffix = "Journey";
  185. break;
  186. case 'schedule':
  187. case 'schedule-map':
  188. $wrapperSuffix = "Schedule";
  189. break;
  190. case 'traffic':
  191. $wrapperSuffix = "Traffic";
  192. break;
  193. case 'full':
  194. $wrapperSuffix = "Full";
  195. break;
  196. case 'journey-booking':
  197. $wrapperSuffix = "JourneyBooking";
  198. break;
  199. default:
  200. $wrapperSuffix = "Journey";
  201. }
  202. return $this->render('pages/widget/script.html.twig', [
  203. 'src' => $src,
  204. 'product' => $product,
  205. 'wrapperSuffix' => $wrapperSuffix,
  206. 'isRedirection' => !empty($isRedirection) ? $isRedirection : '',
  207. 'isInternal' => !empty($isInternal) ? $isInternal : '',
  208. 'istoken' => !empty($istoken) ? $istoken : '',
  209. ]);
  210. }
  211. public function place(Request $request): Response
  212. {
  213. $this->initServices($request);
  214. $isRedirection = $request->get('redirection');
  215. $isInternal = $request->get('internal');
  216. $target = $request->get('target', false);
  217. $isPartner = $request->get('partner', false);
  218. $isfid = $request->get('isfid');
  219. $isfv = $request->get('isfv');
  220. $istid = $request->get('istid');
  221. $istv = $request->get('istv');
  222. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  223. $this->saveXHeaders($request, $widgetCode);
  224. if (empty($request->get('token'))) {
  225. throw new InvalidArgumentException("The token is missing");
  226. }
  227. $modeEvent = new ModeEvent();
  228. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  229. $modes = $modeEvent->getDefaultModes();
  230. $modesLayout = $modeEvent->getLayoutModes();
  231. $nbDayFuture = $this->networkService->getNbDayFuture();
  232. $maxDate = new \DateTime('now');
  233. $maxDate = $maxDate->add(new \DateInterval('P'.$nbDayFuture.'D'));
  234. $itineraryOptions = $this->networkService->getItineraryOptions();
  235. $userPreferences = [];
  236. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  237. $userPreferences = $this->preferenceService->getUserPreferences();
  238. }
  239. $preferences = $this->userPreferencesNormalizer->normalize($userPreferences, ['itineraryOptions' => $itineraryOptions]);
  240. $configTemplate = $this->render("includes/common/js-config.html.twig", [
  241. 'isWidget' => true,
  242. 'requestReferer' => $request->headers->get('referer'),
  243. 'default_latlon' => $this->networkService->getLatLon(),
  244. 'network_lat' => $this->networkService->getLat(),
  245. 'network_lon' => $this->networkService->getLon(),
  246. 'external' => $this->networkService->isExternalNetwork(),
  247. 'maxDate' => $maxDate->format('Y-d-m'),
  248. 'modes' => $modes,
  249. 'preferences' => $preferences,
  250. 'baseUrl' => $this->baseUrl,
  251. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  252. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  253. 'isPartner' => !empty($isPartner) && $isPartner === 'true' ? true : false,
  254. 'widgetTarget' => !empty($target) ? $target : '',
  255. 'isfid' => !empty($isfid) ? $isfid : '',
  256. 'isfv' => !empty($isfv) ? $isfv : '',
  257. 'istid' => !empty($istid) ? $istid : '',
  258. 'istv' => !empty($istv) ? $istv : ''
  259. ])->getContent();
  260. $activeWidgets = [
  261. 'journey' => 1,
  262. 'schedule' => 0,
  263. 'traffic' => 0,
  264. 'linesAndPoi' => 0,
  265. ];
  266. $activeTab = 'journey';
  267. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", [
  268. 'isWidget' => true,
  269. 'widgetCode' => $widgetCode,
  270. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  271. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  272. 'modesLayout' => $modesLayout,
  273. 'modes' => $modes,
  274. 'preferences' => $preferences,
  275. 'departurePlace' => [
  276. 'id' => $isfid,
  277. 'value' => $isfv,
  278. 'latlon' => '',
  279. 'latitude' => '',
  280. 'longitude' => ''
  281. ],
  282. 'arrivalPlace' => [
  283. 'id' => $istid,
  284. 'value' => $istv,
  285. 'latlon' => '',
  286. 'latitude' => '',
  287. 'longitude' => ''
  288. ],
  289. 'activeWidgets' => $activeWidgets,
  290. 'activeTab' => $activeTab
  291. ])->getContent();
  292. $widgetScript = $this->getWidgetScript($request);
  293. $widgetCss = $this->getWidgetCss($request);
  294. $rtlCss = $this->getRtlCss();
  295. $hasMap = $this->hasMap($request);
  296. return $this->render('modules/widget.js.twig', [
  297. 'baseUrl' => $this->baseUrl,
  298. 'newtorkId' => $this->networkId,
  299. 'config' => $configTemplate,
  300. 'wrapperSuffix' => 'Journey',
  301. 'widgetTemplate' => $widgetTemplate,
  302. 'widgetScript' => $widgetScript,
  303. 'widgetCss' => $widgetCss,
  304. 'rtlCss' => $rtlCss,
  305. 'hasMap' => $hasMap
  306. ]);
  307. }
  308. public function placeJourney(Request $request): Response
  309. {
  310. $this->initServices($request);
  311. $isRedirection = $request->get('redirection');
  312. $isInternal = $request->get('internal');
  313. $target = $request->get('target');
  314. $isPartner = $request->get('partner');
  315. $isfid = $request->get('isfid');
  316. $isfv = $request->get('isfv');
  317. $istid = $request->get('istid');
  318. $istv = $request->get('istv');
  319. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  320. $this->saveXHeaders($request, $widgetCode);
  321. if (empty($request->get('token'))) {
  322. throw new InvalidArgumentException("The token is missing");
  323. }
  324. $modeEvent = new ModeEvent();
  325. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  326. $modes = $modeEvent->getDefaultModes();
  327. $modesLayout = $modeEvent->getLayoutModes();
  328. $nbDayFuture = $this->networkService->getNbDayFuture();
  329. $maxDate = new \DateTime('now');
  330. $maxDate = $maxDate->add(new \DateInterval('P'.$nbDayFuture.'D'));
  331. $itineraryOptions = $this->networkService->getItineraryOptions();
  332. $userPreferences = [];
  333. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  334. $userPreferences = $this->preferenceService->getUserPreferences();
  335. }
  336. $preferences = $this->userPreferencesNormalizer->normalize($userPreferences, ['itineraryOptions' => $itineraryOptions]);
  337. $configTemplate = $this->render("includes/common/js-config.html.twig", [
  338. 'isWidget' => true,
  339. 'requestReferer' => $request->headers->get('referer'),
  340. 'default_latlon' => $this->networkService->getLatLon(),
  341. 'external' => $this->networkService->isExternalNetwork(),
  342. 'network_lat' => $this->networkService->getLat(),
  343. 'network_lon' => $this->networkService->getLon(),
  344. 'maxDate' => $maxDate->format('Y-d-m'),
  345. 'modes' => $modes,
  346. 'preferences' => $preferences,
  347. 'baseUrl' => $this->baseUrl,
  348. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  349. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  350. 'widgetTarget' => !empty($target) ? $target : '',
  351. 'isPartner' => !empty($isPartner) && $isPartner === 'true' ? true : false,
  352. 'isfid' => !empty($isfid) ? $isfid : '',
  353. 'isfv' => !empty($isfv) ? $isfv : '',
  354. 'istid' => !empty($istid) ? $istid : '',
  355. 'istv' => !empty($istv) ? $istv : ''
  356. ])->getContent();
  357. $activeWidgets = [
  358. 'journey' => 1,
  359. 'schedule' => 0,
  360. 'traffic' => 0,
  361. 'linesAndPoi' => 0,
  362. ];
  363. $activeTab = 'journey';
  364. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", [
  365. 'isWidget' => true,
  366. 'widgetCode' => $widgetCode,
  367. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  368. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  369. 'modes' => $modes,
  370. 'modesLayout' => $modesLayout,
  371. 'preferences' => $preferences,
  372. 'departurePlace' => [
  373. 'id' => $isfid,
  374. 'value' => $isfv,
  375. 'latlon' => '',
  376. 'latitude' => '',
  377. 'longitude' => ''
  378. ],
  379. 'arrivalPlace' => [
  380. 'id' => $istid,
  381. 'value' => $istv,
  382. 'latlon' => '',
  383. 'latitude' => '',
  384. 'longitude' => ''
  385. ],
  386. 'activeWidgets' => $activeWidgets,
  387. 'activeTab' => $activeTab
  388. ])->getContent();
  389. $widgetScript = $this->getWidgetScript($request);
  390. $widgetCss = $this->getWidgetCss($request);
  391. $rtlCss = $this->getRtlCss();
  392. $hasMap = $this->hasMap($request);
  393. return $this->render('modules/widget.js.twig', [
  394. 'baseUrl' => $this->baseUrl,
  395. 'newtorkId' => $this->networkId,
  396. 'wrapperSuffix' => 'Journey',
  397. 'config' => $configTemplate,
  398. 'widgetTemplate' => $widgetTemplate,
  399. 'widgetScript' => $widgetScript,
  400. 'widgetCss' => $widgetCss,
  401. 'rtlCss' => $rtlCss,
  402. 'hasMap' => $hasMap
  403. ]);
  404. }
  405. public function placeJourneyMap(Request $request): Response
  406. {
  407. $this->initServices($request);
  408. $isRedirection = $request->get('redirection');
  409. $isInternal = $request->get('internal');
  410. $target = $request->get('target');
  411. $isPartner = $request->get('partner');
  412. $isfid = $request->get('isfid');
  413. $isfv = $request->get('isfv');
  414. $istid = $request->get('istid');
  415. $istv = $request->get('istv');
  416. $isflat = $request->get('isflat');
  417. $isflon = $request->get('isflon');
  418. $istlat = $request->get('istlat');
  419. $istlon = $request->get('istlon');
  420. $dt = $request->get('dt');
  421. $at = $request->get('at');
  422. $m = (null !== $request->get('m')) ? explode('-', strtoupper($request->get('m'))) : null;
  423. $df = $request->get('df');
  424. $ws = $request->get('ws');
  425. $bs = $request->get('bs');
  426. $a = $request->get('a');
  427. $ad = $request->get('ad');
  428. $datetimeOption = JourneyService::DATETIME_SELECT_NOW;
  429. $dateValue = '';
  430. $hourValue = '';
  431. if (!empty($dt)) {
  432. $dt = new \DateTime(str_replace(' ', '+' , $dt));
  433. $datetimeOption = JourneyService::DATETIME_SELECT_LEAVE_AT;
  434. $dateValue = $dt->format('Y-m-d');
  435. $hourValue = $dt->format('H:i');
  436. }
  437. if (!empty($at)) {
  438. $dt = new \DateTime(str_replace(' ', '+' , $at));
  439. $datetimeOption = JourneyService::DATETIME_SELECT_ARRIVE_AT;
  440. $dateValue = $dt->format('Y-m-d');
  441. $hourValue = $dt->format('H:i');
  442. }
  443. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  444. $this->saveXHeaders($request, $widgetCode);
  445. if (empty($request->get('token'))) {
  446. throw new InvalidArgumentException("The token is missing");
  447. }
  448. $speedProfiles = [0 => 'SLOW', 1 => 'NORMAL', 2 => 'FAST'];
  449. $itineraryOptions = $this->networkService->getItineraryOptions();
  450. $userPreferences = [];
  451. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  452. $userPreferences = $this->preferenceService->getUserPreferences();
  453. }
  454. $preferences = $this->userPreferencesNormalizer->normalize($userPreferences, ['itineraryOptions' => $itineraryOptions]);
  455. $excludedModesPreferences = !empty($preferences['tripPlanner']['excludedModes']) ? $preferences['tripPlanner']['excludedModes'] : [];
  456. $modeEvent = new ModeEvent($m, $excludedModesPreferences);
  457. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  458. $modes = $modeEvent->getDefaultModes();
  459. $modesLayout = $modeEvent->getLayoutModes();
  460. $nbDayFuture = $this->networkService->getNbDayFuture();
  461. $maxDate = new \DateTime('now');
  462. $maxDate = $maxDate->add(new \DateInterval('P'.$nbDayFuture.'D'));
  463. $preferences['tripPlanner']['excludedModes'] = $modeEvent->getExcludedModes();
  464. $preferences['tripPlanner']['showAccessibility'] = !empty($df) ? filter_var($df, FILTER_VALIDATE_BOOLEAN) : $preferences['tripPlanner']['showAccessibility'];
  465. $preferences['tripPlanner']['wheelchairAccessible'] = !empty($a) ? filter_var($a, FILTER_VALIDATE_BOOLEAN) : $preferences['tripPlanner']['wheelchairAccessible'];
  466. $preferences['tripPlanner']['walkProfile'] = !empty($ws) ? $speedProfiles[$ws] : $preferences['tripPlanner']['walkProfile'];
  467. $preferences['tripPlanner']['bikeProfile'] = !empty($bs) ? $speedProfiles[$bs] : $preferences['tripPlanner']['bikeProfile'];
  468. $configParameters = [
  469. 'isWidget' => true,
  470. 'requestReferer' => $request->headers->get('referer'),
  471. 'widgetType' => 'journey',
  472. 'default_latlon' => $this->networkService->getLatLon(),
  473. 'network_lat' => $this->networkService->getLat(),
  474. 'network_lon' => $this->networkService->getLon(),
  475. 'external' => $this->networkService->isExternalNetwork(),
  476. 'maxDate' => $maxDate->format('Y-d-m'),
  477. 'modes' => $modes,
  478. 'preferences' => $preferences,
  479. 'baseUrl' => $this->baseUrl,
  480. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  481. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  482. 'widgetTarget' => !empty($target) ? $target : '',
  483. 'isPartner' => !empty($isPartner) && $isPartner === 'true' ? true : false,
  484. 'isfid' => !empty($isfid) ? $isfid : '',
  485. 'isfv' => !empty($isfv) ? $isfv : '',
  486. 'istid' => !empty($istid) ? $istid : '',
  487. 'istv' => !empty($istv) ? $istv : '',
  488. 'isflat' => !empty($isflat) ? $isflat : '',
  489. 'isflon' => !empty($isflon) ? $isflon : '',
  490. 'istlat' => !empty($istlat) ? $istlat : '',
  491. 'istlon' => !empty($istlon) ? $istlon : '',
  492. ];
  493. $configParameters = array_merge($configParameters, $this->getCustomMapParameters($request));
  494. $configTemplate = $this->render("includes/common/js-config.html.twig", $configParameters)->getContent();
  495. $activeWidgets = [
  496. 'journey' => 1,
  497. 'schedule' => 0,
  498. 'traffic' => 0,
  499. 'linesAndPoi' => 0,
  500. ];
  501. $activeTab = 'journey';
  502. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", [
  503. 'isWidget' => true,
  504. 'widgetCode' => $widgetCode,
  505. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  506. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  507. 'modes' => $modes,
  508. 'modesLayout' => $modesLayout,
  509. 'preferences' => $preferences,
  510. 'departurePlace' => [
  511. 'id' => $isfid,
  512. 'value' => $isfv,
  513. 'latlon' => '',
  514. 'latitude' => '',
  515. 'longitude' => ''
  516. ],
  517. 'arrivalPlace' => [
  518. 'id' => $istid,
  519. 'value' => $istv,
  520. 'latlon' => '',
  521. 'latitude' => '',
  522. 'longitude' => ''
  523. ],
  524. 'activeWidgets' => $activeWidgets,
  525. 'activeTab' => $activeTab,
  526. 'datetimeOption'=> $datetimeOption,
  527. 'dateValue' => $dateValue,
  528. 'hourValue' => $hourValue
  529. ])->getContent();
  530. $widgetScript = $this->getWidgetScript($request);
  531. $widgetCss = $this->getWidgetCss($request);
  532. $rtlCss = $this->getRtlCss();
  533. $hasMap = $this->hasMap($request);
  534. return $this->render('modules/widget.js.twig', [
  535. 'baseUrl' => $this->baseUrl,
  536. 'newtorkId' => $this->networkId,
  537. 'wrapperSuffix' => 'Journey',
  538. 'config' => $configTemplate,
  539. 'widgetTemplate' => $widgetTemplate,
  540. 'widgetScript' => $widgetScript,
  541. 'widgetCss' => $widgetCss,
  542. 'rtlCss' => $rtlCss,
  543. 'isRedirection' => isset($isRedirection) ? $isRedirection : false,
  544. 'hasMap' => $hasMap
  545. ]);
  546. }
  547. public function login(Request $request, UserService $userService): Response
  548. {
  549. $parameters = [];
  550. $this->initServices($request);
  551. $isRedirection = $request->get('redirection');;
  552. $isInternal = $request->get('internal');
  553. $target = $request->get('target');
  554. $isPartner = $request->get('partner');
  555. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  556. $this->saveXHeaders($request, $widgetCode);
  557. $configTemplate = $this->render("includes/common/js-config.html.twig", [
  558. 'isWidget' => true,
  559. 'baseUrl' => $this->baseUrl,
  560. 'isRedirection' => !empty($isRedirection) ? $isRedirection : 'false',
  561. 'isInternal' => !empty($isInternal) ? $isInternal : 'false',
  562. 'widgetTarget' => !empty($target) ? $target : '',
  563. 'isPartner' => !empty($isPartner) ? $isPartner : 'false'
  564. ])->getContent();
  565. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  566. $user = $userService->myAccount();
  567. if (isset($user->body) && isset($user->status) && $user->status === 200) {
  568. $parameters['userData'] = $user->body;
  569. }
  570. } else {
  571. $user = [];
  572. }
  573. $activeWidgets = [
  574. 'login' => 1,
  575. 'journey' => 0,
  576. 'schedule' => 0,
  577. 'traffic' => 0,
  578. 'linesAndPoi' => 0,
  579. ];
  580. $parameters['isWidget'] = true;
  581. $parameters['isRedirection'] = !empty($isRedirection) ? $isRedirection : 'false';
  582. $parameters['isInternal'] = !empty($isInternal) ? $isInternal : 'false';
  583. $parameters['user'] = $user;
  584. $parameters['activeWidgets'] = $activeWidgets;
  585. // Account menu
  586. $parameters['account_section_homepage'] = $this->getParameter('account.section_activation.homepage');
  587. $parameters['account_module_common'] = $this->getParameter('account.module_activation.common');
  588. $parameters['account_module_sim'] = $this->getParameter('account.module_activation.sim');
  589. $parameters['account_module_ticketing'] = $this->getParameter('account.module_activation.ticketing');
  590. $parameters['account_section_informations'] = $this->getParameter('account.section_activation.informations');
  591. $parameters['account_section_addresses'] = $this->getParameter('account.section_activation.addresses');
  592. $parameters['account_right_UpdateMail'] = $this->getParameter('account.right_update_mail');
  593. $parameters['account_right_addAddress'] = $this->getParameter('account.right_add_address');
  594. $parameters['account_section_favorites'] = $this->getParameter('account.section_activation.favorites');
  595. $parameters['account_section_trip'] = $this->getParameter('account.section_activation.trip');
  596. $parameters['account_section_beneficiaries'] = $this->getParameter('account.section_activation.beneficiaries');
  597. $parameters['account_section_orders'] = $this->getParameter('account.section_activation.orders');
  598. $parameters['account_section_cards'] = $this->getParameter('account.section_activation.cards');
  599. $parameters['account_section_bank_account'] = $this->getParameter('account.section_activation.bank_account');
  600. $parameters['account_section_mtickets'] = $this->getParameter('account.section_activation.mtickets');
  601. $parameters['account_section_etickets'] = $this->getParameter('account.section_activation.etickets');
  602. $parameters['account_section_fines'] = $this->getParameter('account.section_activation.fines');
  603. $parameters['account_journey_booking'] = $this->getParameter('account.journey_booking');
  604. $parameters['account_section_profiles'] = $this->getParameter('account.section_activation.profiles');
  605. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", $parameters)->getContent();
  606. $widgetScript = $this->getWidgetScript($request);
  607. $widgetCss = $this->getWidgetCss($request);
  608. $rtlCss = $this->getRtlCss();
  609. $hasMap = $this->hasMap($request);
  610. return $this->render('modules/widget.js.twig', [
  611. 'baseUrl' => $this->baseUrl,
  612. 'parameters' => $parameters,
  613. 'wrapperSuffix' => 'Login',
  614. 'newtorkId' => $this->networkId,
  615. 'config' => $configTemplate,
  616. 'widgetTemplate' => $widgetTemplate,
  617. 'widgetScript' => $widgetScript,
  618. 'widgetCss' => $widgetCss,
  619. 'rtlCss' => $rtlCss,
  620. 'hasMap' => $hasMap
  621. ]);
  622. }
  623. public function journeyBooking(Request $request, UserService $userService, HomePageService $homePageService): Response
  624. {
  625. $parameters = [];
  626. $this->initServices($request);
  627. $isRedirection = $request->get('redirection');;
  628. $isInternal = $request->get('internal');
  629. $target = $request->get('target');
  630. $isPartner = $request->get('partner');
  631. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  632. $this->saveXHeaders($request, $widgetCode);
  633. $configTemplate = $this->render("includes/common/js-config.html.twig", [
  634. 'isWidget' => true,
  635. 'baseUrl' => $this->baseUrl,
  636. 'isRedirection' => !empty($isRedirection) ? $isRedirection : 'false',
  637. 'isInternal' => !empty($isInternal) ? $isInternal : 'false',
  638. 'widgetTarget' => !empty($target) ? $target : '',
  639. 'isPartner' => !empty($isPartner) ? $isPartner : 'false'
  640. ])->getContent();
  641. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  642. $user = $userService->myAccount();
  643. if (isset($user->body) && isset($user->status) && $user->status === 200) {
  644. $parameters['userData'] = $user->body;
  645. }
  646. } else {
  647. $user = [];
  648. }
  649. $parameters['isWidget'] = true;
  650. $parameters['displayDisruptionWithAjax'] = true;
  651. $parameters['isRedirection'] = !empty($isRedirection) ? $isRedirection : 'false';
  652. $parameters['isInternal'] = !empty($isInternal) ? $isInternal : 'false';
  653. $parameters['user'] = $user;
  654. $wsResponse = $userService->myAccount();
  655. $user = null;
  656. if (!$wsResponse->isError()) {
  657. $user = $wsResponse->body;
  658. $parameters['user'] = $user;
  659. }
  660. $session = $request->getSession();
  661. $session->set('context', 'SIM');
  662. $session->set('php_session_id', $request->cookies->get('PHPSESSID'));
  663. $parameters = $homePageService->getRenderParameters([], $parameters);
  664. $activeWidgets = [
  665. 'journeyBooking' => 1,
  666. 'journey' => 0,
  667. 'schedule' => 0,
  668. 'traffic' => 0,
  669. 'linesAndPoi' => 0,
  670. ];
  671. if (!$this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  672. $currentUrl = $this->generateUrl('account.sim.booking', array());
  673. $activeWidgets = [
  674. 'loginForm' => 1,
  675. 'journey' => 0,
  676. 'schedule' => 0,
  677. 'traffic' => 0,
  678. 'linesAndPoi' => 0,
  679. ];
  680. $parameters['redirectionUrl'] = $currentUrl;
  681. $parameters['fromReferer'] = true;
  682. //return $this->redirectToRoute('user_login', ['isWidget' => true,'isModal' => false, 'redirectionUrl' => $currentUrl]);
  683. }
  684. $parameters['activeWidgets'] = $activeWidgets;
  685. $parameters['isXmlHttpMode'] = true;
  686. $parameters['displayFavorites'] = true;
  687. $parameters['php_session_id'] = $session->get('php_session_id');
  688. $currentDate = date('Y-m-d');
  689. $parameters['currentDate'] = $currentDate;
  690. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", $parameters)->getContent();
  691. $widgetScript = $this->getWidgetScript($request);
  692. $widgetCss = $this->getWidgetCss($request);
  693. $rtlCss = $this->getRtlCss();
  694. $hasMap = $this->hasMap($request);
  695. return $this->render('modules/widget.js.twig', [
  696. 'baseUrl' => $this->baseUrl,
  697. 'parameters' => $parameters,
  698. 'wrapperSuffix' => 'JourneyBooking',
  699. 'newtorkId' => $this->networkId,
  700. 'config' => $configTemplate,
  701. 'widgetTemplate' => $widgetTemplate,
  702. 'widgetScript' => $widgetScript,
  703. 'widgetCss' => $widgetCss,
  704. 'rtlCss' => $rtlCss,
  705. 'hasMap' => $hasMap
  706. ]);
  707. }
  708. public function schedule(Request $request)
  709. {
  710. $this->initServices($request);
  711. $isRedirection = $request->get('redirection');
  712. $isInternal = $request->get('internal');
  713. $target = $request->get('target');
  714. $isPartner = $request->get('partner');
  715. $islid = $request->get('islid');
  716. $isdir = $request->get('isdir');
  717. $issaid = $request->get('issaid');
  718. $issav = $request->get('issav');
  719. $islocid = $request->get('islocid');
  720. $isSubNetworks = $request->get('issubnetworks');
  721. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  722. $this->saveXHeaders($request, $widgetCode);
  723. if (empty($request->get('token'))) {
  724. throw new InvalidArgumentException("The token is missing");
  725. }
  726. $modeEvent = new ModeEvent();
  727. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  728. $modes = $modeEvent->getDefaultModes();
  729. $modesLayout = $modeEvent->getLayoutModes();
  730. $nbDayFuture = $this->networkService->getNbDayFuture();
  731. $maxDate = new \DateTime('now');
  732. $maxDate = $maxDate->add(new \DateInterval('P'.$nbDayFuture.'D'));
  733. $configTemplate = $this->render("includes/common/js-config.html.twig", [
  734. 'isWidget' => true,
  735. 'requestReferer' => $request->headers->get('referer'),
  736. 'default_latlon' => $this->networkService->getLatLon(),
  737. 'network_lat' => $this->networkService->getLat(),
  738. 'network_lon' => $this->networkService->getLon(),
  739. 'external' => $this->networkService->isExternalNetwork(),
  740. 'maxDate' => $maxDate->format('Y-d-m'),
  741. 'modes' => $modes,
  742. 'baseUrl' => $this->baseUrl,
  743. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  744. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  745. 'widgetTarget' => !empty($target) ? $target : '',
  746. 'isPartner' => !empty($isPartner) && $isPartner === 'true' ? true : false,
  747. 'islid' => !empty($islid) ? $islid : '',
  748. 'isdir' => !empty($isdir) ? $isdir : '',
  749. 'issaid' => !empty($issaid) ? $issaid : '',
  750. 'issav' => !empty($issav) ? $issav : '',
  751. 'islocid' => !empty($islocid) ? $islocid : '',
  752. 'issubnetworks' => !empty($isSubNetworks) ? $isSubNetworks : ''
  753. ])->getContent();
  754. $activeWidgets = [
  755. 'journey' => 0,
  756. 'schedule' => 1,
  757. 'traffic' => 0,
  758. 'linesAndPoi' => 0,
  759. ];
  760. $activeTab = 'schedule';
  761. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", [
  762. 'isWidget' => true,
  763. 'widgetCode' => $widgetCode,
  764. 'default_latlon' => $this->networkService->getLatLon(),
  765. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  766. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  767. 'modes' => $modes,
  768. 'modesLayout' => $modesLayout,
  769. 'activeWidgets' => $activeWidgets,
  770. 'activeTab' => $activeTab
  771. ])->getContent();
  772. $widgetScript = $this->getWidgetScript($request);
  773. $widgetCss = $this->getWidgetCss($request);
  774. $rtlCss = $this->getRtlCss();
  775. $hasMap = $this->hasMap($request);
  776. return $this->render('modules/widget.js.twig', [
  777. 'baseUrl' => $this->baseUrl,
  778. 'newtorkId' => $this->networkId,
  779. 'wrapperSuffix' => 'Schedule',
  780. 'config' => $configTemplate,
  781. 'widgetTemplate' => $widgetTemplate,
  782. 'widgetScript' => $widgetScript,
  783. 'widgetCss' => $widgetCss,
  784. 'rtlCss' => $rtlCss,
  785. 'hasMap' => $hasMap
  786. ]);
  787. }
  788. public function traffic(Request $request, HomePageService $homePageService): Response
  789. {
  790. $this->initServices($request);
  791. $isRedirection = $request->get('redirection');;
  792. $isInternal = $request->get('internal');
  793. $target = $request->get('target');
  794. $isPartner = $request->get('partner');
  795. $isSubNetworks = $request->get('issubnetworks');
  796. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  797. $this->saveXHeaders($request, $widgetCode);
  798. if (empty($request->get('token'))) {
  799. throw new InvalidArgumentException("The token is missing");
  800. }
  801. $configTemplate = $this->render("includes/common/js-config.html.twig", [
  802. 'isWidget' => true,
  803. 'default_latlon' => $this->networkService->getLatLon(),
  804. 'network_lat' => $this->networkService->getLat(),
  805. 'network_lon' => $this->networkService->getLon(),
  806. 'external' => $this->networkService->isExternalNetwork(),
  807. 'baseUrl' => $this->baseUrl,
  808. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  809. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  810. 'widgetTarget' => !empty($target) ? $target : '',
  811. 'isPartner' => !empty($isPartner) ? $isPartner : 'false',
  812. 'issubnetworks' => !empty($isSubNetworks) ? $isSubNetworks : ''
  813. ])->getContent();
  814. $activeWidgets = [
  815. 'journey' => 0,
  816. 'schedule' => 0,
  817. 'traffic' => 1,
  818. 'linesAndPoi' => 0,
  819. ];
  820. $parameters = [];
  821. $parameters['issubnetworks'] = $isSubNetworks;
  822. $homePageService->getDisruption($parameters);
  823. $scheduleFavorites = [];
  824. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  825. $scheduleFavorites = $this->favoritesManager->getSchedules([], true);
  826. }
  827. $parameters['scheduleFavorites'] = $scheduleFavorites ?? [];
  828. $parameters['lineFavorites'] = [];
  829. if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  830. $parameters['lineFavorites'] = $this->favoritesManager->getLines([], true);
  831. }
  832. $activeTab = 'traffic';
  833. $parameters['fullList'] = $request->get('fullList', false);
  834. $parameters['isWidget'] = true;
  835. $parameters['default_latlon'] = $this->networkService->getLatLon();
  836. $parameters['isRedirection'] = !empty($isRedirection) ? $isRedirection : 'false';
  837. $parameters['isInternal'] = !empty($isInternal) ? $isInternal : 'false';
  838. $parameters['activeWidgets'] = $activeWidgets;
  839. $parameters['activeTab'] = $activeTab;
  840. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", $parameters)->getContent();
  841. $widgetScript = $this->getWidgetScript($request);
  842. $widgetCss = $this->getWidgetCss($request);
  843. $rtlCss = $this->getRtlCss();
  844. $hasMap = $this->hasMap($request);
  845. return $this->render('modules/widget.js.twig', [
  846. 'baseUrl' => $this->baseUrl,
  847. 'parameters' => $parameters,
  848. 'wrapperSuffix' => 'Traffic',
  849. 'newtorkId' => $this->networkId,
  850. 'config' => $configTemplate,
  851. 'widgetTemplate' => $widgetTemplate,
  852. 'widgetScript' => $widgetScript,
  853. 'widgetCss' => $widgetCss,
  854. 'rtlCss' => $rtlCss,
  855. 'hasMap' => $hasMap
  856. ]);
  857. }
  858. public function full(Request $request): Response
  859. {
  860. $widgetParameters = $this->getFullWidgetsParameters($request, false);
  861. $widgetParameters['parameters']['activeWidgets'] = [
  862. 'journey' => 1,
  863. 'schedule' => 1,
  864. 'traffic' => ('traffic' === $request->get('except')) ? 0 : 1,
  865. 'linesAndPoi' => 0,
  866. ];
  867. $widgetParameters['parameters']['activeTab'] = 'journey';
  868. $widgetParameters['wrapperSuffix'] = 'Full';
  869. $widgetParameters['widgetTemplate'] = $this->render("layouts/widget/widget.html.twig", $widgetParameters['parameters'])->getContent();
  870. //Add split mode params
  871. $widgetParameters['isSplit'] = false;
  872. return $this->render('modules/widget.js.twig', $widgetParameters);
  873. }
  874. public function fullSplit(Request $request): Response
  875. {
  876. $widgetParameters = $this->getFullWidgetsParameters($request, true);
  877. $widgetParameters['widgetTemplates'] = [];
  878. //TODO : Make this array dynamic
  879. $activeWidgets = [
  880. 'journey' => 1,
  881. 'schedule' => 1,
  882. 'traffic' => 1,
  883. 'linesAndPoi' => 0,
  884. ];
  885. $widgetParameters['parameters']['activeWidgets'] = $activeWidgets;
  886. $widgetParameters['parameters']['trafficMini'] = $request->get('trafficMini');
  887. //Get templates for each enabled widget
  888. foreach ($widgetParameters['parameters']['activeWidgets'] as $k => $v) {
  889. if($v === 1) {
  890. $widgetParameters['parameters']['activeWidgets'] = [
  891. 'journey' => 0,
  892. 'schedule' => 0,
  893. 'traffic' => 0
  894. ];
  895. $widgetParameters['parameters']['activeWidgets'][$k] = 1;
  896. $widgetParameters['parameters']['activeTab'] = $k;
  897. $widgetParameters['widgetTemplates'][$k] = $this->render("layouts/widget/widget.html.twig", $widgetParameters['parameters'])->getContent();
  898. }
  899. }
  900. //Restore activeWidget parameter
  901. $widgetParameters['parameters']['activeWidgets'] = $activeWidgets;
  902. //Add split mode params
  903. $widgetParameters['isSplit'] = true;
  904. return $this->render('modules/widget.js.twig', $widgetParameters);
  905. }
  906. public function scheduleMap(Request $request): Response
  907. {
  908. $this->initServices($request);
  909. $isRedirection = $request->get('redirection');
  910. $isInternal = $request->get('internal');
  911. $target = $request->get('target');
  912. $isPartner = $request->get('partner');
  913. $islid = $request->get('islid');
  914. $isdir = $request->get('isdir');
  915. $issaid = $request->get('issaid');
  916. $issav = $request->get('issav');
  917. $islocid = $request->get('islocid');
  918. $isSubNetworks = $request->get('issubnetworks');
  919. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  920. $this->saveXHeaders($request, $widgetCode);
  921. if (empty($request->get('token'))) {
  922. throw new InvalidArgumentException("The token is missing");
  923. }
  924. $modeEvent = new ModeEvent();
  925. $this->eventDispatcher->dispatch($modeEvent, ModeEvent::NAME);
  926. $modes = $modeEvent->getDefaultModes();
  927. $modesLayout = $modeEvent->getLayoutModes();
  928. $nbDayFuture = $this->networkService->getNbDayFuture();
  929. $maxDate = new \DateTime('now');
  930. $maxDate = $maxDate->add(new \DateInterval('P'.$nbDayFuture.'D'));
  931. $configParameters = [
  932. 'isWidget' => true,
  933. 'requestReferer' => $request->headers->get('referer'),
  934. 'widgetType' => 'schedule',
  935. 'default_latlon' => $this->networkService->getLatLon(),
  936. 'network_lat' => $this->networkService->getLat(),
  937. 'network_lon' => $this->networkService->getLon(),
  938. 'external' => $this->networkService->isExternalNetwork(),
  939. 'maxDate' => $maxDate->format('Y-d-m'),
  940. 'modes' => $modes,
  941. 'baseUrl' => $this->baseUrl,
  942. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  943. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  944. 'isPartner' => !empty($isPartner) && $isPartner === 'true' ? true : false,
  945. 'widgetTarget' => !empty($target) ? $target : '',
  946. 'islid' => !empty($islid) ? $islid : '',
  947. 'isdir' => !empty($isdir) ? $isdir : '',
  948. 'issaid' => !empty($issaid) ? $issaid : '',
  949. 'issav' => !empty($issav) ? $issav : '',
  950. 'islocid' => !empty($islocid) ? $islocid : '',
  951. 'issubnetworks' => !empty($isSubNetworks) ? $isSubNetworks : ''
  952. ];
  953. $configParameters = array_merge($configParameters, $this->getCustomMapParameters($request));
  954. $configTemplate = $this->render("includes/common/js-config.html.twig", $configParameters)->getContent();
  955. $activeWidgets = [
  956. 'journey' => 0,
  957. 'schedule' => 1,
  958. 'traffic' => 0,
  959. 'linesAndPoi' => 0,
  960. ];
  961. $activeTab = 'schedule';
  962. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", [
  963. 'isWidget' => true,
  964. 'widgetCode' => $widgetCode,
  965. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  966. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  967. 'modes' => $modes,
  968. 'modesLayout' => $modesLayout,
  969. 'activeWidgets' => $activeWidgets,
  970. 'activeTab' => $activeTab
  971. ])->getContent();
  972. $widgetScript = $this->getWidgetScript($request);
  973. $widgetCss = $this->getWidgetCss($request);
  974. $rtlCss = $this->getRtlCss();
  975. $hasMap = $this->hasMap($request);
  976. return $this->render('modules/widget.js.twig', [
  977. 'baseUrl' => $this->baseUrl,
  978. 'newtorkId' => $this->networkId,
  979. 'wrapperSuffix' => 'Schedule',
  980. 'config' => $configTemplate,
  981. 'widgetTemplate' => $widgetTemplate,
  982. 'widgetScript' => $widgetScript,
  983. 'widgetCss' => $widgetCss,
  984. 'rtlCss' => $rtlCss,
  985. 'hasMap' => $hasMap,
  986. ]);
  987. }
  988. public function banners(Request $request, CmsService $cmsService): Response
  989. {
  990. $parameters = [];
  991. $this->initServices($request);
  992. $isRedirection = $request->get('redirection');;
  993. $isInternal = $request->get('internal');
  994. $target = $request->get('target');
  995. $isPartner = $request->get('partner');
  996. $widgetCode = $this->getWidgetCode($request, $isRedirection, $isInternal, $isPartner, $target);
  997. $this->saveXHeaders($request, $widgetCode);
  998. if (empty($request->get('token'))) {
  999. throw new InvalidArgumentException("The token is missing");
  1000. }
  1001. $configTemplate = $this->render("includes/common/js-config.html.twig", [
  1002. 'isWidget' => true,
  1003. 'baseUrl' => $this->baseUrl,
  1004. 'isRedirection' => !empty($isRedirection) && $isRedirection === 'true' ? true : false,
  1005. 'isInternal' => !empty($isInternal) && $isInternal === 'true' ? true : false,
  1006. 'widgetTarget' => !empty($target) ? $target : '',
  1007. 'isPartner' => !empty($isPartner) ? $isPartner : 'false'
  1008. ])->getContent();
  1009. $banners = $cmsService->getBanners();
  1010. $activeWidgets = [
  1011. 'banners' => 1,
  1012. 'journey' => 0,
  1013. 'schedule' => 0,
  1014. 'traffic' => 0,
  1015. 'linesAndPoi' => 0,
  1016. ];
  1017. $parameters['isWidget'] = true;
  1018. $parameters['isRedirection'] = !empty($isRedirection) ? $isRedirection : 'false';
  1019. $parameters['isInternal'] = !empty($isInternal) ? $isInternal : 'false';
  1020. $parameters['banners'] = $banners;
  1021. $parameters['activeWidgets'] = $activeWidgets;
  1022. $widgetTemplate = $this->render("layouts/widget/widget.html.twig", $parameters)->getContent();
  1023. $widgetScript = $this->getWidgetScript($request);
  1024. $widgetCss = $this->getWidgetCss($request);
  1025. $rtlCss = $this->getRtlCss();
  1026. $hasMap = $this->hasMap($request);
  1027. return $this->render('modules/widget.js.twig', [
  1028. 'baseUrl' => $this->baseUrl,
  1029. 'parameters' => $parameters,
  1030. 'wrapperSuffix' => 'Banners',
  1031. 'newtorkId' => $this->networkId,
  1032. 'config' => $configTemplate,
  1033. 'widgetTemplate' => $widgetTemplate,
  1034. 'widgetScript' => $widgetScript,
  1035. 'widgetCss' => $widgetCss,
  1036. 'rtlCss' => $rtlCss,
  1037. 'hasMap' => $hasMap
  1038. ]);
  1039. }
  1040. private function getCustomMapParameters(Request $request): array
  1041. {
  1042. $customMapParameters = [];
  1043. $iszoom = $request->get('iszoom');
  1044. if(!empty($iszoom) && is_numeric($iszoom)) {
  1045. $customMapParameters['customZoom'] = $iszoom;
  1046. }
  1047. $islat = $request->get('islat');
  1048. $islon = $request->get('islon');
  1049. if(!empty($islat) && is_numeric($islat) && !empty($islon) && is_numeric($islon)) {
  1050. $customMapParameters['islat'] = $islat;
  1051. $customMapParameters['islon'] = $islon;
  1052. $customMapParameters['customLatLon'] = '[' . $islat . ', ' . $islon . ']';
  1053. }
  1054. return $customMapParameters;
  1055. }
  1056. }