function mp_response_table($year, $xml, $rep_info, $questionnaire_report, $type_summary, $last_year_report) { $last_year_data = array(); foreach ($last_year_report as $key => $row) { if (is_array($row)) { $last_year_data[] = array('name' => $row['name'], 'person_id' => $row['person_id'], 'category' => $row['category'], 'response' => $row['responded_mean'], 'low' => $row['responded_95_low'], 'high' => $row['responded_95_high']); } } usort($last_year_data, 'by_response'); $position = 0; $same_stat = 1; $last_response = -1; $last_low = -1; $fymp_ranked = array(); $fymp_response = array(); $fymp_category = array(); foreach ($last_year_data as $key => $row) { if ($row['response'] != $last_response || $row['low'] != $last_low) { $position += $same_stat; $same_stat = 1; $last_response = $row['response']; $last_low = $row['low']; } else { $same_stat++; } $fymp_ranked[$row['person_id']] = $position; $fymp_response[$row['person_id']] = $row['response']; $fymp_category[$row['person_id']] = $row['category']; } # Read in data $data = array(); foreach ($questionnaire_report as $key => $row) { if (is_array($row)) { $data['data'][] = array('person_id' => $key, 'name' => $row['name'], 'party' => $row['party'], 'area' => $row['area'], 'sent' => $row['dispatched_success'], 'category' => $row['category'], 'notes' => category_lookup($row['category']), 'response' => $row['responded_mean'], 'low' => $row['responded_95_low'], 'high' => $row['responded_95_high'], 'responded' => $row['responded'], 'responded_outof' => $row['responded_outof'], 'fymp_rank' => array_key_exists($key, $fymp_ranked) ? $fymp_ranked[$key] : null, 'fymp_response' => array_key_exists($key, $fymp_response) ? $fymp_response[$key] : null, 'fymp_notes' => array_key_exists($key, $fymp_category) ? category_lookup($fymp_category[$key]) : ''); } else { $data['info'][$key] = $row; } } $non_mp_sent = 0; foreach ($type_summary as $type => $row) { if ($type != 'westminster' && $type != 'total') { $non_mp_sent += $row['dispatched_success']; } } $data['info']['non_mp_sent'] = $non_mp_sent; # Sort data function by_area($a, $b) { return strcmp($a['area'], $b['area']); } function by_sent($a, $b) { if ($a['sent'] < $b['sent']) { return 1; } elseif ($a['sent'] > $b['sent']) { return -1; } return 0; } $sort = get_http_var('o'); if ($sort == 'n') { usort($data['data'], 'by_name'); } elseif ($sort == 'c') { usort($data['data'], 'by_area'); } elseif ($sort == 's') { usort($data['data'], 'by_sent'); } else { $sort = 'r'; usort($data['data'], 'by_response'); } $data['info']['sort'] = $sort; $data['info']['mp'] = null; if (count($rep_info)) { $key = $rep_info['parlparse_person_id']; $row = $questionnaire_report[$key]; $data['info']['mp'] = array_merge($row, array('pc' => $rep_info['postcode'], 'notes' => category_lookup($row['category']), 'response' => $row['responded_mean'], 'low' => $row['responded_95_low'], 'high' => $row['responded_95_high'], 'fymp_rank' => array_key_exists($key, $fymp_ranked) ? $fymp_ranked[$key] : null, 'fymp_response' => array_key_exists($key, $fymp_response) ? $fymp_response[$key] : null, 'fymp_notes' => array_key_exists($key, $fymp_category) ? category_lookup($fymp_category[$key]) : '')); } # Output data global $year_bar; template_draw($xml ? 'stats-mp-twfy' : 'stats-mp-performance', array("title" => "WriteToThem.com Zeitgeist {$year}", 'year' => $year, 'year_bar' => $year_bar, 'data' => $data)); }
function mp_response_table($questionnaire_report) { # Read in data $data = array(); foreach ($questionnaire_report as $key => $row) { if (is_array($row)) { $data['data'][] = array( 'person_id' => $key, 'name' => $row['name'], 'party' => $row['party'], 'area' => $row['area'], 'sent' => $row['dispatched_success'], 'category' => $row['category'], 'notes' => category_lookup($row['category']), 'response' => round($row['responded_mean'] * 100, 1), 'low' => round($row['responded_95_low'] * 100, 1), 'high' => round($row['responded_95_high'] * 100, 1) ); } else { $data['info'][$key] = $row; } } # Sort data function by_name($a, $b) { return strcmp($a['name'], $b['name']); } function by_area($a, $b) { return strcmp($a['area'], $b['area']); } function by_sent($a, $b) { if ($a['sent']<$b['sent']) return 1; elseif ($a['sent']>$b['sent']) return -1; return 0; } $sort = get_http_var('o'); if ($sort == 'n') { usort($data['data'], 'by_name'); } elseif ($sort == 'c') { usort($data['data'], 'by_area'); } elseif ($sort == 's') { usort($data['data'], 'by_sent'); } else { function by_response($a, $b) { if ($a['category'] != 'good' && $b['category'] == 'good') return 1; if ($b['category'] != 'good' && $a['category'] == 'good') return -1; if ($a['category'] != 'good' && $b['category'] != 'good') return by_name($a, $b); if ($a['response']<$b['response']) return 1; elseif ($a['response']>$b['response']) return -1; if ($a['low']<$b['low']) return 1; elseif ($a['low']>$b['low']) return -1; return 0; } usort($data['data'], 'by_response'); } $data['info']['sort'] = $sort; # Output data template_draw('stats-fymp', array( "title" => "FYMP stats", 'data' => $data )); }