$pear_rest->saveAllPackagesREST(); require_once 'Archive/Tar.php'; require_once 'PEAR/PackageFile.php'; $config =& PEAR_Config::singleton(); $pkg = new PEAR_PackageFile($config); include_once 'pear-database-package.php'; foreach (package::listAllNames() as $package) { echo " {$package}\n"; $pear_rest->savePackageREST($package); echo " Maintainers..."; $pear_rest->savePackageMaintainerREST($package); echo "...done\n"; $releases = package::info($package, 'releases'); if ($releases) { echo " Processing All Releases..."; $pear_rest->saveAllReleasesREST($package); echo "done\n"; foreach ($releases as $version => $blah) { $sql = 'SELECT fullpath FROM files WHERE `release` = ?'; $fileinfo = $dbh->getOne($sql, array($blah['id'])); $tar =& new Archive_Tar($fileinfo); if ($pxml = $tar->extractInString('package2.xml')) { } elseif ($pxml = $tar->extractInString('package.xml')) { } PEAR::pushErrorHandling(PEAR_ERROR_RETURN); $pf = $pkg->fromAnyFile($fileinfo, PEAR_VALIDATE_NORMAL); PEAR::popErrorHandling(); if (!PEAR::isError($pf)) { echo " Version {$version}..."; $pear_rest->saveReleaseREST($fileinfo, $pxml, $pf, $blah['doneby'], $blah['id']); echo "done\n";
/** * Remove release * * @param integer ID of the package * @param integer ID of the release * @return boolean */ static function remove($package, $release) { global $dbh, $auth_user; include_once 'pear-database-user.php'; if (!$auth_user->isAdmin() && !$auth_user->isQA() && !user::maintains($auth_user->handle, $package, 'lead')) { return PEAR::raiseError('release::remove: insufficient privileges'); } // get files that have to be removed $sql = 'SELECT fullpath FROM files WHERE package = ? AND `release` = ?'; $sth = $dbh->query($sql, array($package, $release)); // Should we error out if the removal fails ? $success = true; while ($row = $sth->fetchRow(DB_FETCHMODE_ASSOC)) { if (!@unlink($row['fullpath'])) { $success = false; } } $sql = 'DELETE FROM files WHERE package = ? AND `release` = ?'; $sth = $dbh->query($sql, array($package, $release)); $sql = 'SELECT version from releases WHERE package = ? and id = ?'; $version = $dbh->getOne($sql, array($package, $release)); $query = 'DELETE FROM releases WHERE package = ? AND id = ?'; $sth = $dbh->query($query, array($package, $release)); // remove statistics on this release $dbh->query('DELETE FROM package_stats WHERE pid = ? AND rid = ?', array($package, $release)); $dbh->query('DELETE FROM aggregated_package_stats WHERE package_id = ? AND release_id = ?', array($package, $release)); include_once 'pear-database-package.php'; $pname = package::info($package, 'name'); include_once 'pear-rest.php'; $pear_rest = new pearweb_Channel_REST_Generator(PEAR_REST_PATH, $dbh); $pear_rest->saveAllReleasesREST($pname); $pear_rest->deleteReleaseREST($pname, $version); $pear_rest->savePackagesCategoryREST(package::info($pname, 'category')); if (PEAR::isError($sth)) { return false; } return true; }