/** * @param PEAR_Config */ function PEAR_Downloader_Package(&$downloader) { $this->_downloader =& $downloader; $this->_config =& $this->_downloader->config; $this->_registry =& $this->_config->getRegistry(); $this->_valid = $this->_analyzed = false; }
/** * Set up the registry/location of dependency DB * @param PEAR_Config|false * @param string|false full path to the dependency database, or false to use default */ function setConfig(&$config, $depdb = false) { if (!$config) { $this->_config =& PEAR_Config::singleton(); } else { $this->_config =& $config; } $this->_registry =& $this->_config->getRegistry(); if (!$depdb) { $this->_depdb = $this->_config->get('php_dir', null, 'pear.php.net') . DIRECTORY_SEPARATOR . '.depdb'; } else { $this->_depdb = $depdb; } $this->_lockfile = dirname($this->_depdb) . DIRECTORY_SEPARATOR . '.depdblock'; }
/** * @param PEAR_Downloader */ function PEAR_Downloader_Package(&$downloader) { $this->_downloader =& $downloader; $this->_config =& $this->_downloader->config; $this->_registry =& $this->_config->getRegistry(); $options = $downloader->getOptions(); if (isset($options['packagingroot'])) { $this->_config->setInstallRoot($options['packagingroot']); $this->_installRegistry =& $this->_config->getRegistry(); $this->_config->setInstallRoot(false); } else { $this->_installRegistry =& $this->_registry; } $this->_valid = $this->_analyzed = false; }
/** * Constructor. * * Searches all installed applications and libraries for migration * directories and builds lists of migrateable modules and directories. * * @param string $basedir Base directory of a Git checkout. If provided * a framework/ sub directory is searched for * migration scripts too. * @param string $pearconf Path to a PEAR configuration file. */ public function __construct($basedir = null, $pearconf = null) { // Loop through all applications. foreach ($GLOBALS['registry']->listAllApps() as $app) { $dir = $GLOBALS['registry']->get('fileroot', $app) . '/migration'; if (is_dir($dir)) { $this->apps[] = $app; $this->_lower[] = Horde_String::lower($app); $this->dirs[] = realpath($dir); } } // Silence PEAR errors. $old_error_reporting = error_reporting(); error_reporting($old_error_reporting & ~E_DEPRECATED); $pear = new PEAR_Config($pearconf); // Loop through local framework checkout. if ($basedir) { $packageFile = new PEAR_PackageFile($pear); foreach (glob($basedir . '/framework/*/migration') as $dir) { $package = $packageFile->fromPackageFile(dirname($dir) . '/package.xml', PEAR_VALIDATE_NORMAL); if ($package instanceof PEAR_Error) { Horde::log(sprintf('%s: %s', $package->getMessage(), print_r($package->getUserInfo(), true)), Horde_Log::ERR); continue; } $this->apps[] = $package->getName(); $this->_lower[] = Horde_String::lower($package->getName()); $this->dirs[] = realpath($dir); } } // Loop through installed PEAR packages. $registry = $pear->getRegistry(); foreach (glob($pear->get('data_dir') . '/*/migration') as $dir) { $package = $registry->getPackage(basename(dirname($dir)), 'pear.horde.org'); if ($package == false) { Horde::log("Ignoring package in directory {$dir}", Horde_Log::WARN); continue; } $app = $package->getName(); if (!in_array($app, $this->apps)) { $this->apps[] = $app; $this->_lower[] = Horde_String::lower($app); $this->dirs[] = realpath($dir); } } error_reporting($old_error_reporting); }
$result = "Database support is ok"; $status = OK; } print_row("Database Support", $result, $status); // PEAR $have_pear = false; if (!($pear_dir = find_path($path_list, "PEAR"))) { $result = "Not installed. The PEAR extension is required by several other " . "PHP extensions that Maia needs. See <a href=\"http://pear.php.net/\">this page</a> " . "for more information about downloading and installing PEAR."; $status = ERROR; } else { // include_once ("PEAR/Remote.php"); // PEAR::Remote include_once "PEAR/Config.php"; // PEAR::Registry $have_pear = true; $pear = new PEAR_Config(); $pear_reg = $pear->getRegistry(); $pear_info = $pear_reg->packageInfo("PEAR"); $pear_list = $pear_reg->listPackages(); $pear_version = is_array($pear_info["version"]) ? $pear_info["version"]["release"] : $pear_info["version"]; $result = $pear_version; $status = OK; } print_row("PEAR", $result, $status); // PEAR::Mail_Mime if ($have_pear) { if (!in_array("mail_mime", $pear_list)) { $result = "Not installed. This PHP extension is required to decode " . "MIME-structured e-mail. Use <b>pear install Mail_Mime</b> to " . "install this."; $status = ERROR; } else { $info = $pear_reg->packageInfo("Mail_Mime"); $result = is_array($info["version"]) ? $info["version"]["release"] : $info["version"];
/** * Returns the latest information about the given package. * * @access protected * @return boolean true on success, false on error * @since 0.4.0a1 * @throws PEAR_PACKAGEUPDATE_ERROR_NOPACKAGE, * PEAR_PACKAGEUPDATE_ERROR_NOCHANNEL, * PEAR_PACKAGEUPDATE_ERROR_NOINFO */ function getPackageInfo() { // Only check once. if (isset($this->latestVersion) && isset($this->info)) { return true; } // Make sure the channel and package are set. if (empty($this->packageName)) { $this->pushError(PEAR_PACKAGEUPDATE_ERROR_NOPACKAGE); return false; } if (empty($this->channel)) { $this->pushError(PEAR_PACKAGEUPDATE_ERROR_NOCHANNEL); return false; } // Create a config object. $config = new PEAR_Config(); // Get the config's registry object. $reg = $config->getRegistry(); // Parse the package name. $parsed = $reg->parsePackageName($this->channel . '/' . $this->packageName); // Check for errors. if (PEAR::isError($parsed)) { $this->pushError($parsed); return false; } // Get a PEAR_Remote instance. $r = $config->getRemote(); // Get the package info. $info = $r->call('package.info', $parsed['package']); // Check to make sure the package was found. if (PEAR::isError($info)) { $this->pushError(PEAR_PACKAGEUPDATE_ERROR_NOINFO, NULL, array('packagename' => $this->packageName)); return false; } // Get the installed version of the package. $this->instVersion = $reg->packageInfo($parsed['package'], 'version', $parsed['channel']); // If the package is not installed, create a dummy version. if (empty($this->instVersion)) { $this->instVersion = '0.0.0'; } // Pull out the latest information. $this->latestVersion = reset(array_keys($info['releases'])); $this->info = reset($info['releases']); return true; }