Example #1
0
            $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']);
Example #2
0
 /**
  * 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();
Example #4
0
 /**
  * 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';
 }
Example #5
0
} 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();
Example #6
0
         } 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');
Example #7
0
    $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;
Example #8
0
   +----------------------------------------------------------------------+
   | 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&nbsp;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>";
    }
Example #9
0
    $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>&nbsp;</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)) {
Example #10
0
<?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));
Example #11
0
 /**
  * 更新发布时间
  * @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));
     }
 }