/** * Shows info page with information * * @Route("/info-page/{key}/{action}/", name="infoPage") * @Template("FITModuleDefaultBundle:Module:section.html.twig") * * @param int $key key of connected server * @param string $action name of the action ("session"|"reload") * @return array */ public function sessionInfoAction($key, $action) { /** * @var \FIT\NetopeerBundle\Models\Data $dataClass */ $dataClass = $this->get('DataModel'); parent::setActiveSectionKey($key); $dataClass->buildMenuStructure($key); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'moduleJavascripts'); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'moduleStylesheet'); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'title'); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'additionalTitle'); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'singleContent'); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'alerts'); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'topMenu'); $this->addAjaxBlock('FITModuleDefaultBundle:Module:section.html.twig', 'leftColumn'); if ($action == "session") { /** * @var Session $session */ $session = $this->container->get('request')->getSession(); $sessionArr = $session->all(); // format session info output (unserialize object, convert JSON into array) if (isset($sessionArr['session-connections'])) { $connVarsArr = array(); foreach ($sessionArr['session-connections'] as $connKey => $conn) { if ($connKey != $key) { continue; } $tmp = unserialize($conn); $unserialized = (array) unserialize($conn); foreach ($unserialized as $key => $value) { if (strrpos($key, 'activeController')) { $tmpArr = array(); foreach ($value as $k => $v) { $tmpArr[str_replace(":", "_", $k)] = $v; } $unserialized['activeController'] = $tmpArr; unset($unserialized[$key]); } } $connVarsArr['connection-' . $connKey][$connKey] = $unserialized; if ($connVarsArr['connection-' . $connKey][$connKey]['sessionStatus']) { $connVarsArr['connection-' . $connKey][$connKey]['sessionStatus'] = (array) json_decode($connVarsArr['connection-' . $connKey][$connKey]['sessionStatus']); if (isset($connVarsArr['connection-' . $connKey][$connKey]['sessionStatus']['capabilities'])) { $connVarsArr['connection-' . $connKey][$connKey]['capabilities'] = implode("\n", $connVarsArr['connection-' . $connKey][$connKey]['sessionStatus']['capabilities']); unset($connVarsArr['connection-' . $connKey][$connKey]['sessionStatus']['capabilities']); } } $connVarsArr['connection-' . $connKey][$connKey]['nc_features'] = $dataClass->getCapabilitiesArrForKey($connKey); } $sessionArr['session-connections'] = $connVarsArr; } unset($sessionArr['_security_secured_area']); unset($sessionArr['_security_commont_context']); $xml = Array2XML::createXML("session", $sessionArr); $xml = simplexml_load_string($xml->saveXml(), 'SimpleXMLIterator'); $this->assign("stateArr", $xml); $this->assign('hideStateSubmitButton', true); } else { if ($action == "reload") { $params = array('key' => $key); $dataClass->handle("reloadhello", $params); } } $this->assign('singleColumnLayout', true); // because we do not allow changing layout, controls will be hidden $this->assign('hideColumnControl', true); $routeParams = array('key' => $key, 'module' => null, 'subsection' => null); $this->assign('routeParams', $routeParams); $this->assign('activeAction', $action); $this->assign('stateSectionTitle', "Session info"); return $this->getTwigArr(); }