/** * Test looking up a person by full name works as expected. */ public function testSearchMemberDbLookupFullName() { // Test a full name. $results = \MySociety\TheyWorkForYou\Utility\Search::searchMemberDbLookup('Mary Smith'); $this->assertEquals(1, $results->rows()); $this->assertEquals(3, $results->field(0, 'person_id')); // Test an inverse full name. $results = \MySociety\TheyWorkForYou\Utility\Search::searchMemberDbLookup('Smith Mary'); $this->assertEquals(1, $results->rows()); $this->assertEquals(3, $results->field(0, 'person_id')); // Test a name with title. $results = \MySociety\TheyWorkForYou\Utility\Search::searchMemberDbLookup('Mrs Smith'); $this->assertEquals(1, $results->rows()); $this->assertEquals(3, $results->field(0, 'person_id')); }
private function parse_person_params() { $searchstring = ''; # Searching from MP pages if ($searchspeaker = trim(get_http_var('pid'))) { $searchstring .= " speaker:{$searchspeaker}"; } # Searching from MP pages if ($searchspeaker = trim(get_http_var('person'))) { $q = \MySociety\TheyWorkForYou\Utility\Search::searchMemberDbLookup($searchspeaker); $pids = array(); $row_count = $q->rows(); for ($i = 0; $i < $row_count; $i++) { $pids[$q->field($i, 'person_id')] = true; } $pids = array_keys($pids); if (count($pids) > 0) { $searchstring .= ' speaker:' . join(' speaker:', $pids); } } return $searchstring; }
private function find_members() { $searchstring = trim(preg_replace('#-?[a-z]+:[a-z0-9]+#', '', $this->searchstring)); $q = \MySociety\TheyWorkForYou\Utility\Search::searchMemberDbLookup($searchstring); if (!$q) { return array(); } $members = array(); if ($q->rows() > 0) { $row_count = $q->rows(); for ($n = 0; $n < $row_count; $n++) { $member = new \MySociety\TheyWorkForYou\Member(array('person_id' => $q->field($n, 'person_id'))); // searchMemberDbLookup returns dups so we // key by person_id to work round this $members[$member->person_id] = $member; } } return $members; }