| // | | // +----------------------------------------------------------------------+ // // $Id$ require_once "PEAR/Command/Common.php"; require_once "PEAR/Command.php"; require_once "PEAR/Remote.php"; require_once "PEAR.php"; /** * PEAR commands for providing file mirrors * */ class PEAR_Command_Mirror extends PEAR_Command_Common { // {{{ properties var $commands = array( 'download-all' => array( 'summary' => 'Downloads each avaible Package from master_server', 'function' => 'doDownloadAll', 'shortcut' => 'da', 'options' => array(), 'doc' => ' Request a list of avaible Packages from the Package-Server (master_server) and downloads them to current working dir' ), ); // }}} // {{{ constructor /** * PEAR_Command_Mirror constructor. * * @access public * @param object PEAR_Frontend a reference to an frontend * @param object PEAR_Config a reference to the configuration data */ function PEAR_Command_Mirror(&$ui, &$config) { parent::PEAR_Command_Common($ui, $config); } // }}} // {{{ doDownloadAll() /** * retrieves a list of avaible Packages from master server * and downloads them * * @access public * @param string $command the command * @param array $options the command options before the command * @param array $params the stuff after the command name * @return bool true if succesful * @throw PEAR_Error */ function doDownloadAll($command, $options, $params) { $this->config->set("php_dir", "."); $remote = &new PEAR_Remote($this->config); $remoteInfo = $remote->call("package.listAll"); if(PEAR::isError($remoteInfo)) { return $remoteInfo; } $cmd = &PEAR_Command::factory("download", $this->config); if(PEAR::isError($cmd)) { return $cmd; } foreach($remoteInfo as $pkgn=>$pkg) { // error handling not neccesary, because // already done by the download command $cmd->run("download", array(), array($pkgn)); } return true; } // }}} }