Drupal PHP Cross Reference Content Management Systems

Source: /modules/simpletest/tests/url_alter_test.module - 71 lines - 1795 bytes - Summary - Text - Print

   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  }

title

Description

title

Description

title

Description

title

title

Body