/**
  * Sets section and subsection names for current module or section
  *
  * @param $key
  * @param $module
  * @param $subsection
  *
  * @return null|RedirectResponse
  */
 protected function setModuleOrSectionName($key, $module, $subsection)
 {
     $dataClass = $this->get('DataModel');
     // if we have module, we are definitely in module or subsection action, so we could load names
     if ($module) {
         parent::setSubmenuUrl($module);
         $this->assign('sectionName', $dataClass->getSectionName($module));
         if ($subsection) {
             $this->assign('subsectionName', $dataClass->getSubsectionName($subsection));
         }
         // we are in section
     } else {
         $connArray = $this->getRequest()->getSession()->get('session-connections');
         if (isset($connArray[$key])) {
             $host = unserialize($connArray[$key]);
             $this->assign('sectionName', $host->host);
         } else {
             $this->getRequest()->getSession()->getFlashBag()->add('state error', "You try to load device you are not connected to.");
             return $this->redirect($this->generateUrl("connections", array()));
         }
     }
     $routeParams = array('key' => $key, 'module' => $module, 'subsection' => $subsection);
     $this->assign('routeParams', $routeParams);
     $this->assign('isModule', true);
 }
 /**
  * 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();
 }