function test_make_search_links() { // Defaults $this->assertTrue(is_array(make_search_links('', 'x:%s'))); $this->assertEqual(make_search_links('', 'x:%s'), array(), 'empty: %s'); // Scalar $this->assertEqual(make_search_links('foo', 'x:%s'), array(html_link('x:foo', 'foo')), 'scalar: %s'); // Simple array $this->assertEqual(make_search_links(array('foo', 'bar'), 'x:%s'), array(html_link('x:foo', 'foo'), html_link('x:bar', 'bar')), 'simple array: %s'); $this->assertEqual(make_search_links(array(), 'x:%s'), array(), 'empty array: %s'); // 2D array $test = array(array('key' => 'F', 'title' => 'foo'), array('key' => 'B', 'title' => 'bar')); $expect = array(html_link('x:F', 'foo'), html_link('x:B', 'bar')); $this->assertEqual(make_search_links($test, 'x:%s'), $expect, '2D array: %s'); // 2D with override $test = array(array('a' => 'F', 'b' => 'foo'), array('a' => 'B', 'b' => 'bar')); $this->assertEqual(make_search_links($test, 'x:%s', 'a', 'b'), $expect, '2D array with different keys: %s'); // URLs are escaped $this->assertEqual(make_search_links('foo bar', 'x:%s'), array(html_link('x:foo+bar', 'foo bar')), 'escaping: %s'); // Missing title defaults to key $this->assertEqual(make_search_links(array('key' => 'foo'), 'x:%s'), array(html_link('x:foo', 'foo')), 'missing title: %s'); }
<?php // Credits -- technical // Technical roles need to be sorted and collated $tech_roles = array('Director' => array(), 'Producer' => array(), 'Cinematographer' => array(), 'Writer' => array(), 'Editor' => array(), 'Screenplay' => array(), 'Adapter for Radio' => array(), 'Adapter for Television' => array(), 'Music' => array(), 'Music Director' => array(), 'Production Design' => array(), 'Costume' => array(), 'Art Direction' => array(), 'Animator' => array(), 'Choreographer' => array(), 'Contributor' => array(), 'Composer' => array()); // Gather up technical and non-technical roles $cast = array(); foreach ($RECORD['person'] as $person) { if ($person['is_technical']) { $tech_roles[$person['role']][] = $person['name']; } else { $cast[] = $person; } } foreach ($tech_roles as $role => $names) { if ($names) { print "<dt>{$role}</dt><dd>" . join('; ', make_search_links($names, $MODULE->url('search', '?adv_index1=person&adv_q1=%%22%s%%22'))) . "</dd>\n"; } } // Cast -- non-technical if (count($cast)) { // Yes it's a table. Sue me. Actually this is tabular data, so it's appropriate print "<dt>Cast</dt>\n"; print "<dd><table width=\"70%\">\n"; foreach ($cast as $person) { $person_link = html_link($MODULE->url('search', sprintf('?adv_index1=person&adv_q1=%%22%s%%22', urlencode($person['name']))), $person['name']); if ($person['role'] == 'Performer') { $role_link = ' '; } else { $role_link = $person['role']; } //### TODO