Example #1
0
 function toChannelFile()
 {
     $ret = new \PEAR2\Pyrus\ChannelFile\v1;
     $ret->fromArray($this->getArray());
     return $ret;
 }
Example #2
0
    /**
     * @param string
     */
    protected function getChannelObject($channel)
    {
        $channel = $this->channelFromAlias($channel);
        if (!$this->initialized) {
            $this->lazyInit();
        }
        $database = Db::getRegistry($this->_path);
        
        $sql = 'SELECT * FROM channels WHERE channel = "' .
            $database->escapeString($channel) . '"';

        $result = $database->query($sql);
        if (!$result) {
            throw new \PEAR2\Pyrus\ChannelFile\Exception('Failed to query channels table');
        }

        while ($res = $result->fetchArray(SQLITE3_ASSOC)) {
            break;
        }
        $ret = new \PEAR2\Pyrus\ChannelFile\v1;
        $ret->name = $channel;
        $ret->suggestedalias = $res['suggestedalias'];
        if ($res['alias']) {
            $ret->alias = $res['alias'];
        }
        $ret->summary = $res['summary'];
        $ret->setValidationPackage($res['validatepackage'], $res['validatepackageversion']);
        $ret->lastModified = $res['lastmodified'];

        $sql = 'SELECT channel, server, ssl, port FROM channel_servers
            WHERE channel = "' .
            $database->escapeString($channel) . '"';
        $result = $database->query($sql);
        if (!$result) {
            throw new \PEAR2\Pyrus\ChannelFile\Exception('Failed to query mirrors table');
        }

        while ($res = $result->fetchArray(SQLITE3_ASSOC)) {
            if ($res['server'] == $res['channel']) {
                $ret->port = $res['port'];
                $ret->ssl = $res['ssl'];
            } else {
                $ret->mirrors[$res['server']]->ssl = $res['ssl'];
                $ret->mirrors[$res['server']]->port = $res['port'];
            }
        }

        $sql = 'SELECT channel, server, baseurl, type FROM channel_server_rest
            WHERE channel= "' .
            $database->escapeString($channel) . '"';
        $result = $database->query($sql);
        if (!$result) {
            throw new \PEAR2\Pyrus\ChannelFile\Exception('Failed to query rest table');
        }

        while ($res = $result->fetchArray(SQLITE3_ASSOC)) {
            if ($res['server'] == $res['channel']) {
                $ret->protocols->rest[$res['type']]->baseurl = $res['baseurl'];
            } else {
                $ret->mirrors[$res['server']]->protocols->rest[$res['type']]->baseurl = $res['baseurl'];
            }
        }
        return $ret;
    }