- Change how the num students report column works. It was failing when awards

were added because of the row duplication.
This commit is contained in:
dave 2007-12-30 21:05:54 +00:00
parent ca52174cfe
commit eaad48d6d0
2 changed files with 14 additions and 16 deletions

View File

@ -652,8 +652,7 @@ foreach($report_stock as $n=>$v) {
$group_change = false; $group_change = false;
/* See if any of the "group" fields have changed */ /* See if any of the "group" fields have changed */
foreach($report['group'] as $x=>$g) { foreach($report['group'] as $x=>$g) {
$f = $g['field']; $c = $fieldname[$g['field']];
$c = $fieldname[$f];
if($last_group_data[$c] != $i[$c]) if($last_group_data[$c] != $i[$c])
$group_change = true; $group_change = true;
$last_group_data[$c] = $i[$c]; $last_group_data[$c] = $i[$c];
@ -697,7 +696,7 @@ foreach($report_stock as $n=>$v) {
if(is_array($fields[$f]['value_map'])) { if(is_array($fields[$f]['value_map'])) {
$v = $fields[$f]['value_map'][$i["C$o"]]; $v = $fields[$f]['value_map'][$i["C$o"]];
} else if(is_callable($fields[$f]['exec_function'])) { } else if(is_callable($fields[$f]['exec_function'])) {
$v = call_user_func_array($fields[$f]['exec_function'], array($i["C$o"])); $v = call_user_func_array($fields[$f]['exec_function'], array($report, $i["C$o"]));
// } else if(isset($fields[$f]['exec_code'])) { // } else if(isset($fields[$f]['exec_code'])) {
// Somethign like this, how do we pass $i["C$o"] in? // Somethign like this, how do we pass $i["C$o"] in?
// $v = exec($fields[$f]['exec_code']); // $v = exec($fields[$f]['exec_code']);

View File

@ -21,11 +21,20 @@
Boston, MA 02111-1307, USA. Boston, MA 02111-1307, USA.
*/ */
function report_students_i18n_fr($text) function report_students_i18n_fr(&$report, $text)
{ {
return i18n($text, array(), array(), 'fr'); return i18n($text, array(), array(), 'fr');
} }
function reports_students_numstudents(&$report, $text)
{
$year = $report['year'];
$q = mysql_query("SELECT students.id FROM students
WHERE students.registrations_id='$text'
AND students.year='$year'");
return mysql_num_rows($q);
}
$report_students_fields = array( $report_students_fields = array(
'pn' => array( 'pn' => array(
'name' => 'Project Number', 'name' => 'Project Number',
@ -190,9 +199,8 @@ $report_students_fields = array(
'name' => 'Project -- Number of Students', 'name' => 'Project -- Number of Students',
'header' => 'Stu.', 'header' => 'Stu.',
'width' => 0.5, 'width' => 0.5,
'table' => 'COUNT(numstudents.id)', 'table' => 'students.registrations_id',
'components' => array('numstudents'), 'exec_function' => 'reports_students_numstudents'),
'group_by' => array('numstudents.id') ),
'address' => array( 'address' => array(
'name' => 'Student Address -- Street Address', 'name' => 'Student Address -- Street Address',
@ -524,13 +532,6 @@ $report_students_fields = array(
AND award_types.year='$year' "; AND award_types.year='$year' ";
} }
if(in_array('numstudents', $components)) {
/* This requires some extra gymnastics and will duplicate
* students/projects if they have won multiple awards */
$numstudents_join = "LEFT JOIN students AS numstudents ON students.registrations_id=numstudents.registrations_id";
$numstudents_where = " AND numstudents.year='$year'";
}
if(in_array('awards_nominations', $components)) { if(in_array('awards_nominations', $components)) {
$awards_join = "LEFT JOIN project_specialawards_link $awards_join = "LEFT JOIN project_specialawards_link
ON(projects.id=project_specialawards_link.projects_id), ON(projects.id=project_specialawards_link.projects_id),
@ -574,7 +575,6 @@ $report_students_fields = array(
$tour_join $tour_join
$awards_join $awards_join
$partner_join $partner_join
$numstudents_join
WHERE WHERE
students.year='$year' students.year='$year'
AND projects.year='$year' AND projects.year='$year'
@ -584,7 +584,6 @@ $report_students_fields = array(
AND (registrations.status='complete' OR registrations.status='paymentpending') AND (registrations.status='complete' OR registrations.status='paymentpending')
$awards_where $awards_where
$tour_where $tour_where
$numstudents_where
"; ";
return $q; return $q;