OAuthライブラリのストレージエンジンの例の翻訳

http://oauth.googlecode.com/svn/code/php/example/SimpleOAuthDataStore.php
をとりあえず、翻訳してみたので載せておきます。
ライセンスはMIT ライセンスです。
http://oauth.googlecode.com/svn/code/php/LICENSE.txt

<?php

/*  とてもナイーブな dbm-based oauth ストレージ
 *
 *  注意: これは参照だけのためのもので、
 *  セキュリティ上の穴があり簡単にトークンシークレットを取得できます。
 */
class SimpleOAuthDataStore extends OAuthDataStore {
  private $dbh;
  /**
   * コンストラクタ
   * @param $path gdbmのパス
   */
  function __construct($path = "oauth.gdbm") {
    // dbをオープンする
    $this->dbh = dba_popen($path, 'c', 'gdbm');
  }

  /**
   * デストラクタ
   */
  function __destruct() {
    // dbを閉じる
    dba_close($this->dbh);
  }

  /**
   * コンシューマー検索
   * @param string $consumer_key コンシューマーキー
   * @return OAuthConsumer 成功時: コンシューマ 失敗時: NULL
   */
  function lookup_consumer($consumer_key) {

    // コンシューマーキー取得
    $rv = dba_fetch("consumer_$consumer_key", $this->dbh);

    // 失敗のときはNULL
    if ($rv === FALSE) {
      return NULL;
    }

    // シリアライズされていたものを元に戻す
    $obj = unserialize($rv);

    // OAuthConsumerでなければNULL
    if (!($obj instanceof OAuthConsumer)) {
      return NULL;
    }
    // OAuthCOnsumerを返す
    return $obj;
  }
  /**
   * トークン検索
   * @param $consumer コンシューマ(この例では未使用)
   * @param string $token_type トークンタイプ
   * @param string $token トークン文字列
   * @return OAuthToken 成功時: トークン 失敗時: NULL
   */
  function lookup_token($consumer, $token_type, $token) {

    // トークン取得
    $rv = dba_fetch("${token_type}_${token}", $this->dbh);

    // 失敗
    if ($rv === FALSE) {
      return NULL;
    }

    // アンシリアライズ
    $obj = unserialize($rv);

    // OAuthTokenではない
    if (!($obj instanceof OAuthToken)) {
      return NULL;
    }
    // OAuthTokenを返す
    return $obj;
  }

  /**
   * 空トークン検索
   * @param $consumer コンシューマ(この例では未使用)
   * @param string $token トークン文字列
   * @param string $nonce 空文字列
   * @param string $timestamp タイムスタンプ
   * @return bool true 空トークンあり false 空トークン無しなので登録
   */
  function lookup_nonce($consumer, $token, $nonce, $timestamp) {

    // 空トークンがある?
    if (dba_exists("nonce_$nonce", $this->dbh)) {
      // TRUE
      return TRUE;
    } else {
	  // ないときはTRUEにする
      dba_insert("nonce_$nonce", "1", $this->dbh);
      return FALSE;
    }
  }

  /**
   * トークン生成
   * @param $consumer コンシューマ(この例では未使用)
   * @param string $type タイプ デフォルト "request"
   * @return OAuthToken 失敗時は OAuthException例外
   */
  function new_token($consumer, $type="request") {

    // 時間をmd5したものをキーにする
    $key = md5(time());
    // シークレットはtime()+time()
    $secret = time() + time();

    // トークンを作成
    $token = new OAuthToken($key, md5(md5($secret)));

    // DB登録
    if (!dba_insert("${type}_$key", serialize($token), $this->dbh)) {
      throw new OAuthException("doooom!");
    }
    return $token;
  }

  /**
   * リクエストトークン生成
   * @param $consumer コンシューマ(この例では未使用)
   * @return OAuthToken 失敗時は OAuthException例外
   */
  function new_request_token($consumer) {
    return $this->new_token($consumer, "request");
  }

  /**
   * アクセストークン生成
   * @param $consumer コンシューマ(この例では未使用)
   * @return OAuthToken 失敗時は OAuthException例外
   */
  function new_access_token($token, $consumer) {

    $token = $this->new_token($consumer, 'access');

    // 対応リクエストトークンを削除
    dba_delete("request_" . $token->key, $this->dbh);
    return $token;
  }
}