- Fixup the judge reports for the new user system

This commit is contained in:
dave 2009-02-02 06:31:39 +00:00
parent 3d1483975a
commit f83a04ab04

View File

@ -21,6 +21,17 @@
Boston, MA 02111-1307, USA.
*/
/* Take the language array in users_judge, unserialize it, and join it
* with a space */
function report_judges_languages(&$report, $text)
{
$l = unserialize($text);
return join(' ', $l);
}
/* Components: languages, teams */
$report_judges_fields = array(
@ -99,19 +110,20 @@ $report_judges_fields = array(
'table' => 'users.organization'),
'languages' => array(
'name' => 'Judge -- Languages (REQUIRES MySQL 5.0)',
'name' => 'Judge -- Languages',
'header' => 'Lang',
'width' => 0.75,
'table' => "GROUP_CONCAT(judges_languages.languages_lang ORDER BY judges_languages.languages_lang SEPARATOR ' ')",
'group_by' => array('judges.id'),
'components' => array('languages')),
'table' => 'users_judge.languages',
'exec_function' => 'report_judges_languages',
'components' => array('users_judge')),
'complete' => array(
'name' => 'Judge -- Registration Complete',
'header' => 'Cmpl',
'width' => 0.4,
'table' => 'judges.complete',
'value_map' => array ('no' => 'No', 'yes' => 'Yes')),
'table' => 'users_judge.judge_complete',
'value_map' => array ('no' => 'No', 'yes' => 'Yes'),
'components' => array('users_judge')),
'year' => array(
'name' => 'Judge -- Year',
@ -174,7 +186,7 @@ $report_judges_fields = array(
'header' => 'Student(s)',
'width' => 3.0,
'table' => "GROUP_CONCAT(students.firstname, ' ', students.lastname ORDER BY students.lastname SEPARATOR ', ')",
'group_by' => array('judges.id','judges_teams_timeslots_projects_link.id'),
'group_by' => array('users.id','judges_teams_timeslots_projects_link.id'),
'components' => array('teams', 'projects', 'students')),
'project_timeslot_start' => array(
@ -220,17 +232,14 @@ $report_judges_fields = array(
$fields = $report_judges_fields;
$year = $report['year'];
/* For now languages is a module, doesn't duplicate rows, but it requries mysql 5 for
* a GROUP_CONCAT */
$languages_from = '';
if(in_array('languages', $components)) {
$languages_from = 'LEFT JOIN judges_languages ON judges_languages.judges_id=judges.id';
if(in_array('users_judge', $components)) {
$uj_from = 'LEFT JOIN users_judge ON users_judge.users_id=users.id';
}
$teams_from = '';
$teams_where = '';
if(in_array('teams', $components)) {
$teams_from = "LEFT JOIN judges_teams_link ON judges_teams_link.judges_id=judges.id
$teams_from = "LEFT JOIN judges_teams_link ON judges_teams_link.users_id=users.id
LEFT JOIN judges_teams ON judges_teams.id=judges_teams_link.judges_teams_id";
$teams_where = "AND judges_teams_link.year='$year'
AND judges_teams.year='$year'";
@ -255,22 +264,21 @@ $report_judges_fields = array(
}
/* Search the report for a filter based on judge year */
$year_where = "judges_years.year='$year'";
$year_where = "AND users.year='$year'";
foreach($report['filter'] as $d) {
if($d['field'] == 'year') {
/* Don't interally filter on year, we'll do it
* externally */
$year_where = '1';
/* Don't interally filter on year, we'll do it externally */
$year_where = '';
}
}
$q = " FROM users
LEFT JOIN judges_years ON judges_years.judges_id = judges.id
$languages_from
$teams_from
$projects_from
$students_from
$uj_from
WHERE
users.types LIKE '%judge%'
$year_where
$teams_where
$projects_where