function _api_getPerson_row($row, $has_party = FALSE) { global $parties; $row['full_name'] = member_full_name($row['house'], $row['title'], $row['first_name'], $row['last_name'], $row['constituency']); if ($row['house'] == 1) { $URL = new URL('mp'); $row['url'] = $URL->generate('none') . make_member_url($row['full_name'], $row['constituency'], $row['house']); } if ($has_party && isset($parties[$row['party']])) { $row['party'] = $parties[$row['party']]; } list($image, $sz) = find_rep_image($row['person_id']); if ($image) { list($width, $height) = getimagesize(str_replace(IMAGEPATH, BASEDIR . '/images/', $image)); $row['image'] = $image; $row['image_height'] = $height; $row['image_width'] = $width; } if ($row['house'] == 1 && ($row['left_house'] == '9999-12-31' || $row['left_house'] == '2010-04-12')) { # XXX # Ministerialships and Select Committees $db = new ParlDB(); $q = $db->query('SELECT * FROM moffice WHERE to_date="9999-12-31" and person=' . $row['person_id'] . ' ORDER BY from_date DESC'); for ($i = 0; $i < $q->rows(); $i++) { $row['office'][] = $q->row($i); } } foreach ($row as $k => $r) { if (is_string($r)) { $row[$k] = html_entity_decode($r); } } return $row; }
function _api_getMembers_output($sql, $params) { global $parties; $db = new ParlDB(); $q = $db->query($sql, $params); $output = array(); $last_mod = 0; for ($i = 0; $i < $q->rows(); $i++) { $pid = $q->field($i, 'person_id'); $row = array('member_id' => $q->field($i, 'member_id'), 'person_id' => $pid, 'name' => html_entity_decode(member_full_name($q->field($i, 'house'), $q->field($i, 'title'), $q->field($i, 'given_name'), $q->field($i, 'family_name'), $q->field($i, 'lordofname'))), 'party' => isset($parties[$q->field($i, 'party')]) ? $parties[$q->field($i, 'party')] : $q->field($i, 'party')); if ($q->field($i, 'house') != 2) { $row['constituency'] = $q->field($i, 'constituency'); } $output[$pid] = $row; $time = strtotime($q->field($i, 'lastupdate')); if ($time > $last_mod) { $last_mod = $time; } } $pids = array_keys($output); if (count($pids)) { $q = $db->query('SELECT person, dept, position, from_date, to_date FROM moffice WHERE to_date="9999-12-31" AND person IN (' . join(',', $pids) . ')'); for ($i = 0; $i < $q->rows(); $i++) { $row = $q->row($i); $pid = $row['person']; unset($row['person']); $output[$pid]['office'][] = $row; } } $output = array_values($output); api_output($output, $last_mod); }
function _api_getMP_row($row) { global $parties; $row['full_name'] = member_full_name($row['house'], $row['title'], $row['first_name'], $row['last_name'], $row['constituency']); # We need 'name' to maintain backwards compatibility due to OA-476 $row['name'] = $row['full_name']; if (isset($parties[$row['party']])) { $row['party'] = $parties[$row['party']]; } list($image, $sz) = find_rep_image($row['person_id']); if ($image) { $row['image'] = $image; } # Ministerialships and Select Committees $db = new ParlDB(); $q = $db->query('SELECT * FROM moffice WHERE to_date="9999-12-31" and person=' . $row['person_id'] . ' ORDER BY from_date DESC'); for ($i = 0; $i < $q->rows(); $i++) { $row['office'][] = $q->row($i); } foreach ($row as $k => $r) { if (is_string($r)) { $row[$k] = html_entity_decode($r); } } return $row; }
public function _db_row_to_array($q, $row) { $query = $q->field($row, 'query_string'); $this->SEARCHURL->insert(array('s' => $query, 'pop' => 1)); $url = $this->SEARCHURL->generate(); $htmlescape = 1; if (preg_match('#speaker:(\\d+)#', $query, $m)) { $qq = $this->db->query('SELECT house, title, given_name, family_name, lordofname FROM member, person_names pn WHERE member.person_id = pn.person_id and member.person_id=:pid AND pn.type="name" AND pn.end_date = (SELECT MAX(end_date) from person_names where person_names.person_id=member.person_id) ORDER BY end_date DESC LIMIT 1', array(':pid' => $m[1])); if ($qq->rows()) { $name = member_full_name($qq->field(0, 'house'), $qq->field(0, 'title'), $qq->field(0, 'given_name'), $qq->field(0, 'family_name'), $qq->field(0, 'lordofname')); $query = preg_replace('#speaker:(\\d+)#', $name, $query); #$htmlescape = 0; } } $visible_name = preg_replace('/"/', '', $query); $rowarray = $q->row($row); $rowarray['query'] = $query; $rowarray['visible_name'] = $visible_name; $rowarray['url'] = $url; $rowarray['display'] = '<a href="' . $url . '">' . ($htmlescape ? _htmlentities($visible_name) : $visible_name) . '</a>'; return $rowarray; }
function list_members() { global $db; $out = '<ul>'; # this returns everyone so possibly over the top maybe limit to member.house = '1' $q = $db->query("SELECT house, member.person_id, title, given_name, family_name, lordofname, constituency, data_value\n FROM\n (SELECT person_id, MAX(end_date) max_date FROM person_names WHERE type='name' GROUP by person_id) md,\n person_names, member\n LEFT JOIN personinfo ON member.person_id = personinfo.person_id AND personinfo.data_key = 'mp_website'\n WHERE member.person_id = person_names.person_id AND person_names.type = 'name'\n AND md.person_id = person_names.person_id AND md.max_date = person_names.end_date\n GROUP by person_id\n ORDER BY house, family_name, lordofname, given_name"); for ($row = 0; $row < $q->rows(); $row++) { $out .= '<li>'; $name = member_full_name($q->field($row, 'house'), $q->field($row, 'title'), $q->field($row, 'given_name'), $q->field($row, 'family_name'), $q->field($row, 'lordofname')); $mp_website = $q->field($row, 'data_value'); $out .= ' <small>[<a href="websites.php?editperson=' . $q->field($row, 'person_id') . '"'; if ($mp_website) { $out .= ' title="Change URL ' . $mp_website . '">Edit URL</a>]</small>'; } else { $out .= '>Add URL</a>]</small>'; } $out .= ' ' . $name; if ($q->field($row, 'constituency')) { $out .= ' (' . $q->field($row, 'constituency') . ')'; } $out .= "</li>\n"; } $out .= '</ul>'; return $out; }
function list_members() { global $db; $out = '<ul>'; # this returns everyone so possibly over the top maybe limit to member.house = '1' $q = $db->query("SELECT member.person_id, house, title, first_name, last_name, constituency, data_value FROM member \n LEFT JOIN personinfo ON member.person_id = personinfo.person_id AND personinfo.data_key = 'mp_website' GROUP BY member.person_id ORDER BY last_name, first_name"); for ($row = 0; $row < $q->rows(); $row++) { $out .= '<li>'; $mpname = member_full_name($q->field($row, 'house'), $q->field($row, 'title'), $q->field($row, 'first_name'), $q->field($row, 'last_name'), $q->field($row, 'constituency')); $mp_website = $q->field($row, 'data_value'); $out .= ' <small>[<a href="websites.php?editperson=' . $q->field($row, 'person_id') . '"'; if ($mp_website) { $out .= ' title="Change URL ' . $mp_website . '">Edit URL</a>]</small>'; } else { $out .= '>Add URL</a>]</small>'; } $out .= ' ' . $mpname; if ($q->field($row, 'constituency') && $q->field($row, 'house') != 2) { $out .= ' (' . $q->field($row, 'constituency') . ')'; } $out .= "</li>\n"; } $out .= '</ul>'; return $out; }
function render_mps_row($mp, &$style, $order, $MPURL) { $style = $style == '1' ? '2' : '1'; $name = member_full_name(3, $mp['title'], $mp['first_name'], $mp['last_name'], $mp['constituency']); ?> <tr> <td class="row-<?php echo $style; ?> "><a href="<?php echo $MPURL->generate() . make_member_url($mp['first_name'] . ' ' . $mp['last_name'], $mp['constituency'], 3); ?> "><?php echo $name; ?> </a></td> <td class="row-<?php echo $style; ?> "><?php echo $mp['party']; ?> </td> <td class="row-<?php echo $style; ?> "><?php echo $mp['constituency']; ?> </td> </tr> <?php }
function _api_getLord_row($row) { global $parties; $row['full_name'] = member_full_name($row['house'], $row['title'], $row['first_name'], $row['last_name'], $row['constituency']); if (isset($parties[$row['party']])) $row['party'] = $parties[$row['party']]; $row = array_map('html_entity_decode', $row); return $row; }
function _api_getMSP_row($row) { global $parties; $row['full_name'] = member_full_name($row['house'], $row['title'], $row['first_name'], $row['last_name'], $row['constituency']); if (isset($parties[$row['party']])) { $row['party'] = $parties[$row['party']]; } list($image, $sz) = find_rep_image($row['person_id']); if ($image) { $row['image'] = $image; } $row = array_map('html_entity_decode', $row); return $row; }
function render_peers_row($peer, $order) { global $parties; $name = member_full_name(2, $peer['title'], $peer['first_name'], $peer['last_name'], $peer['constituency']); if (strstr($name, ',')) { $name = "\"{$name}\""; } print $peer['person_id'] . ',' . ucfirst($name) . ','; if (array_key_exists($peer['party'], $parties)) { print $parties[$peer['party']]; } else { print $peer['party']; } print ',' . 'http://' . DOMAIN . WEBPATH . 'senator/' . make_member_url($name, $peer['constituency']); print "\n"; }
function _api_getPerson_row($row, $has_party = FALSE) { global $parties; $row['full_name'] = member_full_name($row['house'], $row['title'], $row['first_name'], $row['last_name'], $row['constituency']); if ($has_party && isset($parties[$row['party']])) { $row['party'] = $parties[$row['party']]; } list($image, $sz) = find_rep_image($row['person_id']); if ($image) { $row['image'] = $image; } foreach ($row as $k => $r) { if (is_string($r)) { $row[$k] = html_entity_decode($r); } } return $row; }
function render_mps_row($mp, &$style, $order, $MPURL) { $style = $style == '1' ? '2' : '1'; $name = member_full_name(4, $mp['title'], $mp['first_name'], $mp['last_name'], $mp['constituency']); ?> <tr> <td class="row"> <?php list($image, $sz) = find_rep_image($mp['person_id'], true); if ($image) { echo '<a href="' . $MPURL->generate() . make_member_url($mp['first_name'] . ' ' . $mp['last_name'], $mp['constituency'], 1) . '" class="speakerimage"><img height="59" class="portrait" alt="" src="', $image, '"'; echo '></a>'; } ?> </td> <td class="row-<?php echo $style; ?> "><a href="<?php echo $MPURL->generate() . make_member_url($mp['first_name'] . ' ' . $mp['last_name'], $mp['constituency'], 4); ?> "><?php echo $name; ?> </a></td> <td class="row-<?php echo $style; ?> "><?php echo $mp['party']; ?> </td> <td class="row-<?php echo $style; ?> "><?php echo $mp['constituency']; ?> </td> </tr> <?php }
function render_mlas_row($mla, $order) { global $parties; $con = html_entity_decode($mla['constituency']); if (strstr($con, ',')) { $con = "\"{$con}\""; } $name = member_full_name(3, $mla['title'], $mla['first_name'], $mla['last_name'], $mla['constituency']); if (strstr($name, ',')) { $name = "\"{$name}\""; } print $mla['person_id'] . ',' . ucfirst($name) . ','; if (array_key_exists($mla['party'], $parties)) { print $parties[$mla['party']]; } else { print $mla['party']; } print ',' . $con . ',' . 'http://www.openaustralia.org/mla/' . make_member_url($mla['first_name'] . ' ' . $mla['last_name']); print "\n"; }
function _api_getMembers_output($sql) { global $parties; $db = new ParlDB(); $q = $db->query($sql); $output = array(); $last_mod = 0; for ($i = 0; $i < $q->rows(); $i++) { $row = array('member_id' => $q->field($i, 'member_id'), 'person_id' => $q->field($i, 'person_id'), 'name' => html_entity_decode(member_full_name($q->field($i, 'house'), $q->field($i, 'title'), $q->field($i, 'first_name'), $q->field($i, 'last_name'), $q->field($i, 'constituency'))), 'party' => isset($parties[$q->field($i, 'party')]) ? $parties[$q->field($i, 'party')] : $q->field($i, 'party')); if ($q->field($i, 'house') == 1) { $row['constituency'] = html_entity_decode($q->field($i, 'constituency')); } $output[] = $row; $time = strtotime($q->field($i, 'lastupdate')); if ($time > $last_mod) { $last_mod = $time; } } api_output($output, $last_mod); }
function render_msps_row($msp, $order) { global $parties; $con = $msp['constituency']; if (strstr($con, ',')) { $con = "\"{$con}\""; } $name = member_full_name(4, $msp['title'], $msp['first_name'], $msp['last_name'], $msp['constituency']); if (strstr($name, ',')) { $name = "\"{$name}\""; } print $msp['person_id'] . ',' . ucfirst($name) . ','; if (array_key_exists($msp['party'], $parties)) { print $parties[$msp['party']]; } else { print $msp['party']; } print ',' . $con . ',' . 'http://www.theyworkforyou.com/msp/' . make_member_url($msp['first_name'] . ' ' . $msp['last_name']); print "\n"; }
function render_peers_row($peer, &$style, $order, $URL) { global $parties; // Stripes $style = $style == '1' ? '2' : '1'; $name = member_full_name(2, $peer['title'], $peer['first_name'], $peer['last_name'], $peer['constituency']); if (array_key_exists($peer['party'], $parties)) $party = $parties[$peer['party']]; else $party = $peer['party']; # $MPURL->insert(array('pid'=>$peer['person_id'])); ?> <tr> <td class="row"> <?php list($image,$sz) = find_rep_image($peer['person_id'], true, 'lord'); if ($image) { echo '<a href="' . $URL->generate().make_member_url($name) . '" class="speakerimage"><img height="59" class="portrait" alt="" src="', $image, '"'; echo '></a>'; } ?> </td> <td class="row-<?php echo $style; ?>"><a href="<?php echo $URL->generate().make_member_url($name, null, 2); ?>"><?php echo ucfirst($name); ?></a></td> <td class="row-<?php echo $style; ?>"><?php echo $party; ?></td> <td class="row-<?php echo $style; ?>"><?php if (is_array($peer['dept'])) print join('<br>', array_map('manymins', $peer['pos'], $peer['dept'])); elseif ($peer['dept']) print prettify_office($peer['pos'], $peer['dept']); else print ' ' ?></td> </tr> <?php }
function render_mps_row($mp, &$style, $order, $MPURL) { // Stripes $style = $style == '1' ? '2' : '1'; $name = member_full_name(1, $mp['title'], $mp['first_name'], $mp['last_name'], $mp['constituency']); # $MPURL->insert(array('pid'=>$mp['person_id'])); ?> <tr> <td class="row"> <?php list($image, $sz) = find_rep_image($mp['person_id'], true, true); if ($image) { echo '<a href="' . $MPURL->generate() . make_member_url($mp['first_name'] . ' ' . $mp['last_name'], $mp['constituency'], 1) . '" class="speakerimage"><img height="59" class="portrait" alt="" src="', $image, '"'; echo '></a>'; } ?> </td> <td class="row-<?php echo $style; ?> "><a href="<?php echo $MPURL->generate() . make_member_url($mp['first_name'] . ' ' . $mp['last_name'], $mp['constituency'], 1); ?> "><?php echo $name; ?> </a> <?php if ($mp['left_reason'] == 'general_election_not_standing') { print '<br><em>Standing down</em>'; } ?> </td> <td class="row-<?php echo $style; ?> "><?php echo $mp['party']; ?> </td> <td class="row-<?php echo $style; ?> "><?php echo $mp['constituency']; ?> </td> <td class="row-<?php echo $style; ?> "><?php if (is_array($mp['pos'])) { print join('<br>', array_map('prettify_office', $mp['pos'], $mp['dept'])); } elseif ($mp['pos'] || $mp['dept']) { print prettify_office($mp['pos'], $mp['dept']); } else { print ' '; } ?> </td> <?php if ($order == 'expenses') { ?> <td class="row-<?php echo $style; ?> ">£<?php echo number_format($mp['data_value']); ?> </td> <?php } elseif ($order == 'debates') { ?> <td class="row-<?php echo $style; ?> "><?php echo number_format($mp['data_value']); ?> </td> <?php } elseif ($order == 'safety') { ?> <td class="row-<?php echo $style; ?> "><?php echo $mp['data_value']; ?> </td> <?php } ?> </tr> <?php }
function render_peers_row($peer, &$style, $order, $URL) { global $parties; // Stripes $style = $style == '1' ? '2' : '1'; $name = member_full_name(2, $peer['title'], $peer['first_name'], $peer['last_name'], $peer['constituency']); if (array_key_exists($peer['party'], $parties)) { $party = $parties[$peer['party']]; } else { $party = $peer['party']; } # $MPURL->insert(array('pid'=>$peer['person_id'])); $url = $URL->generate() . make_member_url($name, $peer['constituency'], 2); ?> <tr> <td class="row"> <?php list($image, $sz) = find_rep_image($peer['person_id'], true); if ($image) { echo '<a href="', $url, '">'; echo '<img class="portrait" alt="" src="', $image, '"/>'; echo '</a>'; } ?> </td> <td class="row-<?php echo $style; ?> "> <a href="<?php echo $url; ?> "><?php echo ucfirst($name); ?> </a> </td> <td class="row-<?php echo $style; ?> "><?php echo $party; ?> </td> <td class="row-<?php echo $style; ?> "><?php echo $peer['constituency']; ?> </td> <td class="row-<?php echo $style; ?> "><?php if (is_array($peer['dept'])) { print join('<br>', array_map('manymins', $peer['pos'], $peer['dept'])); } elseif ($peer['dept']) { print prettify_office($peer['pos'], $peer['dept']); } else { print ' '; } ?> </td> <?php if ($order == 'debates') { ?> <td class="row-<?php echo $style; ?> "><?php echo number_format($peer['data_value']); ?> </td> <?php } ?> </tr> <?php }
function search_by_usage($search, $house = 0) { $data = array(); $SEARCHENGINE = new SEARCHENGINE($search); $data['pagetitle'] = $SEARCHENGINE->query_description_short(); $SEARCHENGINE = new SEARCHENGINE($search . ' groupby:speech'); $count = $SEARCHENGINE->run_count(0, 5000, 'date'); if ($count <= 0) { $data['error'] = 'No results'; return $data; } $SEARCHENGINE->run_search(0, 5000, 'date'); $gids = $SEARCHENGINE->get_gids(); if (count($gids) <= 0) { $data['error'] = 'No results'; return $data; } if (count($gids) == 5000) { $data['limit_reached'] = true; } # Fetch all the speakers of the results, count them up and get min/max date usage $speaker_count = array(); $gids = join('","', $gids); $db = new ParlDB(); $q = $db->query('SELECT gid,person_id,hdate FROM hansard WHERE gid IN ("' . $gids . '")'); for ($n = 0; $n < $q->rows(); $n++) { $gid = $q->field($n, 'gid'); $person_id = $q->field($n, 'person_id'); $hdate = $q->field($n, 'hdate'); if (!isset($speaker_count[$person_id])) { $speaker_count[$person_id] = 0; $maxdate[$person_id] = '1001-01-01'; $mindate[$person_id] = '9999-12-31'; } $speaker_count[$person_id]++; if ($hdate < $mindate[$person_id]) { $mindate[$person_id] = $hdate; } if ($hdate > $maxdate[$person_id]) { $maxdate[$person_id] = $hdate; } } # Fetch details of all the speakers $speakers = array(); $pids = array(); if (count($speaker_count)) { $person_ids = join(',', array_keys($speaker_count)); $q = $db->query('SELECT member_id, member.person_id, title, given_name, family_name, lordofname, constituency, house, party, moffice_id, dept, position, from_date, to_date, left_house FROM member LEFT JOIN moffice ON member.person_id = moffice.person JOIN person_names pn ON member.person_id = pn.person_id AND pn.type="name" AND pn.start_date <= left_house AND left_house <= pn.end_date WHERE member.person_id IN (' . $person_ids . ') ' . ($house ? " AND house={$house}" : '') . ' ORDER BY left_house DESC'); for ($n = 0; $n < $q->rows(); $n++) { $mid = $q->field($n, 'member_id'); if (!isset($pids[$mid])) { $title = $q->field($n, 'title'); $first = $q->field($n, 'given_name'); $last = $q->field($n, 'family_name'); $lordofname = $q->field($n, 'lordofname'); $house = $q->field($n, 'house'); $party = $q->field($n, 'party'); $full_name = ucfirst(member_full_name($house, $title, $first, $last, $lordofname)); $pid = $q->field($n, 'person_id'); $pids[$mid] = $pid; $speakers[$pid]['house'] = $house; $speakers[$pid]['left'] = $q->field($n, 'left_house'); } $dept = $q->field($n, 'dept'); $posn = $q->field($n, 'position'); $moffice_id = $q->field($n, 'moffice_id'); if ($dept && $q->field($n, 'to_date') == '9999-12-31') { $speakers[$pid]['office'][$moffice_id] = prettify_office($posn, $dept); } if (!isset($speakers[$pid]['name'])) { $speakers[$pid]['name'] = $full_name . ($house == 1 ? ' MP' : ''); $speakers[$pid]['party'] = $party; } } } if (isset($speaker_count[0])) { $speakers[0] = array('party' => '', 'name' => 'Headings, procedural text, etc.', 'house' => 0, 'count' => 0); } $party_count = array(); $ok = 0; foreach ($speakers as $pid => &$speaker) { $speaker['count'] = $speaker_count[$pid]; $speaker['pmaxdate'] = $maxdate[$pid]; $speaker['pmindate'] = $mindate[$pid]; $ok = 1; if (!isset($party_count[$speaker['party']])) { $party_count[$speaker['party']] = 0; } $party_count[$speaker['party']] += $count; } function sort_by_count($a, $b) { if ($a['count'] > $b['count']) { return -1; } if ($a['count'] < $b['count']) { return 1; } return 0; } uasort($speakers, 'sort_by_count'); arsort($party_count); if (!$ok) { $data['error'] = 'No results'; return $data; } $data['party_count'] = $party_count; $data['speakers'] = $speakers; return $data; }
for ($i = 0; $i < count($data['rows']); $i++) { $row = $data['rows'][$i]; echo '<dt><a href="', $row['listurl'], '">'; if (isset($row['parent']) && count($row['parent']) > 0) { echo '<strong>' . $row['parent']['body'] . '</strong>'; } echo '</a> <small>(' . format_date($row['hdate'], SHORTDATEFORMAT) . ')'; if ($row['video_status'] == 5 || $row['video_status'] == 7) { echo ' <em>has video</em> '; } if ($row['collapsed'] && $row['subsection_id']) { $URL = new URL('search'); $URL->insert(array('s' => $info['s'] . " segment:{$row['subsection_id']}")); echo ' <a href="', $URL->generate(), '">See ', $row['collapsed'], ' other result', $row['collapsed'] > 1 ? 's' : '', ' from this ', $hansardmajors[$row['major']]['singular'], '</a>'; } echo '</small>'; if ($match = get_http_var('match')) { echo ' – <a href="/search/record.php?result=', $row['gid'], '&match=', htmlspecialchars($match), '">This is the correct match</a>'; } echo '</dt> <dd><p>'; if (isset($row['speaker']) && count($row['speaker'])) { $sp = $row['speaker']; echo "<em>" . ucfirst(member_full_name($sp['house'], $sp['title'], $sp['first_name'], $sp['last_name'], $sp['constituency'])) . "</em>: "; } echo $row['body'] . "</p></dd>\n"; } echo '</dl> <!-- end searchresults -->'; $PAGE->page_links($info); $PAGE->search_form($info['s']); } // else, no results.
function find_members($args) { // Maybe there'll be a better place to put this at some point... global $PAGE, $db, $parties; if ($args['s'] != '') { // $args['s'] should have been tidied up by the time we get here. // eg, by doing filter_user_input($s, 'strict'); $searchstring = $args['s']; } else { $PAGE->error_message("No search string"); return false; } $searchwords = explode(' ', preg_replace('#[^a-z ]#i', '', $searchstring)); foreach ($searchwords as $i => $searchword) { $searchwords[$i] = mysql_real_escape_string(htmlentities($searchword)); if (!strcasecmp($searchword, 'Opik')) { $searchwords[$i] = 'Öpik'; } } if (count($searchwords) == 1) { $where = "first_name LIKE '%" . $searchwords[0] . "%' OR last_name LIKE '%" . $searchwords[0] . "%'"; } elseif (count($searchwords) == 2) { // We don't do anything special if there are more than two search words. // And here we're assuming the user's put the names in the right order. $where = "(first_name LIKE '%" . $searchwords[0] . "%' AND last_name LIKE '%" . $searchwords[1] . "%')"; $where .= " OR (first_name LIKE '%" . $searchwords[1] . "%' AND last_name LIKE '%" . $searchwords[0] . "%')"; } else { $where = "(first_name LIKE '%" . $searchwords[0] . ' ' . $searchwords[1] . "%' AND last_name LIKE '%" . $searchwords[2] . "%')"; $where .= " OR (first_name LIKE '%" . $searchwords[0] . "%' AND last_name LIKE '%" . $searchwords[1] . ' ' . $searchwords[2] . "%')"; } $q = $db->query("SELECT person_id,\n title, first_name, last_name,\n\t\t\t\t\t\t\tconstituency, party,\n left_house, house\n\t\t\t\t\tFROM \tmember\n\t\t\t\t\tWHERE\t({$where})\n\t\t\t\t\tORDER BY last_name, first_name, person_id, entered_house desc\n\t\t\t\t\t"); if ($q->rows() > 0) { $URL1 = new URL('mp'); $URL2 = new URL('peer'); $members = array(); $last_pid = -1; for ($n = 0; $n < $q->rows(); $n++) { if ($q->field($n, 'person_id') != $last_pid) { $last_pid = $q->field($n, 'person_id'); if ($q->field($n, 'left_house') != '9999-12-31') { $former = 'formerly '; } else { $former = ''; } if ($q->field($n, 'house') == 1) { $URL1->insert(array('pid' => $last_pid)); $s = '<a href="' . $URL1->generate() . '"><strong>'; $s .= $q->field($n, 'first_name') . ' ' . $q->field($n, 'last_name') . '</strong></a> (' . $former . $q->field($n, 'constituency') . ', '; } else { $URL2->insert(array('pid' => $last_pid)); $s = '<a href="' . $URL2->generate() . '"><strong>'; $s .= member_full_name($q->field($n, 'house'), $q->field($n, 'title'), $q->field($n, 'first_name'), $q->field($n, 'last_name'), $q->field($n, 'constituency')); $s .= '</strong></a> ('; } $party = $q->field($n, 'party'); if (isset($parties[$party])) { $party = $parties[$party]; } $s .= $party . ')'; $MOREURL = new URL('search'); $MOREURL->insert(array('pid' => $last_pid, 'pop' => 1, 's' => null)); $s .= ' - <a href="' . $MOREURL->generate() . '">View recent appearances</a>'; $members[] = $s; } } ?> <div id="people_results"> <h3>Representatives matching '<?php echo htmlentities($searchstring); ?> '</h3> <ul> <li><?php print implode("</li>\n\t<li>", $members); ?> </li> </ul> </div> <?php } // We don't display anything if there were no matches. }
echo $count; ?> "></a><strong><a href="<?php echo $wran['list_url']; ?> "><?php echo $wran['parent']['body'] . ': ' . $wran['body']; ?> </a></strong> <?php echo format_date($wran['hdate'], LONGDATEFORMAT) . ' ' . $totalcomments; ?> </dt> <dd><?php if (sizeof($speaker)) { ?> <a href="<?php echo $speaker['url']; ?> "><?php echo member_full_name($speaker['house'], $speaker['title'], $speaker['first_name'], $speaker['last_name'], $speaker['constituency']); ?> </a>: <?php } echo trim_characters($wran['child']['body'], 0, 200); ?> </dd> <?php } ?> </dl>
?> <item> <title><?php if (isset($row['parent']) && count($row['parent']) > 0) { echo strip_tags($row['parent']['body']); } echo ' (' . format_date($row['hdate'], SHORTDATEFORMAT) . ')'; ?> </title> <link>http://www.theyworkforyou.com<?php echo $row['listurl']; ?> </link> <pubDate><?php echo $date; ?> </pubDate> <description><?php if (isset($row['speaker']) && count($row['speaker'])) { $sp = $row['speaker']; $name = ucfirst(member_full_name($sp['house'], $sp['title'], $sp['first_name'], $sp['last_name'], $sp['constituency'])); echo entities_to_numbers($name) . ': '; } echo htmlspecialchars(str_replace(array('—', '<span class="hi">', '</span>'), array('-', '<b>', '</b>'), $row['body'])) . "</description>\n</item>\n"; } } ?> </channel> </rss>
<?php # XXX Lots here copied from elsewhere... Damn you deadlines. include_once 'min-init.php'; include_once INCLUDESPATH . 'easyparliament/member.php'; include_once '../api/api_functions.php'; $pid = $_GET['pid']; $db = new ParlDB(); $q = $db->query("select * from member\n\twhere house=1 and person_id = '" . mysql_real_escape_string($pid) . "'\n\torder by left_house desc limit 1"); if (!$q->rows()) { print '<error>Unknown ID</error>'; exit; } $row = $q->row(0); $row['full_name'] = member_full_name($row['house'], $row['title'], $row['first_name'], $row['last_name'], $row['constituency']); if (isset($parties[$row['party']])) { $row['party'] = $parties[$row['party']]; } list($image, $sz) = find_rep_image($row['person_id'], true); if ($image) { $row['image'] = $image; } $q = $db->query("SELECT position,dept FROM moffice WHERE to_date='9999-12-31'\n\tand source='chgpages/selctee' and person=" . mysql_real_escape_string($pid) . ' ORDER BY from_date DESC'); for ($i = 0; $i < $q->rows(); $i++) { $row['selctee'][] = prettify_office($q->field($i, 'position'), $q->field($i, 'dept')); } /* $q = $db->query("SELECT title,chairman from pbc_members,bills where member_id=".$row['member_id'] . ' and bill_id=bills.id'); for ($i=0; $i<$q->rows(); $i++) { $member = 'Member';
) ), etc. ) ); */ twfy_debug("TEMPLATE", "hansard_recent_wrans.php"); echo '<dl class="recent-wrans">'; $count = 0; foreach ($data['data'] as $wran) { $count++; $extrainfo = array(); if ($wran['totalcomments'] > 0) { $plural = make_plural('annotation', $wran['totalcomments']); $totalcomments = '; ' . $wran['totalcomments'] . ' ' . $plural; } else { $totalcomments = ''; } $speaker = $wran['child']['speaker']; echo '<dt><a name="w', $count, '"></a><strong><a href="', $wran['list_url'], '">'; if ($wran['parent']['body']) { echo $wran['parent']['body'], ': '; } echo $wran['body'], '</a></strong> <small>(', format_date($wran['hdate'], LONGDATEFORMAT), $totalcomments, ')</small></dt><dd>'; if (sizeof($speaker)) { echo '<a href="', $speaker['url'], '">', member_full_name($speaker['house'], $speaker['title'], $speaker['first_name'], $speaker['last_name'], $speaker['constituency']), '</a>: '; } echo $wran['child']['body']; echo '</dd>'; } echo '</dl>';
function render_mps_row($mp, &$style, $order, $MPURL) { // Stripes $style = $style == '1' ? '2' : '1'; $name = member_full_name(1, $mp['title'], $mp['first_name'], $mp['last_name'], $mp['constituency']); $url = $MPURL->generate() . make_member_url($mp['first_name'] . ' ' . $mp['last_name'], $mp['constituency'], 1); # $MPURL->insert(array('pid'=>$mp['person_id'])); list($image, $sz) = find_rep_image($mp['person_id'], true); ?> <tr> <td class="row"> <?php if ($image) { echo '<a href="', $url, '">', '<img class="portrait" alt="" src="', $image, '">', '</a>'; } ?> </td> <td class="row-<?php echo $style; ?> "><a href="<?php echo $MPURL->generate() . make_member_url($mp['first_name'] . ' ' . $mp['last_name'], $mp['constituency'], 1); ?> "><?php echo $name; ?> </a></td> <td class="row-<?php echo $style; ?> "><?php echo $mp['party']; ?> </td> <td class="row-<?php echo $style; ?> "><?php echo $mp['constituency']; ?> </td> <td class="row-<?php echo $style; ?> "><?php if (is_array($mp['dept'])) { print join('<br>', array_map('manymins', $mp['pos'], $mp['dept'])); } elseif ($mp['dept'] || $mp['pos']) { print prettify_office($mp['pos'], $mp['dept']); } else { print ' '; } ?> </td> <?php if ($order == 'expenses') { ?> <td class="row-<?php echo $style; ?> ">£<?php echo number_format($mp['data_value']); ?> </td> <?php } elseif ($order == 'debates') { ?> <td class="row-<?php echo $style; ?> "><?php echo number_format($mp['data_value']); ?> </td> <?php } elseif ($order == 'safety') { ?> <td class="row-<?php echo $style; ?> "><?php echo $mp['data_value']; ?> </td> <?php } ?> </tr> <?php }
function _get_data_by_recent($args) { // $args should contain 'num', indicating how many to get. // and perhaps pid too, for a particular person twfy_debug(get_class($this), "getting data by recent"); // What we return. $data = array(); if (isset($args['num']) && is_numeric($args['num'])) { $num = $args['num']; } else { $num = 25; } if (isset($args['page']) && is_numeric($args['page'])) { $page = $args['page']; } else { $page = 1; } $limit = $num * ($page - 1) . ',' . $num; $where = array('visible=' => '1'); if (isset($args['pid']) && is_numeric($args['pid'])) { $where['person_id='] = $args['pid']; } $input = array('amount' => array('user' => true), 'where' => $where, 'order' => 'posted DESC', 'limit' => $limit); $commentsdata = $this->_get_comment_data($input); $data['comments'] = $commentsdata; $data['results_per_page'] = $num; $data['page'] = $page; if (isset($args['pid']) && is_numeric($args['pid'])) { $data['pid'] = $args['pid']; $q = 'SELECT title, first_name, last_name, constituency, house FROM member WHERE left_house="9999-12-31" and person_id = ' . $args['pid']; $q = $this->db->query($q); $data['full_name'] = member_full_name($q->field(0, 'house'), $q->field(0, 'title'), $q->field(0, 'first_name'), $q->field(0, 'last_name'), $q->field(0, 'constituency')); $q = 'SELECT COUNT(*) AS count FROM comments,hansard,member WHERE visible=1 AND comments.epobject_id = hansard.epobject_id and hansard.speaker_id = member.member_id and person_id = ' . $args['pid']; } else { $q = 'SELECT COUNT(*) AS count FROM comments WHERE visible=1'; } $q = $this->db->query($q); $data['total_results'] = $q->field(0, 'count'); return $data; }
public static function getRegionalList($postcode, $house, $type) { $db = new \ParlDB(); $dissolution_dates = array(3 => '2011-03-24', 4 => '2011-03-23'); $mreg = array(); $constituencies = postcode_to_constituencies($postcode); if (isset($constituencies[$type])) { $cons_name = $constituencies[$type]; $query_base = "SELECT member.person_id, title, lordofname, given_name, family_name, constituency, house\n FROM member, person_names\n WHERE\n member.person_id = person_names.person_id\n AND person_names.type = 'name'\n AND constituency = :cons_name\n AND house = :house\n AND left_house >= start_date\n AND left_house <= end_date"; $q = $db->query("{$query_base} AND left_reason = 'still_in_office'", array(':house' => $house, ':cons_name' => $cons_name)); if (!$q->rows()) { $q = $db->query("{$query_base} AND left_house = :dissolution_date", array(':house' => $house, ':cons_name' => $cons_name, ':dissolution_date' => $dissolution_dates[$house])); } for ($i = 0; $i < $q->rows; $i++) { $name = member_full_name($house, $q->field($i, 'title'), $q->field($i, 'given_name'), $q->field($i, 'family_name'), $q->field($i, 'lordofname')); $mreg[] = array('person_id' => $q->field($i, 'person_id'), 'name' => $name, 'house' => $q->field($i, 'house'), 'constituency' => $q->field($i, 'constituency')); } } return $mreg; }
function full_name($no_mp_title = false) { $title = $this->title; if ($no_mp_title && $this->house_disp == 1) { $title = ''; } return member_full_name($this->house_disp, $title, $this->first_name, $this->last_name, $this->constituency); }
} #mlog($row['major'] . " " . $row['gid'] ."\n"); if ($row['hdate'] < '2008-01-14') { continue; } $q = $db->query('SELECT gid_from FROM gidredirect WHERE gid_to=\'uk.org.publicwhip/' . $sects_short[$major] . '/' . mysql_escape_string($row['gid']) . "'"); if ($q->rows() > 0) { continue; } --$k; if ($k >= 0) { $any_content = true; $parentbody = str_replace(array('—', '<span class="hi">', '</span>'), array('-', '*', '*'), $row['parent']['body']); $body = str_replace(array('£', '—', '<span class="hi">', '</span>'), array("£", '-', '*', '*'), $row['body']); if (isset($row['speaker']) && count($row['speaker'])) { $body = html_entity_decode(member_full_name($row['speaker']['house'], $row['speaker']['title'], $row['speaker']['first_name'], $row['speaker']['last_name'], $row['speaker']['constituency'])) . ': ' . $body; } $body = wordwrap($body, 72); $o[$major] .= $parentbody . ' (' . format_date($row['hdate'], SHORTDATEFORMAT) . ")\nhttp://www.openaustralia.org" . $row['listurl'] . "\n"; $o[$major] .= $body . "\n\n"; } $total++; } $count[$major] = $total; if ($any_content) { # Add data to email_text $desc = trim(html_entity_decode($data['searchdescription'])); $deschead = ucfirst(str_replace('containing ', '', $desc)); foreach ($o as $major => $body) { if ($body) { $heading = $deschead . ' : ' . $count[$major] . ' ' . $sects[$major] . ($count[$major] != 1 ? 's' : '');