/** * @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 \Pyrus\ChannelFile\Exception('Failed to query channels table'); } while ($res = $result->fetchArray(SQLITE3_ASSOC)) { break; } $ret = new \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 \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 \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; }
function toChannelFile() { $ret = new \Pyrus\ChannelFile\v1(); $ret->fromArray($this->getArray()); return $ret; }