You are here

AbstractHashLookup.php in Redis 7.3

Same filename and directory in other branches
  1. 7.2 lib/Redis/Path/AbstractHashLookup.php

File

lib/Redis/Path/AbstractHashLookup.php
View source
<?php

/**
 * Common implementation for Redis-based implementations
 */
abstract class Redis_Path_AbstractHashLookup extends Redis_AbstractBackend implements Redis_Path_HashLookupInterface {

  /**
   * @todo document me
   *
   * @param string $key
   * @param string $hkey
   * @param string $hvalue
   */
  protected abstract function saveInHash($key, $hkey, $hvalue);

  /**
   * @todo document me
   *
   * @param string $key
   * @param string $hkey
   * @param string $hvalue
   */
  protected abstract function deleteInHash($key, $hkey, $hvalue);

  /**
   * @todo document me
   *
   * @param string $keyPrefix
   * @param string $hkey
   * @param string $language
   */
  protected abstract function lookupInHash($keyPrefix, $hkey, $language = null);

  /**
   * Normalize value to avoid duplicate or false negatives
   *
   * @param string $value
   *
   * @return string
   */
  private function normalize($value) {
    if (null !== $value) {
      return strtolower(trim($value));
    }
  }

  /**
   * {@inheritdoc}
   */
  public function saveAlias($source, $alias, $language = null) {
    $alias = $this
      ->normalize($alias);
    $source = $this
      ->normalize($source);
    if (null === $language) {
      $language = LANGUAGE_NONE;
    }
    if (!empty($source)) {
      $this
        ->saveInHash($this
        ->getKey(array(
        self::KEY_ALIAS,
        $language,
      )), $source, $alias);
    }
    if (!empty($alias)) {
      $this
        ->saveInHash($this
        ->getKey(array(
        self::KEY_SOURCE,
        $language,
      )), $alias, $source);
    }
  }

  /**
   * {@inheritdoc}
   */
  public function deleteAlias($source, $alias, $language = null) {
    $alias = $this
      ->normalize($alias);
    $source = $this
      ->normalize($source);
    if (null === $language) {
      $language = LANGUAGE_NONE;
    }
    $this
      ->deleteInHash($this
      ->getKey(array(
      self::KEY_ALIAS,
      $language,
    )), $source, $alias);
    $this
      ->deleteInHash($this
      ->getKey(array(
      self::KEY_SOURCE,
      $language,
    )), $alias, $source);
  }

  /**
   * {@inheritdoc}
   */
  public function lookupAlias($source, $language = null) {
    $source = $this
      ->normalize($source);
    return $this
      ->lookupInHash(self::KEY_ALIAS, $source, $language);
  }

  /**
   * {@inheritdoc}
   */
  public function lookupSource($alias, $language = null) {
    $alias = $this
      ->normalize($alias);
    return $this
      ->lookupInHash(self::KEY_SOURCE, $alias, $language);
  }

}

Classes

Namesort descending Description
Redis_Path_AbstractHashLookup Common implementation for Redis-based implementations