// Data bad due to election etc? $parent_status = dadem_get_area_status($eb_id); dadem_check_error($parent_status); $status = dadem_get_area_status($va_id); dadem_check_error($status); if ($parent_status != 'none' || $status != 'none'){ $election_error = cobrand_election_error_message($cobrand); if (!$election_error) { $election_error = 'Sorry, an election is forthcoming or has recently happened here.'; } template_show_error($election_error); } // Get the representative info $area_representatives = dadem_get_representatives($va_id); dadem_check_error($area_representatives); debug("FRONTEND", "area representatives $area_representatives"); $area_representatives = array($va_id => $area_representatives); euro_check($area_representatives, $voting_areas); $all_representatives = array_values($area_representatives[$va_id]); $representatives_info = dadem_get_representatives_info($all_representatives); dadem_check_error($representatives_info); debug_timestamp(); debug("FRONTEND", "representatives info $representatives_info"); //Check the contact method exists for each representative $any_contacts = false; $error_msg = ""; $fyr_valid_reps = array();
* Main page of FaxYourRepresentative, where you enter your postcode * * Copyright (c) 2004 UK Citizens Online Democracy. All rights reserved. * Email: francis@mysociety.org. WWW: http://www.mysociety.org * * $Id: lords.php,v 1.14 2006-08-01 16:38:44 francis Exp $ * */ require_once "../phplib/fyr.php"; require_once "../commonlib/phplib/utility.php"; require_once "../commonlib/phplib/mapit.php"; require_once '../commonlib/phplib/dadem.php'; require_once "../commonlib/phplib/votingarea.php"; // Random Lord if (get_http_var("random_lord")) { $all_lords = dadem_get_representatives($HOC_AREA_ID); dadem_check_error($all_lords); $random_lord = $all_lords[rand(0, count($all_lords) - 1)]; header('Location: ' . url_new('write', false, 'fyr_extref', fyr_external_referrer(), 'cocode', get_http_var('cocode'), 'who', $random_lord)); exit; } if ($pid = get_http_var('pid')) { $ids = dadem_get_same_person('uk.org.publicwhip/person/' . $pid); dadem_check_error($ids); $id = $ids[count($ids) - 1]; header('Location: ' . url_new('write', false, 'fyr_extref', fyr_external_referrer(), 'cocode', get_http_var('cocode'), 'who', $id)); exit; } // Front page form $ref = fyr_external_referrer(); $form_extra = '';
} else { $year_bar_array[] = "<a href=\"/stats/{$y}/{$type}\">{$y}</a>"; } } if (!$got_year) { template_show_error("We don’t have statistics for that year"); } $year_bar = "<p>Statistics for other years:</p><ul class=\"inline-list\"><li>" . join($year_bar_array, "</li><li>") . "</li></ul>"; #if (!get_http_var('really')) # $year_bar = ""; require_once "../phplib/summary_report_{$year}.php"; require_once "../phplib/questionnaire_report_{$year}_WMC.php"; $rep_info = array(); $voting_areas = mapit_call('postcode', $postcode, array(), array(400 => MAPIT_BAD_POSTCODE, 404 => MAPIT_POSTCODE_NOT_FOUND)); if (!rabx_is_error($voting_areas)) { $area_representatives = dadem_get_representatives($voting_areas['shortcuts']['WMC']); dadem_check_error($area_representatives); $rep_info = dadem_get_representative_info($area_representatives[0]); dadem_check_error($rep_info); $rep_info['postcode'] = $postcode; } else { if ($voting_areas->code == MAPIT_BAD_POSTCODE) { $error_message = "Sorry, we need your complete UK postcode to identify your elected representatives."; $template = "index-advice"; } elseif ($voting_areas->code == MAPIT_POSTCODE_NOT_FOUND) { $error_message = "We’re not quite sure why, but we can’t seem to recognise your postcode."; $template = "index-advice"; } } if ($type == 'mps') { // Table of responsiveness of MPs
$fyr_voting_area = null; foreach ($voting_areas['areas'] as $id => $arr) { if ($arr['type'] == $fyr_values['type']) { $fyr_voting_area = add_area_vars($arr); } if ($arr['type'] == $eb_type) { $eb_area = $arr; } } if (!$eb_area || !$fyr_voting_area) { mismatch_error(); } // Data bad due to election etc? check_area_status($eb_area, $fyr_voting_area); // Get the representative info $area_representatives = dadem_get_representatives($fyr_voting_area['id']); dadem_check_error($area_representatives); debug("FRONTEND", "area representatives", $area_representatives); $area_representatives = array($fyr_voting_area['id'] => $area_representatives); euro_check($area_representatives, $area_ids); $all_representatives = array_values($area_representatives[$fyr_voting_area['id']]); $representatives_info = dadem_get_representatives_info($all_representatives); dadem_check_error($representatives_info); debug_timestamp(); debug("FRONTEND", "representatives info", $representatives_info); //Check the contact method exists for each representative $any_contacts = false; $error_msg = ""; $stash['valid_reps'] = array(); # randomize the order that representatives will be displayed in shuffle($all_representatives);
} /* Possibly a deep link (from another site which knows its users' * postcodes) specifying one or more particular area types. */ if ($area_types = fyr_parse_area_type_list($a_forward)) { /* At this point we need to check whether we have only one * representative. If so grab their ID and redirect through to * write.php. Otherwise punt to who.php with the appropriate a * parameter. */ $id = null; $a = array(); foreach (array_keys($area_types) as $t) { if (array_key_exists($t, $voting_areas)) { array_push($a, $voting_areas[$t]); } } $area_representatives = dadem_get_representatives($a); foreach (array_values($area_representatives) as $rr) { if (count($rr) > 1) { $id = null; break; } else { if (count($rr) == 1) { if ($id) { $id = null; break; } else { $id = $rr[0]; } } } }
'cocode', $cocode)); } } // If in a county, but not a county electoral division, display explanation // (which is lack of data from Ordnance Survey) $fyr_county_note = false; if (array_key_exists('CTY', $voting_areas) && !array_key_exists('CED', $voting_areas)) { $fyr_county_note = true; } $voting_areas_info = mapit_get_voting_areas_info(array_values($voting_areas)); mapit_check_error($voting_areas_info); debug_timestamp(); $area_representatives = dadem_get_representatives(array_values($voting_areas)); $error = dadem_get_error($area_representatives); dadem_check_error($area_representatives); debug_timestamp(); $all_representatives = array(); foreach (array_values($area_representatives) as $rr) { $all_representatives = array_merge($all_representatives, $rr); } $representatives_info = dadem_get_representatives_info($all_representatives); dadem_check_error($representatives_info); debug_timestamp(); $meps_hidden = euro_check($area_representatives, $voting_areas); // For each voting area in order, find all the representatives. Put
require_once "../commonlib/phplib/votingarea.php"; require_once "../commonlib/phplib/utility.php"; // Get all fyr_values $fyr_values = get_all_variables(); debug("FRONTEND", "All variables:", $fyr_values); if (!array_key_exists('id', $fyr_values) || $fyr_values['id'] == '' || !ctype_digit($fyr_values['id'])) { template_show_error('Please <a href="/">start from the beginning</a>.'); exit; } $fyr_vatype = $fyr_values['id']; $va_info = mapit_call('area', $fyr_vatype); mapit_check_error($va_info); $parent_info = mapit_call('area', $va_info['parent_area']); mapit_check_error($parent_info); debug_timestamp(); $area_reps = dadem_get_representatives(array($fyr_vatype)); dadem_check_error($area_reps); debug_timestamp(); $area_reps = $area_reps[$fyr_vatype]; $area_reps = array_values($area_reps); $reps_info = dadem_get_representatives_info($area_reps); dadem_check_error($reps_info); debug_timestamp(); $template_page = 'corrections-index'; if (isset($fyr_values['name']) && isset($fyr_values['party'])) { # Changes have been submitted $fyr_names = $fyr_values['name']; $fyr_parties = $fyr_values['party']; $fyr_new = isset($fyr_values['new']) ? $fyr_values['new'] : array(); $fyr_delete = isset($fyr_values['delete']) ? $fyr_values['delete'] : array(); $fyr_url = isset($fyr_values['url']) ? $fyr_values['url'] : '';
function get_reps($va_ids) { $area_representatives = dadem_get_representatives($va_ids); dadem_check_error($area_representatives); debug_timestamp(); return $area_representatives; }
function crosssell_check_twfy($email, $postcode) { global $crosssell_check_twfy_checked; if (!is_null($crosssell_check_twfy_checked)) { return $crosssell_check_twfy_checked; } if (!defined('OPTION_AUTH_SHARED_SECRET') || !$postcode) { return false; } // Look up who the MP is global $crosssell_voting_areas; if (!$crosssell_voting_areas) { $crosssell_voting_areas = mapit_get_voting_areas($postcode); } mapit_check_error($crosssell_voting_areas); if (!array_key_exists('WMC', $crosssell_voting_areas)) { $crosssell_check_twfy_checked = false; return false; } $reps = dadem_get_representatives($crosssell_voting_areas['WMC']); dadem_check_error($reps); if (count($reps) != 1) { $crosssell_check_twfy_checked = false; return false; } $rep_info = dadem_get_representative_info($reps[0]); dadem_check_error($rep_info); if (!array_key_exists('parlparse_person_id', $rep_info)) { $crosssell_check_twfy_checked = false; return false; } $person_id = str_replace('uk.org.publicwhip/person/', '', $rep_info['parlparse_person_id']); if (!$person_id) { $crosssell_check_twfy_checked = false; return false; } $auth_signature = auth_sign_with_shared_secret($email, OPTION_AUTH_SHARED_SECRET); // See if already signed up $already_signed = crosssell_fetch_page('www.theyworkforyou.com', '/alert/authed.php?pid=' . $person_id . '&email=' . urlencode($email) . '&sign=' . urlencode($auth_signature)); if ($already_signed != 'not signed') { $crosssell_check_twfy_checked = false; return false; } $crosssell_check_twfy_checked = array($person_id, $auth_signature); return $crosssell_check_twfy_checked; }
function display($self_link) { // Input data $rep_id = get_http_var('rep_id'); $va_id = get_http_var('va_id'); $ds_va_id = get_http_var('ds_va_id'); $bad_contacts = get_http_var('bad_contacts'); $user_corrections = get_http_var('user_corrections'); // Make new rep in this voting area $new_in_va_id = get_http_var('new_in_va_id'); if (!$rep_id && $ds_va_id) { // Democratic services $ds_vainfo = dadem_get_representatives($ds_va_id); dadem_check_error($ds_vainfo); if (isset($ds_vainfo[0])) { $rep_id = $ds_vainfo[0]; } else { $new_in_va_id = $ds_va_id; } } // Postcode $pc = get_http_var('pc'); // Search $search = null; if (get_http_var('gos')) { if (validate_postcode(get_http_var('search'))) { $pc = get_http_var('search'); $rep_id = null; } else { $search = get_http_var('search'); $rep_id = null; } } if (get_http_var('cancel') != "") { $rep_id = null; } if (get_http_var('done') != "") { if (get_http_var('token') != $this->get_token()) { print "<p><i>Token not found</i></p>"; } else { $newdata['name'] = get_http_var('name'); $newdata['party'] = get_http_var('party'); $newdata['method'] = get_http_var('method'); $newdata['email'] = get_http_var('email'); $newdata['fax'] = get_http_var('fax'); if (!$rep_id) { // Making a new representative, put in type and id $newdata['area_id'] = $new_in_va_id; $vainfo = mapit_call('area', $new_in_va_id); mapit_check_error($vainfo); $newdata['area_type'] = $vainfo['type']; } $result = dadem_admin_edit_representative($rep_id, $newdata, http_auth_user(), get_http_var('note')); dadem_check_error($result); $rep_id = $result; $new_in_va_id = null; print "<p><i>Successfully updated representative " . htmlspecialchars($rep_id) . "</i></p>"; if (get_http_var('nextbad')) { $rep_id = get_http_var('nextbad'); $url = $self_link . "&nextbad=" . urlencode($this->get_next_bad_contact($rep_id)) . "&just_done_bad=1&rep_id=" . urlencode($rep_id); header("Location: {$url}"); exit; } else { $rep_id = null; } } } if (get_http_var('just_done_bad')) { print "<p><i>Moved on to next bad contact</i></p>"; } if (get_http_var('delete') != "") { if (get_http_var('token') != $this->get_token()) { print "<p><i>Token not found</i></p>"; } else { $result = dadem_admin_edit_representative($rep_id, null, http_auth_user(), get_http_var('note')); dadem_check_error($result); print "<p><i>Successfully deleted representative " . htmlspecialchars($rep_id) . "</i></p>"; $rep_id = null; } } if (get_http_var('ucclose') != "") { $result = dadem_admin_done_user_correction(get_http_var('ucid')); dadem_check_error($result); print "<p><i>Successfully closed correction " . htmlspecialchars(get_http_var('ucid')) . "</i></p>"; } if (get_http_var('vaupdate') != "") { $result = dadem_admin_set_area_status(get_http_var('va_id'), get_http_var('new_status')); dadem_check_error($result); print "<p><i>Successfully updated voting area status " . htmlspecialchars(get_http_var('va_id')) . " to " . htmlspecialchars(get_http_var('new_status')) . "</i></p>"; } // Postcode and search box $form = new HTML_QuickForm('adminRepsSearchForm', 'get', $self_link); $form->addElement('header', '', 'Search'); $buttons[] =& HTML_QuickForm::createElement('text', 'search', null, array('size' => 20, 'maxlength' => 255)); $buttons[] =& HTML_QuickForm::createElement('submit', 'gos', 'postcode or query'); $form->addElement('hidden', 'page', $this->id); $form->addGroup($buttons, 'stuff', null, ' ', false); admin_render_form($form); // Conditional parts: if ($rep_id or $new_in_va_id) { $form = new HTML_QuickForm('adminRepsEditForm', 'post', $self_link); $form->addElement('hidden', 'page', $this->id); $form->addElement('hidden', 'token', $this->get_token()); // Edit representative $sameperson = null; if ($rep_id) { $repinfo = dadem_get_representative_info($rep_id); dadem_check_error($repinfo); if ($repinfo['parlparse_person_id']) { $sameperson = dadem_get_same_person($repinfo['parlparse_person_id']); dadem_check_error($sameperson); } } $va_id = $rep_id ? $repinfo['voting_area'] : $new_in_va_id; $vainfo = mapit_call('area', $va_id); mapit_check_error($vainfo); if ($vainfo['parent_area']) { $parentinfo = mapit_call('area', $vainfo['parent_area']); mapit_check_error($parentinfo); } else { $parentinfo = null; } $rephistory = $rep_id ? dadem_get_representative_history($rep_id) : array(); dadem_check_error($rephistory); // Reverse postcode lookup if (!$pc) { $pc = mapit_call('area/example_postcode', $va_id); if (!mapit_get_error($pc)) { $form->addElement('static', 'note1', null, "Example postcode for testing: " . "<a href='" . OPTION_BASE_URL . '/who?pc=' . urlencode($pc) . "'>" . htmlentities($pc) . "</a> (<a href='?search=" . urlencode($pc) . "&gos=postcode+or+query&page=reps'>all reps here</a>)"); } else { $pc = ''; } } if ($rep_id) { $form->setDefaults(array('name' => $repinfo['name'], 'party' => $repinfo['party'], 'method' => $repinfo['method'], 'email' => $repinfo['email'], 'fax' => $repinfo['fax'])); } // Councillor types are not edited here, but in match.cgi interface global $va_council_child_types, $va_type_name, $va_rep_name; $editable_here = true; if (OPTION_ADMIN_SERVICES_CGI && in_array($vainfo['type'], $va_council_child_types)) { $editable_here = false; } $readonly = $editable_here ? null : "readonly"; if ($rep_id) { $form->addElement('header', '', 'Edit Representative'); if ($repinfo['deleted']) { $form->addElement('static', 'notedeleted', null, "<strong style=\"color: red\">Deleted representative</strong>, click 'Done' to undelete"); } } else { $form->addElement('header', '', 'New Representative'); } if ($rep_id and $editable_here) { $form->addElement('static', 'note1', null, "\n Edit only the values which you need to. If a representative\n has changed delete them and make a new one. Do not just edit\n their values, as this would ruin our reponsiveness stats."); } if ($rep_id && $sameperson) { $html = ''; foreach ($sameperson as $samerep) { if ($samerep == $rep_id) { continue; } $html .= "<a href=\"{$self_link}&pc=" . urlencode(get_http_var('pc')) . "&rep_id=" . $samerep . "\">" . $samerep . "</a> \n"; } if ($html) { $html = '(Note that these other representatives are the same person: ' . trim($html) . ')'; $form->addElement('static', 'sameperson', null, $html); } } $rep_name = isset($va_rep_name[$vainfo['type']]) ? $va_rep_name[$vainfo['type']] : ''; $form->addElement('static', 'office', 'Office:', htmlspecialchars($rep_name) . " for " . htmlspecialchars($vainfo['name']) . " " . htmlspecialchars($va_type_name[$vainfo['type']]) . ($parentinfo ? " in " . htmlspecialchars($parentinfo['name']) . " " . htmlspecialchars($va_type_name[$parentinfo['type']]) : "")); $form->addElement('text', 'name', "Full name:", array('size' => 60, $readonly => 1)); $form->addElement('text', 'party', "Party:", array('size' => 60, $readonly => 1)); $form->addElement('static', 'note2', null, "Make sure you update contact method when you change email or fax numbers."); $form->addElement('select', 'method', "Contact method:", array('fax' => 'Fax only', 'email' => 'Email only', 'shame' => "Shame! Doesn't want contacting", 'via' => 'Contact via electoral body (e.g. Democratic Services)', 'unknown' => "We don't know contact details")); $form->addElement('text', 'email', "Email:", array('size' => 60, $readonly => 1)); $form->addElement('text', 'fax', "Fax:", array('size' => 60, $readonly => 1)); $form->addElement('textarea', 'note', "Notes for log:", array('rows' => 3, 'cols' => 60, $readonly => 1)); $form->addElement('hidden', 'pc', $pc); if (get_http_var('nextbad')) { $form->addElement('hidden', 'nextbad', get_http_var('nextbad')); } if ($rep_id) { $form->addElement('hidden', 'rep_id', $rep_id); } else { $form->addElement('hidden', 'new_in_va_id', $new_in_va_id); } if ($editable_here) { $finalgroup[] =& HTML_QuickForm::createElement('submit', 'done', 'Done'); $finalgroup[] =& HTML_QuickForm::createElement('submit', 'cancel', 'Cancel'); if ($rep_id) { $finalgroup[] =& HTML_QuickForm::createElement('static', 'newlink', null, "<a href=\"{$self_link}&pc=" . urlencode(get_http_var('pc')) . "&new_in_va_id=" . $va_id . "\">" . "Make new " . htmlspecialchars($vainfo['name']) . " rep" . "</a> \n"); if ($repinfo['deleted']) { $finalgroup[] =& HTML_QuickForm::createElement('static', 'staticspacer', null, ' Deleted rep, no longer in office, just click done to undelete'); } else { $finalgroup[] =& HTML_QuickForm::createElement('static', 'staticspacer', null, ' No longer in office? --->'); $finalgroup[] =& HTML_QuickForm::createElement('submit', 'delete', 'Delete'); } } $form->addGroup($finalgroup, "finalgroup", "", ' ', false); } else { $form->addElement('static', 'note3', null, '<a href="' . OPTION_ADMIN_SERVICES_CGI . 'match.cgi?page=councilinfo;area_id=' . $vainfo['parent_area'] . '">To edit Councillors please use the match.cgi interface</a>' . '<br><a href="' . $self_link . '&ds_va_id=' . $vainfo['parent_area'] . '">... or edit Democratic Services for this council</a>'); $finalgroup[] =& HTML_QuickForm::createElement('submit', 'done', 'Done'); $finalgroup[] =& HTML_QuickForm::createElement('submit', 'cancel', 'Cancel'); $form->addGroup($finalgroup, "finalgroup", "", ' ', false); } if ($rep_id) { $search_links = "Search for: "; $search_links .= "<a href=\"{$self_link}&page=fyrqueue&rep_id=" . $rep_id . "\">WriteToThem messages</a> | "; foreach (array("tel " . $repinfo['name'], "fax " . $repinfo['name'], "tel " . $repinfo['name'] . " " . $rep_name, "fax " . $repinfo['name'] . " " . $rep_name) as $searchq) { $search_links .= "<a href=\"http://search.yahoo.com/search?p=" . htmlspecialchars($searchq) . "\"> " . htmlspecialchars($searchq) . "</a> | "; } $form->addElement('static', 'newlink', null, $search_links); if ($repinfo['parlparse_person_id']) { $form->addElement('static', 'person', 'parlparse person_id:', $repinfo['parlparse_person_id']); } } $form->addElement('header', '', 'Historical Changes'); $html = "<table border=1>"; $html .= "<th>Order</th><th>Date</th><th>Editor</th><th>Note</th>\n <th>Name</th> <th>Party</th> <th>Method</th> <th>Email</th>\n <th>Fax</th><th>Active</th>"; $previous_row = null; foreach ($rephistory as $row) { $html .= "<tr>"; foreach (array('order_id', 'whenedited', 'editor', 'note', 'name', 'party', 'method', 'email', 'fax', 'deleted') as $field) { if ($row['deleted'] && ($field == 'email' || $field == 'fax' || $field == 'method')) { $display_value = 'deleted'; $html .= "<td>-</td>\n"; continue; } $value = $row[$field]; if ($field == 'note') { $display_value = make_ids_links($value); } elseif ($field == 'whenedited') { $display_value = strftime('%Y-%m-%d %H:%M:%S', $value); } elseif ($field == 'deleted') { $display_value = $value ? 'deleted' : 'yes'; } else { $display_value = $value; } if ($field != "order_id" && $field != "whenedited" && $field != "editor" && $field != "note" && $previous_row && $previous_row[$field] != $value) { $display_value = "<strong>{$display_value}</strong>"; } # Try and spot stupidity if (preg_match('#parl(i|a)ment#', $display_value)) { $display_value = "<span style='color:#00ff00'>{$display_value}</span>"; } $html .= "<td>" . $display_value . "</td>\n"; } $html .= "</tr>"; $previous_row = $row; } $html .= "</table>"; $form->addElement('static', 'bytype', null, $html); admin_render_form($form); } elseif ($va_id) { // One voting area $form = new HTML_QuickForm('adminVotingArea', 'get', $self_link); $area_info = mapit_call('area', $va_id); mapit_check_error($area_info); $reps = dadem_get_representatives($va_id); dadem_check_error($reps); $reps = array_values($reps); $html = $this->render_area($self_link, $va_id, $area_info, $pc); $html .= $this->render_reps($self_link, $reps); $form->addElement('static', 'bytype', null, $html); $form->addElement('hidden', 'page', $this->id); $form->addElement('hidden', 'token', $this->get_token()); $form->addElement('hidden', 'va_id', $va_id); $select = $form->addElement('select', 'new_status', null, array('none' => 'No special status', 'pending_election' => 'Pending election, rep data not valid', 'recent_election' => 'Recent election, our rep data not yet updated', 'boundary_changes' => 'Recent election, had boundary changes'), array()); $status = dadem_get_area_status($va_id); dadem_check_error($status); $select->setSelected($status); $form->addElement('submit', 'vaupdate', 'Update'); admin_render_form($form); } elseif ($search) { $form = new HTML_QuickForm('adminRepsSearchResults', 'get', $self_link); $html = ''; $areas = mapit_call('areas', $search); mapit_check_error($areas); global $va_inside; foreach (array_keys($areas) as $va_id) { $area_info = mapit_call('area', $va_id); mapit_check_error($area_info); $reps = dadem_get_representatives($va_id); dadem_check_error($reps); $reps = array_values($reps); $html .= $this->render_area($self_link, $va_id, $area_info, $pc, isset($va_inside[$area_info['type']])); $html .= $this->render_reps($self_link, $reps); } // Search reps $reps = dadem_search_representatives($search); dadem_check_error($reps); $html .= '<hr>' . $this->render_reps($self_link, $reps); $form->addElement('static', 'bytype', null, $html); admin_render_form($form); } elseif ($pc) { $form = new HTML_QuickForm('adminRepsSearchResults', 'get', $self_link); // Postcode search $voting_areas = mapit_call('postcode', $pc); mapit_check_error($voting_areas); $areas_info = $voting_areas['areas']; $html = ""; // Display in order council, ward, council, ward... global $va_display_order, $va_inside; $our_order = array(); foreach ($va_display_order as $row) { if (!is_array($row)) { $row = array($row); } if (!in_array($va_inside[$row[0]], $our_order)) { $our_order[] = $va_inside[$row[0]]; } foreach ($row as $va_type) { $our_order[] = $va_type; } } // Render everything in the order foreach ($our_order as $va_type) { foreach ($areas_info as $area => $area_info) { if ($va_type != $area_info['type']) { continue; } $va_id = $area; // One voting area $reps = dadem_get_representatives($va_id); dadem_check_error($reps); $reps = array_values($reps); $html .= $this->render_area($self_link, $va_id, $area_info, $pc, isset($va_inside[$va_type])); $html .= $this->render_reps($self_link, $reps); } } $form->addElement('static', 'bytype', null, $html); admin_render_form($form); } elseif ($bad_contacts) { // Bad contacts $form = new HTML_QuickForm('adminRepsBad', 'post', $self_link); $badcontacts = dadem_get_bad_contacts(); dadem_check_error($badcontacts); $form->addElement('header', '', 'Bad Contacts ' . count($badcontacts)); $html = $this->render_reps($self_link, $badcontacts, true); $form->addElement('static', 'badcontacts', null, $html); admin_render_form($form); } elseif ($user_corrections) { // User submitted corrections $form = new HTML_QuickForm('adminRepsCorrectionsHeader', 'post', $self_link); $corrections = dadem_get_user_corrections(); dadem_check_error($corrections); $form->addElement('header', '', 'User Submitted Corrections ' . count($corrections)); $form->addElement('hidden', 'token', $this->get_token()); admin_render_form($form); // Get all the data for areas and their parents in as few call as possible $vaids = array(); foreach ($corrections as $correction) { array_push($vaids, $correction['voting_area_id']); } $info1 = mapit_call('areas', $vaids); mapit_check_error($info1); $vaids = array(); foreach ($info1 as $key => $value) { array_push($vaids, $value['parent_area']); } $info2 = mapit_call('areas', $vaids); foreach ($corrections as $correction) { $form = new HTML_QuickForm('adminRepsCorrections', 'post', $self_link); $html = ""; $rep = $correction['representative_id']; $html .= "<p>"; $html .= strftime('%Y-%m-%d %H:%M:%S', $correction['whenentered']) . " "; if ($correction['user_email']) { $html .= " by " . htmlspecialchars($correction['user_email']); } $html .= "<br>"; if ($correction['voting_area_id']) { $wardinfo = $info1[$correction['voting_area_id']]; $vaid = $wardinfo['parent_area']; $vainfo = $info2[$vaid]; // TODO: Make this councilinfo, and give a valid r= return URL $html .= '<a href="' . OPTION_ADMIN_SERVICES_CGI . 'match.cgi?page=councilinfo;area_id=' . $vaid . '&r=' . '">' . htmlspecialchars($vainfo['name']) . "</a>, "; $html .= htmlspecialchars($wardinfo['name']); $html .= "<br>"; } $html .= $correction['alteration'] . " "; if ($rep) { $repinfo = dadem_get_representative_info($rep); dadem_check_error($repinfo); $html .= "<a href=\"{$self_link}&pc=" . urlencode(get_http_var('pc')) . "&rep_id=" . $rep . "\">" . htmlspecialchars($repinfo['name']) . " (" . htmlspecialchars($repinfo['party']) . ")</a> \n"; if ($correction['alteration'] != "delete") { $html .= " to "; } } if ($correction['alteration'] != "delete") { $html .= htmlspecialchars($correction['name']) . " (" . htmlspecialchars($correction['party']) . ")"; } if ($correction['user_notes']) { $html .= "<br>Notes: " . htmlspecialchars($correction['user_notes']); } $usercorr = array(); $usercorr[] =& HTML_QuickForm::createElement('static', 'usercorrections', null, $html); // You can't do this with element type "hidden" as it only allows one value in a // page for variable named ucid. So once again I go to raw HTML. Remind me not // to use HTML_QuickForm again... $usercorr[] =& HTML_QuickForm::createElement('html', '<input name="ucid" type="hidden" value="' . $correction['user_correction_id'] . '" />'); $usercorr[] =& HTML_QuickForm::createElement('submit', 'ucclose', 'hide (done)'); $form->addGroup($usercorr, 'stuff', null, ' ', false); admin_render_form($form); } } else { print '<p><a href="?page=reps&bad_contacts=1">Bad contacts</a> (please fix these!)'; // General info if (OPTION_ADMIN_SERVICES_CGI) { print '<br><a href="?page=reps&user_corrections=1">User corrections</a> (just for your interest, as sent automatically to GovEval)'; } } }