function _getChannelValue($key, $layer, $channel)
{
if ($key == '__channels' || $channel == 'pear.php.net') {
return null;
}
$ret = null;
if ($layer === null) {
foreach ($this->layers as $ilayer) {
if (isset($this->configuration[$ilayer]['__channels'][$channel][$key])) {
$ret = $this->configuration[$ilayer]['__channels'][$channel][$key];
break;
}
}
} elseif (isset($this->configuration[$layer]['__channels'][$channel][$key])) {
$ret = $this->configuration[$layer]['__channels'][$channel][$key];
}
if ($key != 'preferred_mirror') {
return $ret;
}
if ($ret !== null) {
$reg =& $this->getRegistry($layer);
if (is_object($reg)) {
$chan =& $reg->getChannel($channel);
if (PEAR::isError($chan)) {
return $channel;
}
if (!$chan->getMirror($ret) && $chan->getName() != $ret) {
return $channel;
// mirror does not exist
}
}
return $ret;
}
if ($channel != $this->getDefaultChannel($layer)) {
return $channel;
// we must use the channel name as the preferred mirror
// if the user has not chosen an alternate
}
return $this->getDefaultChannel($layer);
}