⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channels.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 3 页
字号:
        }    }    function doAdd($command, $options, $params)    {        if (sizeof($params) != 1) {            return $this->raiseError('channel-add: no channel file specified');        }        if (strpos($params[0], '://')) {            $downloader = &$this->getDownloader();            if (!class_exists('System')) {                require_once 'System.php';            }            $tmpdir = System::mktemp(array('-d'));            PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);            $loc = $downloader->downloadHttp($params[0], $this->ui, $tmpdir, null, false);            PEAR::staticPopErrorHandling();            if (PEAR::isError($loc)) {                return $this->raiseError('channel-add: Cannot open "' . $params[0] . '"');            } else {                list($loc, $lastmodified) = $loc;                $contents = implode('', file($loc));            }        } else {            $lastmodified = false;            $fp = @fopen($params[0], 'r');            if (!$fp) {                return $this->raiseError('channel-add: cannot open "' . $params[0] . '"');            }            $contents = '';            while (!feof($fp)) {                $contents .= fread($fp, 1024);            }            fclose($fp);        }        if (!class_exists('PEAR_ChannelFile')) {            require_once 'PEAR/ChannelFile.php';        }        $channel = new PEAR_ChannelFile;        PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);        $result = $channel->fromXmlString($contents);        PEAR::staticPopErrorHandling();        if (!$result) {            $exit = false;            if (count($errors = $channel->getErrors(true))) {                foreach ($errors as $error) {                    $this->ui->outputData(ucfirst($error['level'] . ': ' . $error['message']));                    if (!$exit) {                        $exit = $error['level'] == 'error' ? true : false;                    }                }                if ($exit) {                    return $this->raiseError('channel-add: invalid channel.xml file');                }            }        }        $reg = &$this->config->getRegistry();        if ($reg->channelExists($channel->getName())) {            return $this->raiseError('channel-add: Channel "' . $channel->getName() .                '" exists, use channel-update to update entry');        }        $ret = $reg->addChannel($channel, $lastmodified);        if (PEAR::isError($ret)) {            return $ret;        }        if (!$ret) {            return $this->raiseError('channel-add: adding Channel "' . $channel->getName() .                '" to registry failed');        }        $this->config->setChannels($reg->listChannels());        $this->config->writeConfigFile();        $this->ui->outputData('Adding Channel "' . $channel->getName() . '" succeeded', $command);    }    function doUpdate($command, $options, $params)    {        if (!class_exists('System')) {            require_once 'System.php';        }        $tmpdir = System::mktemp(array('-d'));        $reg = &$this->config->getRegistry();        if (sizeof($params) != 1) {            return $this->raiseError("No channel file specified");        }        $lastmodified = false;        if ((!file_exists($params[0]) || is_dir($params[0]))              && $reg->channelExists(strtolower($params[0]))) {            $c = $reg->getChannel(strtolower($params[0]));            $this->ui->outputData('Retrieving channel.xml from remote server');            $dl = &$this->getDownloader(array());            // if force is specified, use a timestamp of "1" to force retrieval            $lastmodified = isset($options['force']) ? false : $c->lastModified();            PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);            $contents = $dl->downloadHttp('http://' . $c->getName() . '/channel.xml',                $this->ui, $tmpdir, null, $lastmodified);            PEAR::staticPopErrorHandling();            if (PEAR::isError($contents)) {                return $this->raiseError('Cannot retrieve channel.xml for channel "' .                    $c->getName() . '"');            }            list($contents, $lastmodified) = $contents;            if (!$contents) {                $this->ui->outputData("Channel $params[0] channel.xml is up to date");                return;            }            $contents = implode('', file($contents));            if (!class_exists('PEAR_ChannelFile')) {                require_once 'PEAR/ChannelFile.php';            }            $channel = new PEAR_ChannelFile;            $channel->fromXmlString($contents);            if (!$channel->getErrors()) {                // security check: is the downloaded file for the channel we got it from?                if (strtolower($channel->getName()) != strtolower($c->getName())) {                    if (isset($options['force'])) {                        $this->ui->log(0, 'WARNING: downloaded channel definition file' .                            ' for channel "' . $channel->getName() . '" from channel "' .                            strtolower($c->getName()) . '"');                    } else {                        return $this->raiseError('ERROR: downloaded channel definition file' .                            ' for channel "' . $channel->getName() . '" from channel "' .                            strtolower($c->getName()) . '"');                    }                }            }        } else {            if (strpos($params[0], '://')) {                $dl = &$this->getDownloader();                PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN);                $loc = $dl->downloadHttp($params[0],                    $this->ui, $tmpdir, null, $lastmodified);                PEAR::staticPopErrorHandling();                if (PEAR::isError($loc)) {                    return $this->raiseError("Cannot open " . $params[0]);                } else {                    list($loc, $lastmodified) = $loc;                    $contents = implode('', file($loc));                }            } else {                $fp = @fopen($params[0], 'r');                if (!$fp) {                    return $this->raiseError("Cannot open " . $params[0]);                }                $contents = '';                while (!feof($fp)) {                    $contents .= fread($fp, 1024);                }                fclose($fp);            }            if (!class_exists('PEAR_ChannelFile')) {                require_once 'PEAR/ChannelFile.php';            }            $channel = new PEAR_ChannelFile;            $channel->fromXmlString($contents);        }        $exit = false;        if (count($errors = $channel->getErrors(true))) {            foreach ($errors as $error) {                $this->ui->outputData(ucfirst($error['level'] . ': ' . $error['message']));                if (!$exit) {                    $exit = $error['level'] == 'error' ? true : false;                }            }            if ($exit) {                return $this->raiseError('Invalid channel.xml file');            }        }        if (!$reg->channelExists($channel->getName())) {            return $this->raiseError('Error: Channel "' . $channel->getName() .                '" does not exist, use channel-add to add an entry');        }        $ret = $reg->updateChannel($channel, $lastmodified);        if (PEAR::isError($ret)) {            return $ret;        }        if (!$ret) {            return $this->raiseError('Updating Channel "' . $channel->getName() .                '" in registry failed');        }        $this->config->setChannels($reg->listChannels());        $this->config->writeConfigFile();        $this->ui->outputData('Update of Channel "' . $channel->getName() . '" succeeded');    }    function &getDownloader()    {        if (!class_exists('PEAR_Downloader')) {            require_once 'PEAR/Downloader.php';        }        $a = new PEAR_Downloader($this->ui, array(), $this->config);        return $a;    }    function doAlias($command, $options, $params)    {        $reg = &$this->config->getRegistry();        if (sizeof($params) == 1) {            return $this->raiseError('No channel alias specified');        }        if (sizeof($params) != 2) {            return $this->raiseError(                'Invalid format, correct is: channel-alias channel alias');        }        if (!$reg->channelExists($params[0], true)) {            if ($reg->isAlias($params[0])) {                $extra = ' (use "channel-alias ' . $reg->channelName($params[0]) . ' ' .                    strtolower($params[1]) . '")';            } else {                $extra = '';            }            return $this->raiseError('"' . $params[0] . '" is not a valid channel' . $extra);        }        if ($reg->isAlias($params[1])) {            return $this->raiseError('Channel "' . $reg->channelName($params[1]) . '" is ' .                'already aliased to "' . strtolower($params[1]) . '", cannot re-alias');        }        $chan = &$reg->getChannel($params[0]);        if (!$chan) {            return $this->raiseError('Corrupt registry?  Error retrieving channel "' . $params[0] .                '" information');        }        // make it a local alias        if (!$chan->setAlias(strtolower($params[1]), true)) {            return $this->raiseError('Alias "' . strtolower($params[1]) .                '" is not a valid channel alias');        }        $reg->updateChannel($chan);        $this->ui->outputData('Channel "' . $chan->getName() . '" aliased successfully to "' .            strtolower($params[1]) . '"');    }    function doDiscover($command, $options, $params)    {        $reg = &$this->config->getRegistry();        if (sizeof($params) != 1) {            return $this->raiseError("No channel server specified");        }        if ($reg->channelExists($params[0])) {            if ($reg->isAlias($params[0])) {                return $this->raiseError("A channel alias named \"$params[0]\" " .                    'already exists, aliasing channel "' . $reg->channelName($params[0])                    . '"');            } else {                return $this->raiseError("Channel \"$params[0]\" is already initialized");            }        }        $this->pushErrorHandling(PEAR_ERROR_RETURN);        $err = $this->doAdd($command, $options, array('http://' . $params[0] . '/channel.xml'));        $this->popErrorHandling();        if (PEAR::isError($err)) {            return $this->raiseError("Discovery of channel \"$params[0]\" failed");        }        $this->ui->outputData("Discovery of channel \"$params[0]\" succeeded", $command);    }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -