PDA

View Full Version : Display only latest version in issuelist queries


farhad.khan
14 Oct 2010, 19:23
Hi,
We work with multiple versions within the same project and find it very daunting that the default issue list shows issues from all versions and all statuses.

We are trying to change it such that the default do=issuelist query does the following. Any help will be much appreciated.
1. Check for the latest version
2. Load only issues in the latest version and with status "any active"

Here's how far I've gone:
In project.php @ if ($_REQUEST['do'] == 'issuelist'), I could add the following
if (!empty($vbulletin->GPC['appliesversionid']))
{
if ($vbulletin->GPC['appliesversionid'] == -1)
{
$version_filter = -1;
}
else
{
$type = $vbulletin->GPC['appliesversionid'][0];
$value = intval(substr($vbulletin->GPC['appliesversionid'], 1));
if ($type == 'g')
{
$group_filter = $value;
}
else
{
$version_filter = $value;
}
}
}
else
{
/***** Load latest version ******/
/***** Apply version filter ******/
}

What I don't know is how to load the latest version and how to apply the filter.
The latest version could probably be found by doing the following (found frmo another post). But how do I apply the filter?

$version = $db->query_first("
SELECT versionname
FROM mytable_pt_projectversion
WHERE projectid = 2 AND projectversiongroupid = 1 AND displayorder = 10;
");

farhad.khan
16 Oct 2010, 13:27
Never mind, I think I know how to do this. I'll try it out and post my results here.

farhad.khan
22 Oct 2010, 16:20
Here's the code that worked to load only issues from the latest version in the issuelist by default.

It's a bit of a hack cause we shouldn't be modifying the variable $vbulletin->GPC['appliesversionid'], but it works!


if (empty($vbulletin->GPC['appliesversionid']))
{
$version = $db->query_first("SELECT projectversionid " .
"FROM pt_projectversion " .
"WHERE projectid = $project " .
"ORDER BY effectiveorder DESC LIMIT 1");

$vbulletin->GPC['appliesversionid'] = "v".$version['projectversionid'];
}
The above should be placed just after the code below -

if ($_REQUEST['do'] == 'issuelist')
{
$vbulletin->input->clean_array_gpc('r', array(
'projectid' => TYPE_UINT,
'issuetypeid' => TYPE_NOHTML,
'appliesversionid' => TYPE_NOHTML,
'issuestatusid' => TYPE_INT,
'pagenumber' => TYPE_UINT,
'sortfield' => TYPE_NOHTML,
'sortorder' => TYPE_NOHTML
));

$project = verify_project($vbulletin->GPC['projectid']);