You are here

function fb_settings_url_rewrite in Drupal for Facebook 5.2

Same name and namespace in other branches
  1. 5 fb_settings.inc \fb_settings_url_rewrite()

Rewrite URLs for facebook canvas pages.

Ideally, this function would live in fb_canvas.module and only be set when serving canvas pages. However, it gets called before modules are loaded. So it must live here.

1 call to fb_settings_url_rewrite()
fb_settings.inc in ./fb_settings.inc

File

./fb_settings.inc, line 72

Code

function fb_settings_url_rewrite($type, $path, $original) {

  //dpm(func_get_args(), 'fb_canvas_url_rewrite');

  //print("fb_canvas_url_rewrite($type, $path, $original)");
  $prefixes = array(
    FB_SETTINGS_APP_NID,
    FB_SETTINGS_PAGE_TYPE,
    FB_SETTINGS_SESSION_KEY,
  );
  if ($type == 'source') {

    // See if this is a request for us.
    if (strpos($path, FB_SETTINGS_APP_NID . '/') === 0) {

      // Too soon for arg() function.
      $args = explode('/', $path);
      while (count($args) && in_array($args[0], $prefixes)) {
        $key = array_shift($args);
        $value = array_shift($args);
        fb_settings($key, $value);

        // Store for use later.
      }
      if ($app_nid = fb_settings(FB_SETTINGS_APP_NID)) {
        if (count($args)) {
          $path = implode('/', $args);

          // remaining args
          $path = drupal_get_normal_path($path);
        }
        else {

          // frontpage
          $path = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
        }
      }
    }
  }
  else {
    if ($type == 'alias') {
      $pre = '';

      // Prefix each known value to the URL
      foreach ($prefixes as $prefix) {
        if ($value = fb_settings($prefix)) {
          $pre .= $prefix . '/' . $value . '/';
        }
      }
      $path = $pre . $path;
    }
  }
  return $path;
}