/** * Costruttore del servizio * * @param ContainerInterface $container * @return MainKernel */ public function __construct(ContainerInterface $container, SettingManager $settingManager) { $this->container = $container; $this->settingManager = $settingManager; $this->logManager = $container->get('techg.log'); $this->session = $container->get('session'); $this->requestId = uniqid(rand(), true); $this->userBrowserInfo = UtilityManager::getBrowser(); // Inizializzo la sessione $this->session->start(); $request = $container->get('request'); // Gestisco il salvataggio nei cookie dell' Id di sessione if ($request->cookies->has('tgSessionId')) { $this->cookieId = $request->cookies->get('tgSessionId'); } else { if ($request->cookies->has('tgSessionFirstId')) { $this->cookieId = uniqid(null, true); $this->tempCookieId = $request->cookies->get('tgSessionFirstId'); $this->cookieObj = new Cookie('tgSessionId', $this->cookieId, time() + 3600 * 24 * 7); } else { $this->cookieId = 'NO-COOKIE-SUPPORT'; $tempId = $this->session->getId(); $this->cookieObj = new Cookie('tgSessionFirstId', $tempId, time() + 3600 * 24 * 1); } $this->saveCookie = true; } // Mappo la master request nell'array apposito $this->masterRequest = $this->mapRequest($request, true); // Qua dovrei lanciare un evento che carichi i moduli attivi nel kernel // a quel punto sapendo quali sono attivi, posso ragionare di conseguenza $this->userGeoPosition = $container->get('techg.geocoder')->getGeoInfoByIp($this->getMasterRequest('ip')); $this->guessedLocale = $this->masterRequest['guessedLocale']; // ************************************************************************************************ // Qui ho finito completamente il l'inizializzazione del kernel // ************************************************************************************************ $this->isInit = true; // ********************************************************************* // Da qui si potrebbe definire PostInit // Faccio partire l'evento che indica ai moduli che il kernel è inizializzato // ********************************************************************* $container->get('event_dispatcher')->dispatch(TechGKernelInitEvent::onKernelInit, new TechGKernelInitEvent($this)); }
public function renderRequest($request_id) { $serializer = \JMS\Serializer\SerializerBuilder::create()->build(); $request = null; $response = null; $reqStatus = 'ok'; $warning = false; $reqIcon = 'page'; $returnCode = 0; $requestLogs = $this->em->getRepository("TechGSfBaseprjBundle:Log")->getLogsByRequestId($request_id); // Setto la request e la response foreach ($requestLogs as $k => $log) { // decodifico gli info $log['info'] = json_decode($requestLogs[$k]['info'], true); // Se è la request la tolgo dall'array e la tratto a parte if ($log['log_type'] == LogManager::TYPE_SAVE_REQUEST) { $request = $log['info']['request']; $request['queryString'] = $request['queryString'] != '' ? '?' . $request['queryString'] : ''; $request['onlyBaseUri'] = str_replace($request['queryString'], '', $request['requestUri']); $request['data'] = UtilityManager::time_ago(\DateTime::createFromFormat('Y-m-d H:i:s', $log['log_date'])); // Se esiste la response, prendo anche quella if (array_key_exists('response', $log['info'])) { $response = json_decode($log['info']['response'], true); $returnCode = $response['status_code']; } // infine la tolgo dall'array dei log validi unset($requestLogs[$k]); } else { $requestLogs[$k] = $this->renderLog($log); } } switch ($returnCode) { case '500': case '501': $reqStatus = 'error'; $reqIcon = 'http_status_server_error'; break; case '404': $reqStatus = 'nofound'; $reqIcon = 'page_white_error'; break; case 0: $reqStatus = 'warning'; $reqIcon = 'page_white_error'; break; case 302: $reqStatus = 'forward'; $reqIcon = 'arrow_up'; break; default: if (array_key_exists(LogManager::LEVEL_WARNING, $request['typecount'])) { $reqStatus = 'warning'; $reqIcon = 'page_white_error'; } if (array_key_exists(LogManager::LEVEL_ERROR, $request['typecount'])) { $reqStatus = 'error'; $reqIcon = 'http_status_server_error'; } break; } $returnValue = array(); $returnValue['obj'] = $request; $returnValue['html'] = $this->tgKernel->getTemplatingEngine()->render('TechGSfBaseprjBundle:GPanel:Component/render_request.html.twig', array('request' => $request, 'response' => $response, 'logs' => $requestLogs, 'reqStatus' => $reqStatus, 'reqIcon' => $reqIcon)); return $returnValue; }