/**
  * Get all applications which user can see in
  * AIS menu.
  *
  * @returns array(string)
  */
 public function getAllAvailableApplications(Trace $trace)
 {
     $appParser = new AIS2ApplicationAvailabilityParser();
     $simpleConn = $this->connection->getSimpleConnection();
     $urlMap = $this->connection->getUrlMap();
     // TODO(ppershing): make this more configurable
     $aisModules = array('SP', 'LZ', 'ES', 'ST', 'RH', 'UB', 'AS', 'RP');
     $applications = array();
     foreach ($aisModules as $module) {
         $childTrace = $trace->addChild('Listing applications for module ' . $module);
         $html = $simpleConn->request($childTrace->addChild('Requesting page'), $urlMap->getChangeModulePage($module));
         $html = $this->convertEncoding($html);
         $moduleApp = $appParser->findAllApplications($html);
         $childTrace->tlogVariable('applications', $moduleApp);
         $applications = array_merge($applications, $moduleApp);
     }
     // remove duplicates
     return array_values($applications);
 }
 /**
  * Get all applications which user can see in
  * AIS menu.
  *
  * @param Trace $trace
  * @param array(string) $modules module names to check
  *
  * @returns array(string)
  */
 public function getAllAvailableApplications(Trace $trace, array $modules)
 {
     foreach ($modules as $module) {
         Preconditions::checkIsString($module, '$modules must be an array of strings');
     }
     $appParser = new AIS2ApplicationAvailabilityParser();
     $simpleConn = $this->connection->getSimpleConnection();
     $urlMap = $this->connection->getUrlMap();
     $applications = array();
     foreach ($modules as $module) {
         $childTrace = $trace->addChild('Listing applications for module ' . $module);
         $html = $simpleConn->request($childTrace->addChild('Requesting page'), $urlMap->getChangeModulePage($module));
         $html = $this->convertEncoding($html);
         $moduleApp = $appParser->findAllApplications($html);
         $childTrace->tlogVariable('applications', $moduleApp);
         $applications = array_merge($applications, $moduleApp);
     }
     // remove duplicates
     return array_values($applications);
 }