$pear_rest->saveAllPackagesREST(); $pear_rest->savePackageREST($_POST['name']); $pear_rest->savePackagesCategoryREST(package::info($_POST['name'], 'category')); report_success('Package information successfully updated.'); } } } else { if (isset($_GET['action'])) { switch ($_GET['action']) { case 'release_remove': if (!isset($_GET['release'])) { report_error('Missing package ID!'); break; } include_once 'pear-database-release.php'; if (release::remove($_GET['id'], $_GET['release'])) { echo "<b>Release successfully deleted.</b><br /><br />\n"; } else { report_error('An error occured while deleting the release!'); } break; } } } $row = package::info((int) $_GET['id']); if (empty($row['name'])) { report_error('Illegal package id'); response_footer(); exit; } print_package_navigation($row['packageid'], $row['name'], '/package-edit.php?id=' . $row['packageid']);
/** * Download release via HTTP * * * @param string Name of the package * @param string Version string * @param string Filename * @param boolean Uncompress file before downloading? * @return mixed * @static */ function HTTPdownload($package, $version = null, $file = null, $uncompress = false) { global $dbh; require_once "HTTP.php"; $package_id = package::info($package, 'packageid', true); if (!$package_id) { $package_id = $dbh->getOne('SELECT package_id FROM package_aliases WHERE alias_name=' . $dbh->quoteSmart($package)); if (!$package_id) { return PEAR::raiseError("release download:: package '" . htmlspecialchars($package) . "' does not exist"); } } if (PEAR::isError($package_id)) { return $package_id; } if ($file !== null) { $basename = substr($file, 0, -4); if (substr($file, -4) == '.tar') { $file = $basename . '.tgz'; $uncompress = true; } $row = $dbh->getRow("SELECT `fullpath`, `release`, `id` FROM files " . "WHERE UPPER(basename) = ?", array(strtoupper($file)), DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } elseif ($row === null) { return PEAR::raiseError("File '{$file}' not found"); } $path = $row['fullpath']; $log_release = $row['release']; $log_file = $row['id']; } elseif ($version == null) { // Get the most recent version $row = $dbh->getRow("SELECT id FROM releases " . "WHERE package = {$package_id} " . "ORDER BY releasedate DESC", DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } $release_id = $row['id']; } elseif (release::isValidState($version)) { $version = strtolower($version); // Get the most recent version with a given state $row = $dbh->getRow("SELECT id FROM releases " . "WHERE package = {$package_id} " . "AND state = '{$version}' " . "ORDER BY releasedate DESC", DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } $release_id = $row['id']; if (!isset($release_id)) { return PEAR::raiseError("{$package} does not have any releases with state \"{$version}\""); } } else { // Get a specific release $row = $dbh->getRow("SELECT id FROM releases " . " WHERE package = " . $dbh->quoteSmart($package_id) . " AND version = " . $dbh->quoteSmart($version), DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } $release_id = $row['id']; } if (!isset($path) && isset($release_id)) { $sql = "SELECT fullpath, basename, `id` FROM files WHERE `release` = " . $release_id; $row = $dbh->getRow($sql, DB_FETCHMODE_ORDERED); if (PEAR::isError($row)) { return $row; } list($path, $basename, $log_file) = $row; if (empty($path) || !@is_file(PEAR_TARBALL_DIR . '/' . $basename) && !@is_file($path)) { return PEAR::raiseError("release download:: no version information found"); } $basename = substr($basename, 0, -4); } if ($uncompress) { $basename .= '.tar'; } else { $basename .= '.tgz'; } $path = PEAR_TARBALL_DIR . '/' . $basename; if (isset($path)) { if (!isset($log_release)) { $log_release = $release_id; } release::logDownload($package_id, $log_release, $log_file); header('Content-Disposition: attachment;filename=' . $basename); header('Content-type: application/octet-stream'); header('X-Sendfile: ' . '/local/www/sites/pecl.php.net/public_html/packages/' . $basename); return true; } header('HTTP/1.0 404 Not Found'); print 'File not found'; }
<?php /* release.php * * Takes a tag to release, and syncs it to WordPress.org * * Notes: * - You must pass a directory path to the GIT repo of your plugin as the first parameter * - You must pass in a tag to the script as the second parameter * - You may be prompted for your SVN password. * - If the tag already exists in SVN the script will exit. * - The script will handle both added and deleted files. */ include_once 'class.release.php'; $release_script = new release(); $release_script->process_args(); $release_script->get_config(); $release_script->set_temp_dir_and_file(); $release_script->validate_git_repo(); $release_script->validate_svn_repo(); $release_script->checkout_svn_repo(); $release_script->extract_git_repo(); $release_script->generate_readme(); $release_script->delete_files_and_directories(); $release_script->add_files_to_svn(); $release_script->delete_files_from_svn(); $release_script->update_files_to_svn(); $release_script->confirm_commit(); $release_script->commit_svn_changes();
/** * Download release via HTTP * * @param string Name of the package * @param string Version string * @param string Filename * @param boolean Uncompress file before downloading? * @return mixed * @static */ static function HTTPdownload($package, $version = null, $file = null, $uncompress = false) { global $dbh; include_once 'pear-database-package.php'; $package_id = package::info($package, 'packageid', true); if (!$package_id) { return PEAR::raiseError("release download:: package '" . htmlspecialchars($package) . "' does not exist"); } elseif (PEAR::isError($package_id)) { return $package_id; } if ($file !== null) { if (substr($file, -4) == '.tar') { $file = substr($file, 0, -4) . '.tgz'; $uncompress = true; } $row = $dbh->getRow("SELECT fullpath, `release`, id FROM files " . "WHERE basename LIKE ?", array($file), DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } elseif ($row === null) { return PEAR::raiseError("File '{$file}' not found"); } $path = $row['fullpath']; $log_release = $row['release']; $log_file = $row['id']; $basename = $file; } elseif ($version === null) { // Get the most recent version $row = $dbh->getRow("SELECT id FROM releases " . "WHERE package = {$package_id} " . "ORDER BY releasedate DESC", DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } $release_id = $row['id']; } elseif (release::isValidState($version)) { $version = strtolower($version); // Get the most recent version with a given state $row = $dbh->getRow("SELECT id FROM releases " . "WHERE package = {$package_id} " . "AND state = '{$version}' " . "ORDER BY releasedate DESC", DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } $release_id = $row['id']; if (!isset($release_id)) { return PEAR::raiseError("{$package} does not have any releases with state \"{$version}\""); } } else { // Get a specific release $row = $dbh->getRow("SELECT id FROM releases " . "WHERE package = {$package_id} " . "AND version = '{$version}'", DB_FETCHMODE_ASSOC); if (PEAR::isError($row)) { return $row; } $release_id = $row['id']; } if (!isset($path) && isset($release_id)) { $sql = "SELECT fullpath, basename, id FROM files WHERE `release` = " . $release_id; $row = $dbh->getRow($sql, DB_FETCHMODE_ORDERED); if (PEAR::isError($row)) { return $row; } list($path, $basename, $log_file) = $row; if (empty($path) || !@is_file($path)) { return PEAR::raiseError("release download:: no version information found"); } } if (isset($path)) { if (!isset($log_release)) { $log_release = $release_id; } release::logDownload($package_id, $log_release, $log_file); header('Last-modified: ' . gmdate('D, d M Y H:i:s \\G\\M\\T', filemtime($path))); header('Content-type: application/octet-stream'); if ($uncompress) { $tarname = preg_replace('/\\.tgz\\z/', '.tar', $basename); header('Content-disposition: attachment; filename="' . $tarname . '"'); readgzfile($path); } else { header('Content-disposition: attachment; filename="' . $basename . '"'); header('Content-length: ' . filesize($path)); readfile($path); } return true; } header('HTTP/1.0 404 Not Found'); echo 'File not found'; }
} else { $uri = $_GET['type']; $elems = explode('_', $uri); $type = $elems[0]; $argument = htmlentities(strip_tags(str_replace($type . '_', '', $uri))); } switch ($type) { case 'latest': include_once 'pear-database-release.php'; $items = release::getRecent(10); $channel_title = 'PEAR: Latest releases'; $channel_description = 'The latest releases in PEAR.'; break; case 'popular': include_once 'pear-database-release.php'; $items = release::getPopular(10, true); foreach ($items as $i => $item) { $items[$i]['releasenotes'] = 'Downloads per day: ' . number_format($item['releasenotes'], 2); } $channel_title = 'PEAR: Popular releases'; $channel_description = 'The most popular releases in PEAR.'; break; case 'bug': $_REQUEST = array('id' => $argument, 'format' => 'rss'); include dirname(dirname(__FILE__)) . '/bugs/rss/bug.php'; exit; case 'user': $user = $argument; include_once 'pear-database-user.php'; if (!user::exists($user)) { rss_bailout();
} else { $errors[] = 'There seems to have been a problem with saving the REST files - please inform the webmasters at ' . PEAR_WEBMASTER_EMAIL; } } include_once 'pear-database-release.php'; $file = release::upload($info->getPackage(), $info->getVersion(), $info->getState(), $info->getNotes(), $distfile, md5_file($distfile), $info, $packagexml, $compatible_pxml); } if (PEAR::isError($file)) { $ui = $file->getUserInfo(); $errors[] = 'Error while uploading package: ' . $file->getMessage() . ($ui ? " ({$ui})" : ''); break; } @unlink($distfile); PEAR::pushErrorHandling(PEAR_ERROR_CALLBACK, 'report_warning'); include_once 'pear-database-release.php'; release::promote($info, $file); PEAR::popErrorHandling(); // Roadmap thingo require_once 'roadmap/info.php'; $sql = ' SELECT b.id, b.sdesc, b.email, b.reporter_name, b.bug_type, b.handle FROM bugdb b, bugdb_roadmap_link l, bugdb_roadmap r WHERE r.package = ? AND r.roadmap_version = ? AND l.roadmap_id = r.id AND b.id = l.id AND b.status = ? ORDER BY b.bug_type, b.id'; $values = array($info->getPackage(), $info->getVersion(), 'Closed');
$argument = htmlentities(strip_tags(str_replace($type . '_', '', $url_redirect))); } else { $uri = $_GET['type']; $elems = explode('_', $uri); $type = $elems[0]; $argument = htmlentities(strip_tags(str_replace($type . '_', '', $uri))); } if (PEAR_CHANNELNAME == 'pecl.php.net') { $channel_base = "PECL"; } else { $channel_base = "PEAR"; } switch ($type) { case 'latest': include_once 'pear-database.php'; $items = release::getRecent(10); $channel_title = $channel_base . ': Latest releases'; $channel_description = 'The latest releases in ' . $channel_base . '.'; break; case 'user': $user = $argument; if (!user::exists($user)) { rss_bailout(); } $name = user::info($user, "name"); $channel_title = $channel_base . ": Latest releases for " . $user; $channel_description = "The latest releases for the developer " . $user . " (" . $name['name'] . ")"; $items = user::getRecentReleases($user); break; case 'pkg': $package = $argument;
+----------------------------------------------------------------------+ | Copyright (c) 2001-2003 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 2.02 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available at through the world-wide-web at | | http://www.php.net/license/2_02.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Martin Jansen <*****@*****.**> | +----------------------------------------------------------------------+ $Id$ */ $recent = release::getRecent(); if (@sizeof($recent) > 0) { $RSIDEBAR_DATA = "<strong>Recent Releases:</strong>\n"; $RSIDEBAR_DATA .= '<table class="sidebar-releases">' . "\n"; foreach ($recent as $release) { extract($release); $releasedate = make_utc_date(strtotime($releasedate), 'Y-m-d'); $desc = substr($releasenotes, 0, 40); if (strlen($releasenotes) > 40) { $desc .= '...'; } $desc = htmlentities($desc); $RSIDEBAR_DATA .= "<tr><td valign=\"top\" class=\"compact\">"; $RSIDEBAR_DATA .= "<a href=\"/package/" . $name . "/\">"; $RSIDEBAR_DATA .= "{$name} {$version}</a><br /><i>{$releasedate}:</i> {$desc}</td></tr>"; }
$today = date("D, jS M y"); foreach ($recent as $release) { $releasedate = format_date(strtotime($release['releasedate']), "D, jS M y"); if ($releasedate == $today) { $releasedate = "today"; } $RSIDEBAR_DATA .= "<tr><td>"; $RSIDEBAR_DATA .= "<a href=\"/package/" . $release['name'] . "/\">"; $RSIDEBAR_DATA .= wordwrap($release['name'], 25, "\n", 1) . ' ' . $release['version'] . '</a><br /> <small>(' . $releasedate . ')</small></td></tr>'; } $feed_link = '<a href="/feeds/" title="Information about XML feeds for the PEAR website"><img src="/gifs/feed.png" width="16" height="16" alt="" /></a>'; $RSIDEBAR_DATA .= "<tr><td> </td></tr>\n"; $RSIDEBAR_DATA .= '<tr><td style="text-align: right">' . $feed_link . "</td></tr>\n"; $RSIDEBAR_DATA .= "</table>\n"; } $popular = release::getPopular(5); if (!empty($popular)) { $RSIDEBAR_DATA .= "<strong>Popular Packages*:</strong>\n"; $RSIDEBAR_DATA .= '<table class="sidebar-releases">' . "\n"; foreach ($popular as $package) { $RSIDEBAR_DATA .= "<tr><td>"; $RSIDEBAR_DATA .= "<a href=\"/package/" . $package['name'] . "/\">"; $RSIDEBAR_DATA .= wordwrap($package['name'], 25, "\n", 1) . ' ' . $package['version'] . '</a><br /> <small>(' . number_format($package['d'], 2) . ')</small></td></tr>'; } $feed_link = '<a href="/feeds/" title="Information about XML feeds for the PEAR website"><img src="/gifs/feed.png" width="16" height="16" alt="" /></a>'; $RSIDEBAR_DATA .= "<tr><td><small>* downloads per day</small></td></tr>\n"; $RSIDEBAR_DATA .= '<tr><td style="text-align: right">' . $feed_link . "</td></tr>\n"; $RSIDEBAR_DATA .= "</table>\n"; } $proposals = proposal::getRecent($dbh, 5); if (!empty($proposals)) {
<?php if (!isset($_GET['start']) or !isset($_GET['end']) or !is_numeric($_GET['start']) or !is_numeric($_GET['end'])) { response_header('ERROR'); report_error('You must send a start and end time in timestamp format'); response_footer(); exit; } $start = (int) $_GET['start']; $end = (int) $_GET['end']; $allowed_types = array('pecl', 'pear'); if (!isset($_GET['type']) or !in_array(strtolower($_GET['type']), $allowed_types)) { $type = 'pear'; } else { $type = htmlspecialchars(strtolower($_GET['type']), ENT_QUOTES); } include_once 'pear-database-release.php'; $releases = release::getDateRange($start, $end, $type); var_export(serialize($releases));
/** * 更新发布时间 * @return json */ public function doUpdateTime() { //判断权限 if (!in_array($_SESSION['group'], array(3, 4))) { echo json_encode(array('error' => true, 'msg' => '你没权限进行审核操作')); return; } $id = intval($_POST['id']); $time = $_POST['time'] . ':00'; //$is_time = strptime($_POST['time'],'Y-m-d H:i:s'); $is_time = release::checkTime($time); if ($is_time === false) { echo json_encode(array('error' => true, 'msg' => '时间格式错误')); return; } if (empty($id)) { echo json_encode(array('error' => true, 'msg' => '选择的文章错误')); return; } $date = date('Ymd', strtotime($time)); $url = $this->app->cfg['game'][$_SESSION['gameid']]['host'] . 'news/' . $date . '/' . $id . '.html'; $query = $this->app->orm()->query(); $bol = $query->clear()->addTable('Article')->addWhere('ArticleId', $id)->addWhere('GameType', intval($_SESSION['gameid']))->addValue('PublishTime', $time)->addValue('Url', $url)->update(); if (empty($bol)) { echo json_encode(array('error' => true, 'msg' => '选择的文章错误')); } else { $this->sync($id); echo json_encode(array('error' => false, 'msg' => '时间修改成功', 'time' => $time)); } }