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);
}
Exemple #3
0
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;
}
Exemple #4
0
 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;
 }
Exemple #5
0
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;
}
Exemple #6
0
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;
}
Exemple #7
0
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 
}
Exemple #8
0
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;
}
Exemple #9
0
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;
}
Exemple #10
0
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";
}
Exemple #11
0
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;
}
Exemple #12
0
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 
}
Exemple #13
0
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);
}
Exemple #15
0
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 '&nbsp;'
?></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 '&nbsp;';
    }
    ?>
</td>
<?php 
    if ($order == 'expenses') {
        ?>
				<td class="row-<?php 
        echo $style;
        ?>
">&pound;<?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 
}
Exemple #18
0
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 '&nbsp;';
    }
    ?>
</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;
}
Exemple #20
0
    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 ' &ndash; <a href="/search/record.php?result=', $row['gid'], '&amp;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.
Exemple #21
0
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] = '&Ouml;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.
}
Exemple #22
0
    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>
Exemple #23
0
        ?>
<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('&#8212;', '<span class="hi">', '</span>'), array('-', '<b>', '</b>'), $row['body'])) . "</description>\n</item>\n";
    }
}
?>
</channel>
</rss>

Exemple #24
0
<?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';
Exemple #25
0
				)
			),
			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>';
Exemple #26
0
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 '&nbsp;';
    }
    ?>
</td>
<?php 
    if ($order == 'expenses') {
        ?>
				<td class="row-<?php 
        echo $style;
        ?>
">&pound;<?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;
 }
Exemple #28
0
 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;
 }
Exemple #29
0
 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);
 }
Exemple #30
0
     }
     #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('&#8212;', '<span class="hi">', '</span>'), array('-', '*', '*'), $row['parent']['body']);
         $body = str_replace(array('&#163;', '&#8212;', '<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' : '');