function main_showmethods($eventData)
{
    global $wuiMainFrame, $innomaticLocale, $wuiMainStatus, $wuiTitleBar;
    $accQuery = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getDataAccess()->execute('SELECT name FROM webservices_accounts WHERE id=' . $eventData['accountid']);
    $accData = $accQuery->getFields();
    $wuiVGroup = new WuiVertgroup('vgroup');
    $xmlrpcAccount = new \Innomatic\Webservices\WebServicesAccount($eventData['accountid']);
    $xmlrpcClient = new \Innomatic\Webservices\Xmlrpc\XmlRpcClient($xmlrpcAccount->mPath, $xmlrpcAccount->mHost, $xmlrpcAccount->mPort);
    $xmlrpcClient->setProxy($xmlrpcAccount->mProxy, $xmlrpcAccount->mProxyPort);
    $xmlrpcClient->setCredentials($xmlrpcAccount->mUsername, $xmlrpcAccount->mPassword);
    $xmlrpcMessage = new \Innomatic\Webservices\Xmlrpc\XmlRpcMsg('system.listMethods');
    $xmlrpcResp = $xmlrpcClient->Send($xmlrpcMessage);
    if ($xmlrpcResp) {
        if (!$xmlrpcResp->FaultCode()) {
            $xv = $xmlrpcResp->Value();
            if (is_object($xv)) {
                $methods = \Innomatic\Webservices\Xmlrpc\php_xmlrpc_decode($xv);
                //$methods_val = $xv->scalarVal();
                if (is_array($methods)) {
                    $headers[0]['label'] = $innomaticLocale->getStr('method.header');
                    $methodsTable = new WuiTable('methods', array('elements' => [], 'headers' => $headers, 'rowsperpage' => '20', 'pagesactionfunction' => 'methods_list_action_builder', 'pagenumber' => isset($eventData['methodspage']) ? $eventData['methodspage'] : 1));
                    $row = 0;
                    while (list($key, $val) = each($methods)) {
                        $methodsTable->addChild(new WuiLabel('method', array('label' => $val)), $row, 0);
                        $row++;
                    }
                    $wuiVGroup->addChild($methodsTable);
                }
            }
        } else {
            $wuiMainStatus->mArgs['status'] = $innomaticLocale->getStr('server_response_error');
        }
    } else {
        $wuiMainStatus->mArgs['status'] = $innomaticLocale->getStr('invalid_server_response');
    }
    //$wuiVGroup
    $wuiMainFrame->addChild($wuiVGroup);
    $wuiTitleBar->mArgs['title'] .= ' - ' . $accData['name'] . ' - ' . $innomaticLocale->getStr('showmethods_title');
}
 /**
  * Executes a remote call to the Module server.
  *
  * @param string $method Remote Module method name to call.
  * @param array $args Optional arguments.
  * @return mixed Remote object result value.
  * @since 5.1
  */
 protected function moduleXmlRpcCall($method, $args = null)
 {
     $method = strtolower($method);
     $request_body = xmlrpc_encode_request($method, $args);
     $content_len = strlen($request_body);
     $fd = @fsockopen($this->locator->getHost(), $this->locator->getPort(), $errno, $errstr, 10);
     if (!$fd) {
         throw new ModuleException('Could not open socket for remote Module [host=' . $this->locator->getHost() . ', port=' . $this->locator->getPort() . ']');
     }
     $http_request = 'INVOKE ' . $this->locator->getLocation() . " Module/1.0\r\n";
     $http_request .= 'User-Agent: Innomatic Module server 5.1' . "\r\n";
     // !!! check host and port
     $http_request .= 'Host: ' . $this->locator->getHost() . ':' . $this->locator->getPort() . "\r\n";
     if ($this->sessionId) {
         $http_request .= 'Session: ' . $this->sessionId . "\r\n";
     }
     if ($this->locator->getUsername() != '' and $this->locator->getPassword() != '') {
         $http_request .= 'User: '******'Password: '******'Authorization: Basic '.base64_encode($this->locator->getUsername().':'.$this->locator->getPassword())."\r\n";
     }
     $http_request .= "Content-Type: text/xml\r\n";
     $http_request .= "Content-Length: {$content_len}\r\n";
     $http_request .= "\r\n";
     $http_request .= $request_body;
     if (fputs($fd, $http_request, strlen($http_request)) != strlen($http_request)) {
         throw new ModuleException('Module server connection closed too early');
     }
     $response_status = 0;
     $headers_parsed = false;
     $response_body = '';
     $response_headers = array();
     while (!feof($fd)) {
         $line = fgets($fd, 4096);
         if ($headers_parsed == false) {
             if ($line === "\r\n" || $line === "\n") {
                 $headers_parsed = true;
             } else {
                 if (ereg('^([.Module/0-9]+) ([0-9]+)', $line, $regs)) {
                     $response_status = $regs[2];
                 } else {
                     $response_headers[substr($line, 0, strpos($line, ':'))] = trim(substr($line, strpos($line, ':') + 1));
                 }
             }
         } else {
             $response_body .= $line;
         }
     }
     fclose($fd);
     if ($headers_parsed == false || $response_status == 0) {
         throw new ModuleException('Invalid response from Module server');
     }
     switch ($response_status) {
         case 200:
             break;
         case 401:
             throw new ModuleException('Not authorized');
             break;
         case 403:
             throw new ModuleException('Forbidden');
             break;
         case 500:
             throw new ModuleException('Internal server error');
             break;
         default:
             throw new ModuleException('Invalid return status ' . $response_status . ' from Module server');
     }
     if (isset($response_headers['Session'])) {
         $this->sessionId = $response_headers['Session'];
     }
     $return_value = \Innomatic\Webservices\Xmlrpc\php_xmlrpc_decode($response_body);
     if ($return_value == null) {
         throw new ModuleException('XML-RPC decode failed, invalid XML-RPC response from Module server');
     }
     // Todo: process XML-RPC errors here
     return $return_value;
 }
 /**
  * Lists the available application versions.
  *
  * @param integer $repId Repository id.
  * @param integer $applicationId Application id.
  * @param bool $refresh Set to true if a cache refresh is requested.
  * @access public
  * @return array
  */
 public function listAvailableApplicationVersions($repId, $applicationId, $refresh = false)
 {
     $result = false;
     $cachedItem = new \Innomatic\Datatransfer\Cache\CachedItem($this->dataAccess, 'appcentral-client', 'repository_application_versions-' . $this->id . '-' . $repId . '-' . $applicationId);
     $goon = true;
     if (!$refresh) {
         $cacheContent = $cachedItem->retrieve();
         if ($cacheContent != false) {
             $goon = false;
             $result = unserialize($cacheContent);
         }
     }
     if ($goon) {
         $xmlrpcMessage = new \Innomatic\Webservices\Xmlrpc\XmlRpcMsg('appcentral-server.list_available_application_versions', array(new \Innomatic\Webservices\Xmlrpc\XmlRpcVal($repId, 'int'), new \Innomatic\Webservices\Xmlrpc\XmlRpcVal($applicationId, 'int')));
         $xmlrpcResp = $this->client->send($xmlrpcMessage);
         if ($xmlrpcResp) {
             if (!$xmlrpcResp->faultCode()) {
                 $xv = \Innomatic\Webservices\Xmlrpc\php_xmlrpc_decode($xmlrpcResp->value());
                 if (is_array($xv)) {
                     $cachedItem->store(serialize($xv));
                     $result = $xv;
                 } else {
                     $this->log->logEvent(['root' => ''], 'innomatic.appcentralremoteserver.listavailableapplications', 'Not an array from server', \Innomatic\Logging\Logger::ERROR);
                 }
             } else {
                 $this->log->logEvent(['root' => ''], 'innomatic.appcentralremoteserver.listavailableapplications', 'Error in response from server: ' . $xmlrpcResp->faultString(), \Innomatic\Logging\Logger::ERROR);
             }
         } else {
             $this->log->logEvent(['root' => ''], 'innomatic.appcentralremoteserver.listavailableapplications', 'Invalid response from server', \Innomatic\Logging\Logger::ERROR);
         }
     }
     return $result;
 }