You are here

function pathauto_static in Pathauto 6.2

Backport of drupal_static from Drupal 7.

5 calls to pathauto_static()
pathauto_cleanstring in ./pathauto.inc
Clean up a string segment to be used in an URL alias.
pathauto_clean_alias in ./pathauto.inc
Clean up an URL alias.
pathauto_pattern_load_by_entity in ./pathauto.module
Load an URL alias pattern by entity, bundle, and language.
pathauto_punctuation_chars in ./pathauto.inc
Return an array of arrays for punctuation values.
pathauto_static_reset in ./pathauto.module
Backport of drupal_static_reset() from Drupal 7.

File

./pathauto.module, line 822
Main file for the Pathauto module, which automatically generates aliases for content.

Code

function &pathauto_static($name, $default_value = NULL, $reset = FALSE) {
  static $data = array(), $default = array();

  // First check if dealing with a previously defined static variable.
  if (isset($data[$name]) || array_key_exists($name, $data)) {

    // Non-NULL $name and both $data[$name] and $default[$name] statics exist.
    if ($reset) {

      // Reset pre-existing static variable to its default value.
      $data[$name] = $default[$name];
    }
    return $data[$name];
  }

  // Neither $data[$name] nor $default[$name] static variables exist.
  if (isset($name)) {
    if ($reset) {

      // Reset was called before a default is set and yet a variable must be
      // returned.
      return $data;
    }

    // First call with new non-NULL $name. Initialize a new static variable.
    $default[$name] = $data[$name] = $default_value;
    return $data[$name];
  }

  // Reset all: ($name == NULL). This needs to be done one at a time so that
  // references returned by earlier invocations of drupal_static() also get
  // reset.
  foreach ($default as $name => $value) {
    $data[$name] = $value;
  }

  // As the function returns a reference, the return should always be a
  // variable.
  return $data;
}