function api_getconstituency_postcode($pc) { $pc = preg_replace('#[^a-z0-9 ]#i', '', $pc); if (get_http_var('future')) { $new_areas = mapit_get_voting_areas($pc, 13); # Magic number 13 if (is_object($new_areas)) { # rabx_is_error throws Notice api_error('Unknown postcode, or problem with lookup'); } elseif (!isset($new_areas['WMC'])) { api_error('Unknown postcode, or problem with lookup'); } else { $new_info = mapit_get_voting_area_info($new_areas['WMC']); $output['name'] = $new_info['name']; api_output($output); } } else { if (validate_postcode($pc)) { $constituency = postcode_to_constituency($pc); if ($constituency == 'CONNECTION_TIMED_OUT') { api_error('Connection timed out'); } elseif ($constituency) { $db = new ParlDB; $q = $db->query("select constituency, data_key, data_value from consinfo where constituency = '" . mysql_real_escape_string($constituency) . "'"); if ($q->rows()) { for ($i=0; $i<$q->rows(); $i++) { $data_key = $q->field($i, 'data_key'); $output[$data_key] = $q->field($i, 'data_value'); } ksort($output); } $output['name'] = $constituency; api_output($output); } else { api_error('Unknown postcode'); } } else { api_error('Invalid postcode'); } } }
//Check if the postcode is editable $fyr_postcode_editable = is_postcode_editable($fyr_representative['type']); //Check that the representative represents this postcode verify_rep_postcode($fyr_postcode, $fyr_representative); // Get the electoral body information $eb_type = $va_inside[$fyr_voting_area['type']]; if (array_key_exists($eb_type, $verify_voting_area_map)) { $eb_id = $verify_voting_area_map[$eb_type]; } else { $eb_id = $fyr_voting_area['parent_area_id']; } $eb_area_info = mapit_get_voting_area_info($eb_id); mapit_check_error($eb_area_info); // Data bad due to election etc? $parent_status = dadem_get_area_status($eb_id); dadem_check_error($parent_status); $status = dadem_get_area_status($fyr_representative['voting_area']); 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); }
to line their pockets. They are not, they are to help them do their job. Just thought I'd let you know how I felt.", id => 1),); $fyr_postcode = "zz99zz"; debug("FRONTEND", "who is $fyr_who"); debug("FRONTEND", "postcode is $fyr_postcode"); fyr_rate_limit(array('postcode' => array($fyr_postcode, "Postcode that's been typed in"), 'who' => array($fyr_who, "Representative id from DaDem"))); // What to do $action = get_http_var('action'); if ($action == "") $action = "index"; // Look up info about the representative who is using the interface $representative = dadem_get_representative_info($fyr_who); $voting_area = mapit_get_voting_area_info($representative['voting_area']); // Add extra fields $newmessages = array(); foreach ($messages as $message) { $message['short_body'] = trim_characters($message['body'], 0, 200); $message['url'] = "reps?action=forward&id=" . $message['id']; $newmessages[] = $message; } $messages = $newmessages; // Perform specified action if ($action == 'index') { // Display page, using all the variables set above. template_draw("reps-index", array("representative" => $representative, "voting_area" => $voting_area,
function print_messages($messages, $msgid = null) { ?> <table border="1" width="100%"> <tr> <th>Created</th> <th>Message ID /<br>Group ID</th> <th>Last state change</th> <th>State /<br>Last action</th> <th>Sender</th> <th>Recipient</th> <th>Client IP / <br> Referrer / Cobrand</th> <th>Length (chars)</th> <th>Questionnaire</th> <th>Tick</th> </tr> <form action="<?=htmlspecialchars(url_new("", false, 'view', get_http_var('view'), 'simto', get_http_var('simto'), 'page', get_http_var('page'))) ?>" method="post"> <? $c = 1; foreach ($messages as $message) { print '<tr' . ($c==1 ? ' class="v"' : '') . '>'; print "<td>" . strftime('%Y-%m-%d %H:%M:%S', $message['created']) . "</td>"; print '<td><a href="' . $this->self_link . "&id=".urlencode($message['id']) . '">' . $message['id'] . '</a>' . "<br>${message['group_id']}" . '</td>'; print "<td>" . strftime('%Y-%m-%d %H:%M:%S', $message['laststatechange']) . "</td>"; print "<td>"; print add_tooltip($message['state'], $this->state_help_notes($message['state'])); /* Only show frozen flag if the message is in a state this can * affect. */ if ($message['frozen']) { if ($message['state'] == 'new' or $message['state'] == 'pending' or $message['state'] == 'ready') print "<br><b>frozen</b>"; else print "<br>frozen"; } if ($message['numactions'] > 0) { if ($message['state'] == 'pending') { print "<br>" . ($message['numactions'] - 1) . " ". make_plural(($message['numactions'] - 1), 'reminder'); } elseif ($message['state'] == 'sent' || $message['state'] == 'failed_closed') { print "<br>". $message['numactions'] . " " . make_plural($message['numactions'], 'day'); } elseif ($message['state'] == 'ready') { print "<br>". $message['numactions'] . " " . make_plural($message['numactions'], 'failure'); } else { print "<br>". $message['numactions'] . " " . make_plural($message['numactions'], 'attempt'); } } if ($message['lastaction'] > 0 && $message['state'] != 'failed_closed') print "<br>" . strftime('%Y-%m-%d %H:%M:%S', $message['lastaction']); print "</td>"; print "<td>" . htmlspecialchars($message['sender_name']) . "<br>" . str_replace($message['sender_postcode'], '<a href="'.OPTION_BASE_URL.'/who?pc='.urlencode($message['sender_postcode']).'">'.$message['sender_postcode'].'</a>', htmlspecialchars($message['sender_addr']) ) . "<br>" . htmlspecialchars($message['sender_email']) . "</td>"; $display_name = $message['recipient_name']; if (!isset($display_name) || $display_name == "") { $display_name = "scrubbed, id " . $message['recipient_id'] . ", " . $message['recipient_type']; } print '<td><a href="' . htmlspecialchars(url_new('', false, 'page', 'reps', 'rep_id', $message['recipient_id'], 'pc', $message['sender_postcode'])) . '">' . htmlspecialchars($display_name) . "</a>" . " (<a href=\"" . htmlspecialchars(url_new('', false, 'page', 'fyrqueue', 'rep_id', $message['recipient_id'])) . '">msgs</a>)' ."<br>"; if ($message['recipient_via']) { $repinfo = dadem_get_representative_info($message['recipient_id']); if (!dadem_get_error($repinfo)) { $vainfo = mapit_get_voting_area_info($repinfo['voting_area']); $parentinfo = mapit_get_voting_area_info($vainfo['parent_area_id']); mapit_check_error($parentinfo); print '<a href="' . htmlspecialchars(url_new('', false, 'page', 'reps', 'ds_va_id', $vainfo['parent_area_id'], 'pc', $message['sender_postcode'])) . '">' . htmlspecialchars("via " . $parentinfo['name']) . "</a>:<br>"; } else { print 'recipient_via contact, but rep id not found '; } } if ($message['recipient_email']) print htmlspecialchars($message['recipient_email']) . "<br>"; if ($message['recipient_fax']) print htmlspecialchars($message['recipient_fax']) . "<br>"; print "</td>"; print "<td><a href=\"ipaddrinfo.cgi?ipaddr=${message['sender_ipaddr']}\">${message['sender_ipaddr']}</a>". "<br>" . trim_url($message['sender_referrer']) . "<br>" . $message['cobrand'] . " " . $message['cocode'] . "</td>"; print "<td>${message['message_length']}</td>"; $outof0 = ($message['questionnaire_0_no'] + $message['questionnaire_0_yes']); $outof1 = ($message['questionnaire_1_no'] + $message['questionnaire_1_yes']); print '<td>'; if ($outof0) { print 'responded:'; print $message['questionnaire_0_yes'] .'/'. $outof0; } if ($outof0 && $outof1) print '<br>'; if ($outof1) { print ' firsttime:'; print $message['questionnaire_1_yes'] .'/'. $outof1; } if ($message['no_questionnaire']) { print "<br>no quest"; } if (!$outof0 && !$outof1) { print ' '; } print '</td>'; /* Javascript code changes shading of table row for checked * messages to make them look "selected". */ print '<td><input type="checkbox" name="check_' . $message['id'] . '" onclick="this.parentNode.parentNode.className = this.checked ? \'h\' : \'' . ($c == 1 ? 'v' : '') . '\'" >'; print '</td>'; print "</tr>"; # this.checked this .className= if (array_key_exists('diff', $message)) { /* Each element of the array consists either of an array of * two strings, which are the strings unique to the "from" * and "to" strings; or a string, representing a common * part; or null, indicating an elided part. */ print '<tr'.($c==1?' class="v"':'').'><td colspan = "9">'; print "<b>Differences: </b> "; if (isset($msgid) and $message['id'] == $msgid) { print 'This is the message being compared against. <span class="difffrom">Text that appears only in this message, </span><span class="diffto">or only in the other message.</span>'; } else { foreach ($message['diff'] as $elem) { if (!isset($elem)) { print '<span class="diffsnipped">[ ... snipped ... ]</span>'; } else if (is_array($elem)) { print '<span class="difffrom">' . htmlspecialchars($elem[0]) . '</span><span class="diffto">' . htmlspecialchars($elem[1]) . '</span>'; } else { print htmlspecialchars($elem); } } } print "</td></tr>"; } $c = 1 - $c; } if (count($messages) > 1) { ?><tr><td colspan=9><b>Ticked items:</b> <input name="token" value="<? print get_token(); ?>" type="hidden" /> <input size="20" name="notebody" type="text" /> <input name="note" value="Note" type="submit" /> <b>Action:</b> <input name="freeze" value="Freeze" type="submit" /> <input name="thaw" value="Thaw" type="submit" /> <input name="error" value="Error with email" type="submit" /> <input name="failed" value="Fail silently" type="submit" /> </td><tr> <? } ?> </form> </table> <? }
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_get_voting_area_info($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_get_voting_area_info($va_id); mapit_check_error($vainfo); if ($vainfo['parent_area_id']) { $parentinfo = mapit_get_voting_area_info($vainfo['parent_area_id']); 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_get_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; $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); } } $form->addElement('static', 'office', 'Office:', htmlspecialchars($vainfo['rep_name']) . " for " . htmlspecialchars($vainfo['name']) . " " . htmlspecialchars($vainfo['type_name']) . ($parentinfo ? " in " . htmlspecialchars($parentinfo['name']) . " " . htmlspecialchars($parentinfo['type_name']) : "")); $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_id'] . '">To edit Councillors please use the match.cgi interface</a>' . '<br><a href="' . $self_link . '&ds_va_id=' . $vainfo['parent_area_id'] . '">... 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'] . " " . $vainfo['rep_name'], "fax " . $repinfo['name'] . " " . $vainfo['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_get_voting_area_info($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'), 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_get_voting_area_by_name($search); mapit_check_error($areas); global $va_inside; foreach (array_keys($areas) as $va_id) { $area_info = mapit_get_voting_area_info($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_get_voting_areas($pc); mapit_check_error($voting_areas); $areas = array_values($voting_areas); $areas_info = mapit_get_voting_areas_info($areas); mapit_check_error($areas_info); $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_get_voting_areas_info($vaids); mapit_check_error($info1); $vaids = array(); foreach ($info1 as $key => $value) { array_push($vaids, $value['parent_area_id']); } $info2 = mapit_get_voting_areas_info($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_id']; $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)'; } } }
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_get_voting_area_info($fyr_vatype); mapit_check_error($va_info); $parent_info = mapit_get_voting_area_info($va_info['parent_area_id']); 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'];
} $pc = get_http_var('pc'); if ($pc) { $current = postcode_to_constituency($pc); $current_disp = str_replace('&', 'and', $current); if ($current == "connection_timed_out") { print "Sorry, we couldn't check your postcode right now, as our postcode lookup server is under quite a lot of load."; } elseif ($current == "") { print "Sorry, ".htmlentities($pc) ." isn't a known postcode"; } $map_url_current = create_map_filename($current); $new_areas = mapit_get_voting_areas($pc, 13); # Magic number 13 if (isset($new_areas['WMC'])) { $new_info = mapit_get_voting_area_info($new_areas['WMC']); $new = $new_info['name']; $map_url_new = create_map_filename($new); } $MEMBER = new MEMBER(array('constituency' => $current)); ?> <div id="maps"> <h3>Maps</h3> <p class="desc">Current constituency of <?php echo $current_disp; ?> :</p> <p><img src='http://matthew.theyworkforyou.com/boundaries/maps_now/<?php echo $map_url_current;