blob: 11db0117a4af1760fca68af91b6791b18dbc4350 [file] [log] [blame]
<?php
require_once "/home/data/httpd/eclipse-php-classes/system/dbconnection_projectinfo_ro.class.php";
require_once "/home/data/httpd/eclipse-php-classes/system/app.class.php";
#*****************************************************************************
#
# rssfeed_downloads.php
#
# Author: Karl Matthias
# Date: 2006-11-16
#
# Description: Controller for RSS v2 feed
#
# HISTORY: 2007-08-30 - Now hits the ProjectInfo table to generate the feed
# 2007-09-10 - Moved to /downloads from committertools
#
#*****************************************************************************
$App = new App();
$App->runStdWebAppCacheable();
$ErrorMessage = "";
function globalDisplayErrorHandler($errno, $errmsg, $filename, $linenum, $vars) {
$errortype = array (
E_ERROR => 'Error',
E_WARNING => 'Warning',
E_PARSE => 'Parsing Error',
E_NOTICE => 'Notice',
E_CORE_ERROR => 'Core Error',
E_CORE_WARNING => 'Core Warning',
E_COMPILE_ERROR => 'Compile Error',
E_COMPILE_WARNING => 'Compile Warning',
E_USER_ERROR => 'User Error',
E_USER_WARNING => 'User Warning',
E_USER_NOTICE => 'User Notice',
E_STRICT => 'Runtime Notice',
E_RECOVERABLE_ERROR => 'Catchable Fatal Error');
switch($errno) {
case E_NOTICE: // discard NOTICEs
case E_STRICT: // discard RUNTIME notices for deprecated usages
return;
default:
ob_end_clean();
echo "<p><table cellpadding=10 width=400 bgcolor=#ffcccc><tr><td><font size=+2>Trouble: </font>";
echo "PHP $errortype[$errno]:<br>$errmsg<br>$filename ($linenum)";
$mysql_error_func = 'mysql_error_check';
if(function_exists($mysql_error_func)) {
$mysql_error_func();
}
echo "</table></p>\n";
}
}
# Set a real error handler
set_error_handler("globalDisplayErrorHandler");
# Start output buffering so we can print errors in HTML and output in XML
ob_start();
# Start of XML
echo "<?xml version=\"1.0\"?>";
?>
<rss version="2.0">
<channel>
<title>Eclipse.org Downloads</title>
<link>http://www.eclipse.org/downloads/</link>
<description>New downloads from Eclipse.org in the last 2 weeks.</description>
<language>en-us</language>
<pubDate><?= date("D, j M Y H:i:s T", time()); ?></pubDate>
<lastBuildDate><?= date("D, j M Y H:i:s T", time()); ?></lastBuildDate>
<generator>org.eclipse.php.rssfeed_downloads</generator>
<managingEditor>webmaster@eclipse.org</managingEditor>
<webMaster>webmaster@eclipse.org</webMaster>
<?php
# Connect to database
$dbc = new DBConnectionProjectInfo();
$dbh = $dbc->connect();
# Find the list of ProjectInfoIDs where a release was noted in the last 6 months
$sql = "SELECT ProjectID, ProjectInfo.ProjectInfoID AS ID FROM ProjectInfo, ProjectInfoValues
WHERE ProjectInfo.ProjectInfoID = ProjectInfoValues.ProjectInfoID
AND MainKey = 'release'
AND date(Value) > now() - interval 183 day
ORDER BY date(Value)";
# Fetch complete resultset
$result = mysql_query($sql, $dbh);
# Iterate the resultset and output each record
while($row = mysql_fetch_assoc($result)) {
if(getProjInfValue($row['ID'], 'release', 'status') == 'completed') {
$name = getProjInfValue($row['ID'], 'release', 'name');
$url = getProjInfValue($row['ID'], 'release', 'download');
$date = date("D, j M Y H:i:s T", strtotime(getProjInfValue($row['ID'], 'release', 'date')));
if(!preg_match('/http:\/\//', $url)) {
$url = "http://www.eclipse.org/$url";
}
?>
<item>
<title>
<?= $row['ProjectID'] . " " . $name ?>
</title>
<link><?= $url ?></link>
<description>New file download for the <?= $row['ProjectID'] ?> project.
<?= $url ?>
</description>
<pubDate><?= $date ?></pubDate>
<guid><?= $url ?></guid>
</item>
<?php
}
}
# We're done with the DB
mysql_free_result($result);
$dbc->disconnect();
?>
</channel>
</rss>
<?php
# Clean up
$rs = null;
$rs_info = null;
$dbh = null;
$dbc = null;
# We need to output XML, not HTML
header('Content-type: application/xml');
# Send the buffer
ob_end_flush();
# Return the requested ProjectInfoValue
function getProjInfValue($ProjectInfoID, $MainKey, $SubKey) {
global $dbh;
if($SubKey != NULL) {
$SubKey = "AND SubKey = '$SubKey'";
}
$query = "SELECT Value FROM ProjectInfo as PI, ProjectInfoValues as PIV " .
"WHERE PI.ProjectInfoID = PIV.ProjectInfoID " .
"AND MainKey = '$MainKey' $SubKey " .
"AND PI.ProjectInfoID = $ProjectInfoID";
$result = mysql_query($query, $dbh);
if(!$result) {
ob_end_clean();
echo "busted! $query";
}
$row = mysql_fetch_assoc($result);
return $row['Value'];
}
?>