You are here

function smart_paging_url_inbound_alter in Smart Paging 7.2

Same name and namespace in other branches
  1. 7 smart_paging.module \smart_paging_url_inbound_alter()

Implements hook_url_inbound_alter().

File

./smart_paging.module, line 529
Provides smart paging capability to Drupal contents.

Code

function smart_paging_url_inbound_alter(&$path, &$original_path, $path_language) {
  if (variable_get('smart_paging_enable_clean_url', TRUE)) {
    $arg = arg(NULL, $path);
    $arg_count = count($arg) - 1;
    $page = $arg[$arg_count];
    $sub_page = $arg_count > 0 ? $arg[$arg_count - 1] : NULL;

    // Check if path has pattern of http://example.com/<path alias>/<pager prefix>/<sub_page>/<page>
    if ($arg_count > 2 && is_numeric($sub_page) && is_numeric($page)) {
      if ($arg[$arg_count - 2] == variable_get('smart_paging_path_prefix', 'page')) {

        // Set the 'page' value of GET method.
        $_GET['page'] = "{$sub_page},{$page}";

        // Extract alias from arg().
        $alias = $arg;
        unset($alias[$arg_count - 2], $alias[$arg_count - 1], $alias[$arg_count]);

        // Get the Drupal system URL for a path alias.
        if (!($drupal_path = drupal_lookup_path('source', implode('/', $alias), $path_language)) && function_exists("path_alias_xt_get_normal_path")) {
          $drupal_path = path_alias_xt_get_normal_path(implode('/', $alias), $path_language);
        }
        if (!empty($drupal_path)) {

          // Alter inbound URL request.
          $path = $drupal_path;
        }
        else {
          $path = implode('/', $alias);
        }
      }
    }
  }
}