/**
     * Render remote extension list
     *
     * @param object $parameters
     * @return string $content
     */
    public function getRemoteExtensionList($parameters)
    {
        $repositoryId = $parameters->repository;
        $mirrorUrl = $this->getMirrorUrl($repositoryId);
        $list = $this->getFlatExtensionList();
        $localList = $list['data'];
        $search = htmlspecialchars($parameters->query);
        $limit = htmlspecialchars($parameters->start . ', ' . $parameters->limit);
        $orderBy = htmlspecialchars($parameters->sort);
        $orderDir = htmlspecialchars($parameters->dir);
        if ($orderBy == '') {
            $orderBy = 'relevance';
            $orderDir = 'ASC';
        }
        if ($orderBy === 'statevalue') {
            $orderBy = 'cache_extensions.state ' . $orderDir;
        } elseif ($orderBy === 'relevance') {
            $orderBy = 'relevance ' . $orderDir . ', cache_extensions.title ' . $orderDir;
        } else {
            $orderBy = 'cache_extensions.' . $orderBy . ' ' . $orderDir;
        }
        $installedOnly = $parameters->installedOnly;
        $where = $addFields = '';
        if ($search === '' && !$installedOnly) {
            return array('length' => 0, 'data' => array());
        } elseif ($search === '*') {
        } else {
            $quotedSearch = $GLOBALS['TYPO3_DB']->escapeStrForLike($GLOBALS['TYPO3_DB']->quoteStr($search, 'cache_extensions'), 'cache_extensions');
            $addFields = '
				(CASE WHEN cache_extensions.extkey =  "' . $search . '" THEN 100 ELSE 5 END) +
				(CASE WHEN cache_extensions.title = "' . $search . '" THEN 80 ELSE 5 END) +
				(CASE WHEN cache_extensions.extkey LIKE \'%' . $quotedSearch . '%\' THEN 60 ELSE 5 END) +
				(CASE WHEN cache_extensions.title LIKE \'%' . $quotedSearch . '%\' THEN 40 ELSE 5 END)
			 AS relevance';
            if (t3lib_extMgm::isLoaded('dbal')) {
                // as dbal can't use the sum, make it more easy for dbal
                $addFields = 'CASE WHEN cache_extensions.extkey =  \'' . $search . '\' THEN 100 ELSE 10 END AS relevance';
            }
            $where = ' AND (cache_extensions.extkey LIKE \'%' . $quotedSearch . '%\' OR cache_extensions.title LIKE \'%' . $quotedSearch . '%\')';
        }
        // check for filter
        $where .= $this->makeFilterQuery(get_object_vars($parameters));
        if ($installedOnly) {
            $temp = array();
            foreach ($localList as $key => $value) {
                if ($value['installed']) {
                    $temp[] = '"' . $key . '"';
                }
            }
            $where .= ' AND cache_extensions.extkey IN(' . implode(',', $temp) . ')';
            $limit = '';
        }
        $list = tx_em_Database::getExtensionListFromRepository($repositoryId, $addFields, $where, $orderBy, $limit);
        $updateKeys = array();
        // transform array
        foreach ($list['results'] as $key => $value) {
            $list['results'][$key]['dependencies'] = unserialize($value['dependencies']);
            $extPath = t3lib_div::strtolower($value['extkey']);
            $list['results'][$key]['statevalue'] = $value['state'];
            $list['results'][$key]['state'] = tx_em_Tools::getDefaultState(intval($value['state']));
            $list['results'][$key]['version'] = tx_em_Tools::versionFromInt($value['maxintversion']);
            $list['results'][$key]['icon'] = '<img alt="" src="' . $mirrorUrl . $extPath[0] . '/' . $extPath[1] . '/' . $extPath . '_' . $list['results'][$key]['version'] . '.gif" />';
            $list['results'][$key]['exists'] = 0;
            $list['results'][$key]['installed'] = 0;
            $list['results'][$key]['versionislower'] = 0;
            $list['results'][$key]['existingVersion'] = '';
            if (isset($localList[$value['extkey']])) {
                $isUpdatable = $localList[$value['extkey']]['intversion'] < $value['maxintversion'];
                $list['results'][$key]['exists'] = 1;
                $list['results'][$key]['installed'] = $localList[$value['extkey']]['installed'];
                $list['results'][$key]['versionislower'] = $isUpdatable;
                $list['results'][$key]['existingVersion'] = $localList[$value['extkey']]['version'];
                if ($isUpdatable) {
                    $updateKeys[] = $key;
                }
            }
        }
        // updatable only
        if ($installedOnly == 2) {
            $temp = array();
            if (count($updateKeys)) {
                foreach ($updateKeys as $key) {
                    $temp[] = $list['results'][$key];
                }
            }
            $list['results'] = $temp;
            $list['count'] -= count($updateKeys);
        }
        return array('length' => $list['count'], 'data' => $list['results']);
    }