Commit | Line | Data |
---|---|---|
7f254ad8 AE |
1 | <?php |
2 | ||
3 | /** | |
4 | * @file | |
5 | * Module to help test hook_url_inbound_alter() and hook_url_outbound_alter(). | |
6 | */ | |
7 | ||
8 | /** | |
9 | * Implements hook_menu(). | |
10 | */ | |
11 | function url_alter_test_menu() { | |
12 | $items['url-alter-test/foo'] = array( | |
13 | 'title' => 'Foo', | |
14 | 'page callback' => 'url_alter_test_foo', | |
15 | 'access arguments' => array('access content'), | |
16 | 'type' => MENU_CALLBACK, | |
17 | ); | |
18 | return $items; | |
19 | } | |
20 | ||
21 | /** | |
22 | * Menu callback. | |
23 | */ | |
24 | function url_alter_test_foo() { | |
25 | print 'current_path=' . current_path() . ' request_path=' . request_path(); | |
26 | exit; | |
27 | } | |
28 | ||
29 | /** | |
30 | * Implements hook_url_inbound_alter(). | |
31 | */ | |
32 | function url_alter_test_url_inbound_alter(&$path, $original_path, $path_language) { | |
33 | if (!request_path() && !empty($_GET['q'])) { | |
34 | drupal_set_message("\$_GET['q'] is non-empty with an empty request path."); | |
35 | } | |
36 | ||
37 | // Rewrite user/username to user/uid. | |
38 | if (preg_match('!^user/([^/]+)(/.*)?!', $path, $matches)) { | |
39 | if ($account = user_load_by_name($matches[1])) { | |
40 | $matches += array(2 => ''); | |
41 | $path = 'user/' . $account->uid . $matches[2]; | |
42 | } | |
43 | } | |
44 | ||
45 | // Rewrite community/ to forum/. | |
46 | if ($path == 'community' || strpos($path, 'community/') === 0) { | |
47 | $path = 'forum' . substr($path, 9); | |
48 | } | |
49 | ||
50 | if ($path == 'url-alter-test/bar') { | |
51 | $path = 'url-alter-test/foo'; | |
52 | } | |
53 | } | |
54 | ||
55 | /** | |
56 | * Implements hook_url_outbound_alter(). | |
57 | */ | |
58 | function url_alter_test_url_outbound_alter(&$path, &$options, $original_path) { | |
59 | // Rewrite user/uid to user/username. | |
60 | if (preg_match('!^user/([0-9]+)(/.*)?!', $path, $matches)) { | |
61 | if ($account = user_load($matches[1])) { | |
62 | $matches += array(2 => ''); | |
63 | $path = 'user/' . $account->name . $matches[2]; | |
64 | } | |
65 | } | |
66 | ||
67 | // Rewrite forum/ to community/. | |
68 | if ($path == 'forum' || strpos($path, 'forum/') === 0) { | |
69 | $path = 'community' . substr($path, 5); | |
70 | } | |
71 | } |