mike.morgan%oregonstate.edu f59bbc1df6 Fixed newest list type, which should have been pointing at main.DateAdded instead of version.DateUpdated. See bug 333530.
git-svn-id: svn://10.0.0.236/trunk@194114 18797224-902f-48f8-a5cc-f745e15eee43
2006-04-11 07:44:05 +00:00

96 lines
2.4 KiB
PHP

<?php
/**
* Syndication for commonly referenced lists.
*
* @package amo
* @subpackage docs
*/
startProcessing('rss.tpl',$memcacheId,$compileId,'xml');
/**
* Pull our input params.
*/
$clean['app']= (!empty($_GET['app']) && ctype_alpha($_GET['app'])) ? $_GET['app'] : null;
$rsstype = !empty($_GET['type']) && ctype_alpha($_GET['type']) ? $_GET['type'] : null;
switch (strtolower($rsstype)) {
case 'themes':
case 't':
$clean['type'] = 't';
break;
case 'extensions':
case 'e':
default:
$clean['type'] = 'e';
break;
}
$rsslist = !empty($_GET['list']) && ctype_alpha($_GET['list']) ? $_GET['list'] : null;
switch (strtolower($rsslist)) {
case 'popular':
$rssOrderBy = 'm.downloadcount desc, m.totaldownloads desc, m.rating desc, m.dateupdated desc, m.name asc';
break;
case 'updated':
$rssOrderBy = 'v.dateupdated desc, m.name asc';
break;
case 'rated':
$rssOrderBy = 'm.rating desc, m.downloadcount desc, m.name asc';
break;
case 'newest':
default:
/**
* @TODO change this to dateapproved once the db has this in it.
*/
$rssOrderBy = 'm.dateadded desc, m.name asc';
break;
}
// If we get here, we're going to have to pull DB contents.
require_once('includes.php');
// Build query for RSS data.
$sql['app'] = $clean['app']; // Already ok for sql, type was checked (alpha).
$sql['type'] = $clean['type']; // Already ok for sql, type was checked (alpha).
$_rssSql = "
SELECT
m.id,
m.name as title,
m.type,
m.description,
v.version,
v.vid,
v.dateupdated,
a.appname
FROM
main m
INNER JOIN version v ON m.id = v.id
INNER JOIN (
SELECT v.id, v.appid, v.osid, max(v.vid) as mxvid
FROM version v
WHERE approved = 'YES' group by v.id, v.appid, v.osid) as vv
ON vv.mxvid = v.vid AND vv.id = v.id
INNER JOIN applications a ON a.appid = v.appid
WHERE
v.approved = 'yes' AND
a.appname = '{$sql['app']}' AND
m.type = '{$sql['type']}'
GROUP by
m.id
ORDER BY
{$rssOrderBy}
LIMIT 0,10
";
// Get data, then set the results.
$db->query($_rssSql,SQL_ALL,SQL_ASSOC);
$_rssData = $db->record;
$tpl->assign(
array(
'data'=>$_rssData,
'list'=>ucfirst($rsslist)
)
);
?>