Skip to content

Commit

Permalink
ProjectsAction: Fix job_latest_created field
Browse files Browse the repository at this point in the history
* MAX(jobs.created) selects the highest value of that column, which
  seems good, but actually isn't. Because it should instead get
  the created time for job_latest. Needs a separate query.

  It was showing the same timestamp for all projects.

* Follows-up 57b101b

* Misc.: Code conventions
  • Loading branch information
Krinkle committed Jun 12, 2012
1 parent 57b101b commit af550a1
Showing 1 changed file with 27 additions and 24 deletions.
51 changes: 27 additions & 24 deletions inc/actions/ProjectsAction.php
Expand Up @@ -18,41 +18,41 @@ public function doAction() {
$db = $this->getContext()->getDB();
$request = $this->getContext()->getRequest();

$filterSort = $request->getVal( "sort", "name" );
$filterSortOrder = $request->getVal( "sort_order", "asc" );
$filterSort = $request->getVal( 'sort', 'name' );
$filterSortOrder = $request->getVal( 'sort_order', 'asc' );

if ( !in_array( $filterSort, array( "name", "id", "creation", "jobcount" ) ) ) {
$this->setError( "invalid-input", "Unknown sort `$filterSort`." );
if ( !in_array( $filterSort, array( 'name', 'id', 'creation', 'jobcount' ) ) ) {
$this->setError( 'invalid-input', "Unknown sort `$filterSort`." );
return;
}

if ( !in_array( $filterSortOrder, array( "asc", "desc" ) ) ) {
$this->setError( "invalid-input", "Unknown sort order `$filterSortOrder`." );
if ( !in_array( $filterSortOrder, array( 'asc', 'desc' ) ) ) {
$this->setError( 'invalid-input', "Unknown sort order `$filterSortOrder`." );
return;
}

$filterSortOrderQuery = "";
$filterSortOrderQuery = '';
switch ( $filterSortOrder ) {
case "asc":
$filterSortOrderQuery = "ASC";
case 'asc':
$filterSortOrderQuery = 'ASC';
break;
case "desc":
$filterSortOrderQuery = "DESC";
case 'desc':
$filterSortOrderQuery = 'DESC';
break;
}

$filterSortQuery = "";
$filterSortQuery = '';
switch ( $filterSort ) {
case "name":
case 'name':
$filterSortQuery = "ORDER BY users.name $filterSortOrderQuery";
break;
case "id":
case 'id':
$filterSortQuery = "ORDER BY users.id $filterSortOrderQuery";
break;
case "creation":
case 'creation':
$filterSortQuery = "ORDER BY users.created $filterSortOrderQuery";
break;
case "jobcount":
case 'jobcount':
$filterSortQuery = "ORDER BY job_count $filterSortOrderQuery";
break;
}
Expand All @@ -64,8 +64,7 @@ public function doAction() {
users.name as user_name,
users.created as user_created,
COUNT(jobs.id) as job_count,
MAX(jobs.id) as job_latest,
MAX(jobs.created) as job_latest_created
MAX(jobs.id) as job_latest
FROM jobs, users
WHERE users.id = jobs.user_id
GROUP BY jobs.user_id
Expand All @@ -75,13 +74,17 @@ public function doAction() {
if ( $projectRows ) {
foreach ( $projectRows as $projectRow ) {
$project = array(
"id" => intval( $projectRow->user_id ),
"name" => $projectRow->user_name,
"jobCount" => intval( $projectRow->job_count ),
"jobLatest" => intval( $projectRow->job_latest ),
'id' => intval( $projectRow->user_id ),
'name' => $projectRow->user_name,
'jobCount' => intval( $projectRow->job_count ),
'jobLatest' => intval( $projectRow->job_latest ),
);
self::addTimestampsTo( $project, $projectRow->user_created, "created" );
self::addTimestampsTo( $project, $projectRow->job_latest_created, "jobLatestCreated" );
$job_latest_created = $db->getOne(str_queryf(
'SELECT created FROM jobs WHERE id=%u;',
$projectRow->job_latest
));
self::addTimestampsTo( $project, $projectRow->user_created, 'created' );
self::addTimestampsTo( $project, $job_latest_created, 'jobLatestCreated' );
$projects[] = $project;
}
}
Expand Down

0 comments on commit af550a1

Please sign in to comment.