protected function _init()
 {
     if (FALSE === $this->_initialized) {
         $baseArn = NULL;
         $apiKey = NULL;
         $apiSecret = NULL;
         $region = NULL;
         if (class_exists('Configure') && NULL !== Configure::constant('AWS_SNS_ARN_BASE')) {
             $baseArn = Configure::AWS_SNS_ARN_BASE;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AWS_KEY')) {
             $apiKey = Configure::AWS_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AWS_SNS_API_KEY')) {
             $apiKey = Configure::AWS_SNS_API_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AWS_SECRET')) {
             $apiSecret = Configure::AWS_SECRET;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AWS_SNS_API_SECRET')) {
             $apiSecret = Configure::AWS_SNS_API_SECRET;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AWS_REGION')) {
             $region = Configure::AWS_REGION;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AWS_SNS_REGION')) {
             $region = Configure::AWS_SNS_REGION;
         } elseif (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
             $ProjectConfigure = PROJECT_NAME . 'Configure';
             if (NULL !== $ProjectConfigure::constant('AWS_SNS_ARN_BASE')) {
                 $baseArn = $ProjectConfigure::AWS_SNS_ARN_BASE;
             }
             if (NULL !== $ProjectConfigure::constant('AWS_KEY')) {
                 $apiKey = $ProjectConfigure::AWS_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('AWS_SNS_API_KEY')) {
                 $apiKey = $ProjectConfigure::AWS_SNS_API_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('AWS_SECRET')) {
                 $apiSecret = $ProjectConfigure::AWS_SECRET;
             }
             if (NULL !== $ProjectConfigure::constant('AWS_SNS_API_SECRET')) {
                 $apiSecret = $ProjectConfigure::AWS_SNS_API_SECRET;
             }
             if (NULL !== $ProjectConfigure::constant('AWS_REGION')) {
                 $region = $ProjectConfigure::AWS_REGION;
             }
             if (NULL !== $ProjectConfigure::constant('AWS_SNS_REGION')) {
                 $region = $ProjectConfigure::AWS_SNS_REGION;
             }
         }
         $arns = explode('://', $baseArn);
         $this->_arnBase = 'arn:aws:sns:' . $arns[0] . ':app/%target_pratform%/' . $arns[1];
         $this->_initialized = TRUE;
         if (NULL === $this->_AWS) {
             $this->_AWS = Aws::factory(array('key' => $apiKey, 'secret' => $apiSecret, 'region' => Region::TOKYO))->get('sns');
         }
     }
 }
 /**
  */
 protected static function _clearCacheImage($argFilePath, $argMemcacheDSN = NULL)
 {
     $DSN = NULL;
     if (NULL === $argMemcacheDSN && class_exists('Configure') && NULL !== Configure::constant('MEMCACHE_DSN')) {
         $DSN = Configure::MEMCACHE_DSN;
     } else {
         $DSN = $argMemcacheDSN;
     }
     if (NULL !== $DSN && class_exists('Memcache', FALSE)) {
         try {
             Memcached::start($DSN);
             @Memcached::delete($argFilePath);
         } catch (Exception $Exception) {
             logging(__CLASS__ . PATH_SEPARATOR . __METHOD__ . PATH_SEPARATOR . __LINE__ . PATH_SEPARATOR . $Exception->getMessage(), 'exception');
         }
     }
     return true;
 }
 public function execute($argRequestParams = NULL)
 {
     $allow = TRUE;
     $denyHTTP = FALSE;
     $denyALLIP = FALSE;
     if (class_exists('Configure') && NULL !== Configure::constant('DENY_HTTP')) {
         $denyHTTP = Configure::DENY_HTTP;
     }
     if (class_exists('Configure') && NULL !== Configure::constant('DENY_ALL_IP')) {
         $denyALLIP = Configure::DENY_ALL_IP;
     }
     if (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
         $ProjectConfigure = PROJECT_NAME . 'Configure';
         if (NULL !== $ProjectConfigure::constant('DENY_HTTP')) {
             $denyHTTP = $ProjectConfigure::DENY_HTTP;
         }
         if (NULL !== $ProjectConfigure::constant('DENY_ALL_IP')) {
             $denyALLIP = $ProjectConfigure::DENY_ALL_IP;
         }
     }
     // SSLチェック
     if (FALSE !== $denyHTTP && 0 !== $denyHTTP && "0" !== $denyHTTP) {
         if (!(isset($_SERVER['HTTPS']) && 'on' === $_SERVER['HTTPS'])) {
             $allow = FALSE;
         }
     }
     // IPアドレスチェック
     if (FALSE !== $denyALLIP && 0 !== $denyALLIP && "0" !== $denyALLIP) {
         // ローカルIPでは無い
         // XXX ネットマスクで許可設定をしたい場合はこの辺りを拡張する
         if ('::1' !== $_SERVER['REMOTE_ADDR'] && FALSE === strpos($denyALLIP, $_SERVER['REMOTE_ADDR'])) {
             $allow = FALSE;
         }
     }
     debug('allow=' . $allow);
     return $allow;
 }
Beispiel #4
0
 protected static function _init($argDSN = NULL)
 {
     if (FALSE === self::$_initialized) {
         $DSN = NULL;
         if (class_exists('Configure') && NULL !== Configure::constant('DB_DSN')) {
             // 定義からセッションDBの接続情報を特定
             $DSN = Configure::DB_DSN;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_DB_DSN')) {
             // 定義からセッションDBの接続情報を特定
             $DSN = Configure::AUTH_DB_DSN;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_TBL_NAME')) {
             // 定義からuserTable名を特定
             self::$authTable = Configure::AUTH_TBL_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_PKEY_FIELD_NAME')) {
             // 定義からuserTable名を特定
             self::$authPKeyField = Configure::AUTH_PKEY_FIELD_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_ID_FIELD_NAME')) {
             // 定義からuserTable名を特定
             self::$authIDField = Configure::AUTH_ID_FIELD_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_PASS_FIELD_NAME')) {
             // 定義からuserTable名を特定
             self::$authPassField = Configure::AUTH_PASS_FIELD_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_CREATE_DATE_KEY_NAME')) {
             // 定義からuserTable名を特定
             self::$authCreatedField = Configure::AUTH_CREATE_DATE_KEY_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_MODIFY_DATE_KEY_NAME')) {
             // 定義からuserTable名を特定
             self::$authModifiedField = Configure::AUTH_MODIFY_DATE_KEY_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_ID_ENCRYPTED')) {
             // 定義からuserTable名を特定
             self::$authIDEncrypted = Configure::AUTH_ID_ENCRYPTED;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_PASS_ENCRYPTED')) {
             // 定義からuserTable名を特定
             self::$authPassEncrypted = Configure::AUTH_PASS_ENCRYPTED;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_sessionCryptKey = Configure::CRYPT_KEY;
             self::$_authCryptKey = Configure::CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('NETWORK_CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_sessionCryptKey = Configure::NETWORK_CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_sessionCryptKey = Configure::SESSION_CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('DB_CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_authCryptKey = Configure::DB_CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_authCryptKey = Configure::AUTH_CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('CRYPT_IV')) {
             // 定義から暗号化IVを設定
             self::$_sessionCryptIV = Configure::CRYPT_IV;
             self::$_authCryptIV = Configure::CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('NETWORK_CRYPT_IV')) {
             // 定義から暗号化IVを設定
             self::$_sessionCryptIV = Configure::NETWORK_CRYPT_IV;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_CRYPT_IV')) {
             // 定義から暗号化IVを設定
             self::$_sessionCryptIV = Configure::SESSION_CRYPT_IV;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('DB_CRYPT_IV')) {
             // 定義から暗号化キーを設定
             self::$_authCryptKIV = Configure::DB_CRYPT_IV;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('AUTH_CRYPT_IV')) {
             // 定義から暗号化キーを設定
             self::$_authCryptIV = Configure::AUTH_CRYPT_IV;
         }
         if (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
             $ProjectConfigure = PROJECT_NAME . 'Configure';
             if (NULL !== $ProjectConfigure::constant('DB_DSN')) {
                 // 定義からセッションDBの接続情報を特定
                 $DSN = $ProjectConfigure::DB_DSN;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_DB_DSN')) {
                 // 定義からセッションDBの接続情報を特定
                 $DSN = $ProjectConfigure::AUTH_DB_DSN;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_TBL_NAME')) {
                 // 定義からuserTable名を特定
                 self::$authTable = $ProjectConfigure::AUTH_TBL_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_PKEY_FIELD_NAME')) {
                 // 定義からuserTable名を特定
                 self::$authPKeyField = $ProjectConfigure::AUTH_PKEY_FIELD_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_ID_FIELD_NAME')) {
                 // 定義からuserTable名を特定
                 self::$authIDField = $ProjectConfigure::AUTH_ID_FIELD_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_PASS_FIELD_NAME')) {
                 // 定義からuserTable名を特定
                 self::$authPassField = $ProjectConfigure::AUTH_PASS_FIELD_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_CREATE_DATE_KEY_NAME')) {
                 // 定義からuserTable名を特定
                 self::$authCreatedField = $ProjectConfigure::AUTH_CREATE_DATE_KEY_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_MODIFY_DATE_KEY_NAME')) {
                 // 定義からuserTable名を特定
                 self::$authModifiedField = $ProjectConfigure::AUTH_MODIFY_DATE_KEY_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_ID_ENCRYPTED')) {
                 // 定義からuserTable名を特定
                 self::$authIDEncrypted = $ProjectConfigure::AUTH_ID_ENCRYPTED;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_PASS_ENCRYPTED')) {
                 // 定義からuserTable名を特定
                 self::$authPassEncrypted = $ProjectConfigure::AUTH_PASS_ENCRYPTED;
             }
             if (NULL !== $ProjectConfigure::constant('CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_sessionCryptKey = $ProjectConfigure::CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('NETWORK_CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_sessionCryptKey = $ProjectConfigure::NETWORK_CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_sessionCryptKey = $ProjectConfigure::SESSION_CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('DB_CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_authCryptKey = $ProjectConfigure::DB_CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_authCryptKey = $ProjectConfigure::AUTH_CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('CRYPT_IV')) {
                 // 定義から暗号化IVを設定
                 self::$_sessionCryptIV = $ProjectConfigure::CRYPT_IV;
                 self::$_authCryptIV = $ProjectConfigure::CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('NETWORK_CRYPT_IV')) {
                 // 定義から暗号化IVを設定
                 self::$_sessionCryptIV = $ProjectConfigure::NETWORK_CRYPT_IV;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_CRYPT_IV')) {
                 // 定義から暗号化IVを設定
                 self::$_sessionCryptIV = $ProjectConfigure::SESSION_CRYPT_IV;
             }
             if (NULL !== $ProjectConfigure::constant('DB_CRYPT_IV')) {
                 // 定義から暗号化キーを設定
                 self::$_authCryptKIV = $ProjectConfigure::DB_CRYPT_IV;
             }
             if (NULL !== $ProjectConfigure::constant('AUTH_CRYPT_IV')) {
                 // 定義から暗号化キーを設定
                 self::$_authCryptIV = $ProjectConfigure::AUTH_CRYPT_IV;
             }
         }
         // DBOを初期化
         if (NULL === self::$_DBO) {
             if (NULL !== $argDSN) {
                 // セッションDBの接続情報を直指定
                 $DSN = $argDSN;
             }
             self::$_DBO = DBO::sharedInstance($DSN);
         }
         // 初期化済み
         self::$_initialized = TRUE;
     }
 }
Beispiel #5
0
 /**
  * Sessionクラスの初期化
  * @param string セッションの範囲となるドメイン
  * @param string セッションの有効期限
  * @param string DBDSN情報
  */
 protected static function _init($argDomain = NULL, $argExpiredtime = NULL, $argDSN = NULL)
 {
     if (FALSE === self::$_initialized) {
         // セッションの有効ドメインを設定
         self::$_domain = $argDomain;
         if (NULL === $argDomain) {
             self::$_domain = $_SERVER['SERVER_NAME'];
         }
         $DSN = NULL;
         $expiredtime = self::$_expiredtime;
         if (class_exists('Configure') && NULL !== Configure::constant('DB_DSN')) {
             // 定義からセッションDBの接続情報を特定
             $DSN = Configure::DB_DSN;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_DB_DSN')) {
             // 定義からセッションDBの接続情報を特定
             $DSN = Configure::SESSION_DB_DSN;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_EXPIRED_TIME')) {
             // 定義からセッションの有効期限を設定
             $expiredtime = Configure::SESSION_EXPIRED_TIME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_TBL_NAME')) {
             // 定義からセッションテーブル名を特定
             self::$_sessionTblName = Configure::SESSION_TBL_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_TBL_PKEY_NAME')) {
             // 定義からセッションテーブルのPKey名を特定
             self::$_sessionPKeyName = Configure::SESSION_TBL_PKEY_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_DATE_KEY_NAME')) {
             // 定義から日時フィールド名を特定
             self::$_sessionDateKeyName = Configure::SESSION_DATE_KEY_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_cryptKey = Configure::CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('NETWORK_CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_cryptKey = Configure::NETWORK_CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_CRYPT_KEY')) {
             // 定義から暗号化キーを設定
             self::$_cryptKey = Configure::SESSION_CRYPT_KEY;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('CRYPT_IV')) {
             // 定義から暗号化IVを設定
             self::$_cryptIV = Configure::CRYPT_IV;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('NETWORK_CRYPT_IV')) {
             // 定義から暗号化IVを設定
             self::$_cryptIV = Configure::NETWORK_CRYPT_IV;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_CRYPT_IV')) {
             // 定義から暗号化IVを設定
             self::$_cryptIV = Configure::SESSION_CRYPT_IV;
         }
         if (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
             $ProjectConfigure = PROJECT_NAME . 'Configure';
             if (NULL !== $ProjectConfigure::constant('DB_DSN')) {
                 // 定義からセッションDBの接続情報を特定
                 $DSN = $ProjectConfigure::DB_DSN;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_DB_DSN')) {
                 // 定義からセッションDBの接続情報を特定
                 $DSN = $ProjectConfigure::SESSION_DB_DSN;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_EXPIRED_TIME')) {
                 // 定義からセッションの有効期限を設定
                 $expiredtime = $ProjectConfigure::SESSION_EXPIRED_TIME;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_TBL_NAME')) {
                 // 定義からセッションテーブル名を特定
                 self::$_sessionTblName = $ProjectConfigure::SESSION_TBL_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_TBL_PKEY_NAME')) {
                 // 定義からセッションテーブルのPKey名を特定
                 self::$_sessionPKeyName = $ProjectConfigure::SESSION_TBL_PKEY_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_DATE_KEY_NAME')) {
                 // 定義から日時フィールド名を特定
                 self::$_sessionDateKeyName = $ProjectConfigure::SESSION_DATE_KEY_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_cryptKey = $ProjectConfigure::CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('NETWORK_CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_cryptKey = $ProjectConfigure::NETWORK_CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_CRYPT_KEY')) {
                 // 定義から暗号化キーを設定
                 self::$_cryptKey = $ProjectConfigure::SESSION_CRYPT_KEY;
             }
             if (NULL !== $ProjectConfigure::constant('CRYPT_IV')) {
                 // 定義から暗号化IVを設定
                 self::$_cryptIV = $ProjectConfigure::CRYPT_IV;
             }
             if (NULL !== $ProjectConfigure::constant('NETWORK_CRYPT_IV')) {
                 // 定義から暗号化IVを設定
                 self::$_cryptIV = $ProjectConfigure::NETWORK_CRYPT_IV;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_CRYPT_IV')) {
                 // 定義から暗号化IVを設定
                 self::$_cryptIV = $ProjectConfigure::SESSION_CRYPT_IV;
             }
         }
         // DBOを初期化
         if (NULL === self::$_DBO) {
             if (NULL !== $argDSN) {
                 // セッションDBの接続情報を直指定
                 $DSN = $argDSN;
             }
             self::$_DBO = DBO::sharedInstance($DSN);
         }
         // セッションの有効期限を設定
         if (NULL !== $argExpiredtime) {
             // セッションの有効期限を直指定
             $expiredtime = $argExpiredtime;
         }
         self::$_expiredtime = $expiredtime;
         // セッションデータクラスの初期化
         parent::_init($expiredtime, $DSN);
         // 初期化済み
         self::$_initialized = TRUE;
     }
 }
 /**
  * フレームワーク標準のAuth機能を利用した認証と登録を行って、RESTする(スマフォAPI向け)
  * @return array 配列構造のリソースデータ
  */
 public function UIDAuthAndExecute()
 {
     $this->_init();
     // UIDAuthREST用変数初期化
     $DBO = NULL;
     $User = FALSE;
     $userModelName = NULL;
     $UserModelCreatedFieldName = NULL;
     $UserModelModifiedFieldName = NULL;
     $deviceTypeFieldName = NULL;
     if (class_exists('Configure') && NULL !== Configure::constant('REST_UIDAUTH_USER_TBL_NAME')) {
         $userModelName = Configure::REST_UIDAUTH_USER_TBL_NAME;
     }
     if (class_exists('Configure') && NULL !== Configure::constant('REST_UIDAUTH_USER_CREATE_DATE_KEY_NAME')) {
         $UserModelCreatedFieldName = Configure::REST_UIDAUTH_USER_CREATE_DATE_KEY_NAME;
     }
     if (class_exists('Configure') && NULL !== Configure::constant('REST_UIDAUTH_USER_MODIFY_DATE_KEY_NAME')) {
         $UserModelModifiedFieldName = Configure::REST_UIDAUTH_USER_MODIFY_DATE_KEY_NAME;
     }
     if (class_exists('Configure') && NULL !== Configure::constant('REST_UIDAUTH_DEVICE_TYPE_FIELD_NAME')) {
         $deviceTypeFieldName = Configure::REST_UIDAUTH_DEVICE_TYPE_FIELD_NAME;
     }
     if (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
         $ProjectConfigure = PROJECT_NAME . 'Configure';
         if (NULL !== $ProjectConfigure::constant('REST_UIDAUTH_USER_TBL_NAME')) {
             $userModelName = $ProjectConfigure::REST_UIDAUTH_USER_TBL_NAME;
         }
         if (NULL !== $ProjectConfigure::constant('REST_UIDAUTH_USER_CREATE_DATE_KEY_NAME')) {
             $UserModelCreatedFieldName = $ProjectConfigure::REST_UIDAUTH_USER_CREATE_DATE_KEY_NAME;
         }
         if (NULL !== $ProjectConfigure::constant('REST_UIDAUTH_USER_MODIFY_DATE_KEY_NAME')) {
             $UserModelModifiedFieldName = $ProjectConfigure::REST_UIDAUTH_USER_MODIFY_DATE_KEY_NAME;
         }
         if (NULL !== $ProjectConfigure::constant('REST_UIDAUTH_DEVICE_TYPE_FIELD_NAME')) {
             $deviceTypeFieldName = $ProjectConfigure::REST_UIDAUTH_DEVICE_TYPE_FIELD_NAME;
         }
     }
     try {
         $gmtDate = Utilities::date('Y-m-d H:i:s', NULL, NULL, 'GMT');
         $DBO = self::_getDBO();
         // UIDAuth
         $Device = Auth::getCertifiedUser();
         if (FALSE === $Device) {
             // 登録処理
             // SessionID=端末固有IDと言う決めに沿って登録を行う
             $deviceID = Auth::getDecryptedAuthIdentifier();
             debug('$deviceID=' . $deviceID);
             if (30 >= strlen($deviceID)) {
                 // UIDエラー! 認証エラー
                 throw new RESTException(__CLASS__ . PATH_SEPARATOR . __METHOD__ . PATH_SEPARATOR . __LINE__, 401);
             }
             $Device = Auth::registration($deviceID, $deviceID);
             // 強制認証で証明を得る
             if (TRUE !== Auth::certify($Device->{Auth::$authIDField}, $Device->{Auth::$authPassField}, NULL, TRUE)) {
                 // 認証NG(401)
                 throw new RESTException(__CLASS__ . PATH_SEPARATOR . __METHOD__ . PATH_SEPARATOR . __LINE__, 401);
             }
             // user情報の更新
             $userAdded = FALSE;
             $deviceModified = FALSE;
             if (NULL !== $userModelName && $userModelName != $Device->tableName) {
                 $ownerIDField = $userModelName . '_id';
                 if (isset($Device->{$this->authUserIDFieldName})) {
                     $ownerIDField = $this->authUserIDFieldName;
                 }
                 if (!(0 < strlen($Device->{$ownerIDField}) && '0' != $Device->{$ownerIDField})) {
                     // userテーブルとdeviceテーブルのテーブル名が違うので、userテーブルの保存を行う
                     $User = self::_getModel($userModelName);
                     if (NULL !== $UserModelCreatedFieldName && in_array($UserModelCreatedFieldName, $User->getFieldKeys())) {
                         $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelCreatedFieldName)))}($gmtDate);
                     }
                     if (NULL !== $UserModelModifiedFieldName && in_array($UserModelModifiedFieldName, $User->getFieldKeys())) {
                         $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelModifiedFieldName)))}($gmtDate);
                     }
                     $User->save();
                     // deviceテーブルにユーザーIDのセット(強制)
                     $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $ownerIDField)))}($User->pkey);
                     $deviceModified = TRUE;
                     $userAdded = TRUE;
                 } else {
                     $User = self::_getModel($userModelName, $Device->{$ownerIDField});
                     if (!(0 < (int) $User->pkey)) {
                         // デバイスの持ち主が変わった可能性
                         $gmtDate = Utilities::date('Y-m-d H:i:s', NULL, NULL, 'GMT');
                         // userテーブルとdeviceテーブルのテーブル名が違うので、userテーブルの保存を行う
                         if (NULL !== $UserModelCreatedFieldName && in_array($UserModelCreatedFieldName, $User->getFieldKeys())) {
                             $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelCreatedFieldName)))}($gmtDate);
                         }
                         if (NULL !== $UserModelModifiedFieldName && in_array($UserModelModifiedFieldName, $User->getFieldKeys())) {
                             $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelModifiedFieldName)))}($gmtDate);
                         }
                         $User->save();
                         // deviceテーブルにユーザーIDのセット(強制)
                         $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $ownerIDField)))}($User->pkey);
                         $deviceModified = TRUE;
                         $userAdded = TRUE;
                     }
                 }
             } else {
                 $User = $Device;
             }
             // device情報の更新
             if (NULL !== $deviceTypeFieldName && in_array($deviceTypeFieldName, $Device->getFieldKeys()) && isset($this->deviceType) && 0 < strlen($this->deviceType)) {
                 $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $deviceTypeFieldName)))}($this->deviceType);
                 $deviceModified = TRUE;
             }
             if (TRUE === $deviceModified) {
                 if (in_array(Auth::$authModifiedField, $Device->getFieldKeys())) {
                     $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', Auth::$authModifiedField)))}($gmtDate);
                 }
                 $Device->save();
             }
             if (TRUE === $deviceModified || TRUE === $userAdded) {
                 // 一旦コミット
                 $DBO->commit();
             }
         } elseif (NULL !== $userModelName && $userModelName != $Device->tableName) {
             $ownerIDField = $userModelName . '_id';
             if (isset($Device->{$this->authUserIDFieldName})) {
                 $ownerIDField = $this->authUserIDFieldName;
             }
             debug('is owner?' . $Device->{$ownerIDField});
             if (!(0 < strlen($Device->{$ownerIDField}) && '0' != $Device->{$ownerIDField})) {
                 // user情報の更新
                 // userテーブルとdeviceテーブルのテーブル名が違うので、userテーブルの保存を行う
                 $User = self::_getModel($userModelName);
                 if (NULL !== $UserModelCreatedFieldName && in_array($UserModelCreatedFieldName, $User->getFieldKeys())) {
                     $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelCreatedFieldName)))}($gmtDate);
                 }
                 if (NULL !== $UserModelModifiedFieldName && in_array($UserModelModifiedFieldName, $User->getFieldKeys())) {
                     $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelModifiedFieldName)))}($gmtDate);
                 }
                 $User->save();
                 // deviceテーブルにユーザーIDのセット(強制)
                 $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $ownerIDField)))}($User->pkey);
                 if (NULL !== $deviceTypeFieldName && in_array($deviceTypeFieldName, $Device->getFieldKeys()) && isset($this->deviceType) && 0 < strlen($this->deviceType)) {
                     $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $deviceTypeFieldName)))}($this->deviceType);
                 }
                 if (in_array(Auth::$authModifiedField, $Device->getFieldKeys())) {
                     $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', Auth::$authModifiedField)))}($gmtDate);
                 }
                 $Device->save();
                 // 一旦コミット
                 $DBO->commit();
             } else {
                 $User = self::_getModel($userModelName, $Device->{$ownerIDField});
                 if (!(0 < (int) $User->pkey)) {
                     // デバイスの持ち主が変わった可能性
                     $gmtDate = Utilities::date('Y-m-d H:i:s', NULL, NULL, 'GMT');
                     // userテーブルとdeviceテーブルのテーブル名が違うので、userテーブルの保存を行う
                     if (NULL !== $UserModelCreatedFieldName && in_array($UserModelCreatedFieldName, $User->getFieldKeys())) {
                         $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelCreatedFieldName)))}($gmtDate);
                     }
                     if (NULL !== $UserModelModifiedFieldName && in_array($UserModelModifiedFieldName, $User->getFieldKeys())) {
                         $User->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $UserModelModifiedFieldName)))}($gmtDate);
                     }
                     $User->save();
                     // deviceテーブルにユーザーIDのセット(強制)
                     $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $ownerIDField)))}($User->pkey);
                     if (NULL !== $deviceTypeFieldName && in_array($deviceTypeFieldName, $Device->getFieldKeys()) && isset($this->deviceType) && 0 < strlen($this->deviceType)) {
                         $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $deviceTypeFieldName)))}($this->deviceType);
                     }
                     if (in_array(Auth::$authModifiedField, $Device->getFieldKeys())) {
                         $Device->{'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', Auth::$authModifiedField)))}($gmtDate);
                     }
                     $Device->save();
                     // 一旦コミット
                     $DBO->commit();
                 }
             }
         } else {
             $User = $Device;
         }
     } catch (Exception $Exception) {
         if (NULL !== $DBO && is_object($DBO)) {
             // トランザクションを異常終了する
             $DBO->rollback();
         }
         // 実装の問題によるエラー
         $this->httpStatus = 500;
         if (400 === $Exception->getCode() || 401 === $Exception->getCode() || 404 === $Exception->getCode() || 405 === $Exception->getCode() || 503 === $Exception->getCode()) {
             $this->httpStatus = $Exception->getCode();
         }
         throw new RESTException($Exception->getMessage(), $this->httpStatus);
     }
     $this->AuthDevice = $Device;
     if (FALSE !== $User) {
         // 認証OK
         $this->AuthUser = $User;
         $this->authUserID = $User->pkey;
         if (NULL === $this->authUserIDFieldName) {
             // XXX xxx_xxと言うAuthユーザー判定法は固定です!使用は任意になります。
             $this->authUserIDFieldName = strtolower($User->tableName) . '_' . $User->pkeyName;
         }
         $this->authUserQuery = ' `' . $this->authUserIDFieldName . '` = \'' . $User->pkey . '\'';
         return $this->execute();
     }
     // XXX ココを通るのは相当なイレギュラー!
     $this->httpStatus = 500;
     throw new RESTException(__CLASS__ . PATH_SEPARATOR . __METHOD__ . PATH_SEPARATOR . __LINE__, 500);
 }
Beispiel #7
0
/**
 * コンフィグレーションされている値を返す
 */
function getConfig($argKey, $argConfigName = '')
{
    static $values = array();
    $value = NULL;
    if (!isset($values[$argConfigName])) {
        $values[$argConfigName] = array();
    }
    if (!isset($values[$argConfigName][$argKey])) {
        if (class_exists('Configure') && TRUE === defined('Configure::' . $argKey)) {
            // 定義から暗号化キーを設定
            $value = Configure::constant($argKey);
        }
        if (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
            $ProjectConfigure = PROJECT_NAME . 'Configure';
            if (TRUE === defined($ProjectConfigure . '::' . $argKey)) {
                // 定義からセッションDBの接続情報を特定
                $value = $ProjectConfigure::constant($argKey);
            }
        }
        if (!class_exists($argConfigName . 'Configure') && !class_exists($argConfigName) && !class_exists(str_replace('Package', '', $argConfigName))) {
            loadConfigForConfigName($argConfigName);
        }
        if ('' !== $argConfigName && strlen($argConfigName) > 0 && class_exists($argConfigName . 'Configure')) {
            $ArgConfigure = $argConfigName . 'Configure';
            if (TRUE === defined($ArgConfigure . '::' . $argKey)) {
                // 定義からセッションDBの接続情報を特定
                $value = $ArgConfigure::constant($argKey);
            }
        }
        if ('' !== $argConfigName && strlen($argConfigName) > 0 && class_exists($argConfigName)) {
            $ArgConfigure = $argConfigName;
            if (TRUE === defined($ArgConfigure . '::' . $argKey)) {
                // 定義からセッションDBの接続情報を特定
                $value = $ArgConfigure::constant($argKey);
            }
        }
        $argConfigName = str_replace('Package', '', $argConfigName);
        if ('' !== $argConfigName && strlen($argConfigName) > 0 && class_exists($argConfigName . 'Configure')) {
            $ArgConfigure = $argConfigName . 'Configure';
            if (TRUE === defined($ArgConfigure . '::' . $argKey)) {
                // 定義からセッションDBの接続情報を特定
                $value = $ArgConfigure::constant($argKey);
            }
        }
        if ('' !== $argConfigName && strlen($argConfigName) > 0 && class_exists($argConfigName)) {
            $ArgConfigure = $argConfigName;
            if (TRUE === defined($ArgConfigure . '::' . $argKey)) {
                // 定義からセッションDBの接続情報を特定
                $value = $ArgConfigure::constant($argKey);
            }
        }
        $values[$argConfigName][$argKey] = $value;
    } else {
        $value = $values[$argConfigName][$argKey];
    }
    return $value;
}
Beispiel #8
0
 /**
  * MVCクラスモジュールの読み込み処理
  * @param string クラス名
  * @param string クラスの読み込事にエラーが在る場合にbooleanを返すかどうか
  * @param string クラスの読み込事にエラーが在る場合にbooleanを返すかどうか
  * @return mixed 成功時は対象のクラス名 失敗した場合はFALSEを返す
  */
 public static function loadMVCModule($argClassName = NULL, $argClassExistsCalled = FALSE, $argTargetPath = '')
 {
     static $currentTargetPath = '';
     $targetPath = '';
     if (NULL !== $argClassName) {
         $controlerClassName = $argClassName;
     } else {
         // コントロール対象を自動特定
         $controlerClassName = 'Index';
         if (isset($_GET['_c_']) && strlen($_GET['_c_']) > 0) {
             $controlerClassName = str_replace('-', '_', ucfirst($_GET['_c_']));
             if (FALSE !== strpos($_GET['_c_'], '/') && strlen($_GET['_c_']) > 1) {
                 $matches = NULL;
                 if (preg_match('/(.*)\\/([^\\/]*)$/', $_GET['_c_'], $matches) && is_array($matches) && isset($matches[2])) {
                     $controlerClassName = str_replace('-', '_', ucfirst($matches[2]));
                     if (isset($matches[1]) && strlen($matches[1]) > 0) {
                         $targetPath = $matches[1] . '/';
                         if ('' === $currentTargetPath) {
                             $currentTargetPath = $targetPath;
                         }
                     }
                 }
             }
         }
     }
     if ('' !== $argTargetPath) {
         $targetPath = $argTargetPath;
     }
     if ('' === $targetPath) {
         $targetPath = $currentTargetPath;
     }
     $version = '';
     if (isset($_GET['_v_']) && strlen($_GET['_v_']) > 0) {
         $version = $_GET['_v_'];
     }
     debug('path=' . $targetPath);
     debug('class=' . $controlerClassName);
     if (!class_exists($controlerClassName, FALSE)) {
         // コントローラを読み込み
         if ('' !== $version) {
             // バージョン一致のファイルを先ず走査する
             loadModule('default.controlmain.' . $targetPath . $version . '/' . $controlerClassName, TRUE);
         }
         if (!class_exists($controlerClassName, FALSE)) {
             loadModule('default.controlmain.' . $targetPath . $controlerClassName, TRUE);
         }
         if (!class_exists($controlerClassName, FALSE)) {
             loadModule('default.controlmain.' . $controlerClassName, TRUE);
         }
         if (class_exists($controlerClassName, FALSE)) {
             // FlowGenerateする必要がなさそうなのでココで終了
             return $controlerClassName;
         } else {
             if ('' === self::$flowXMLBasePath) {
                 // エラー終了
                 return FALSE;
             } else {
                 // ココからはFlow処理
                 if (TRUE === self::$flowXMLBasePath) {
                     // self::$flowXMLBasePathがTRUEとなっていた場合はConfigureにFLOWXML_PATH定義が無いか調べる
                     if (class_exists('Configure', FALSE) && NULL !== Configure::constant('FLOWXML_PATH')) {
                         self::$flowXMLBasePath = Configure::FLOWXML_PATH;
                     }
                 }
                 // Flow出来ない!
                 if ('' === self::$flowXMLBasePath) {
                     // エラー終了
                     return FALSE;
                 }
                 // XML定義の存在チェック
                 // クラス名は分解しておく
                 $classHint = explode('_', $controlerClassName);
                 debug($targetPath);
                 debug($classHint);
                 $classXMLName = $classHint[0];
                 debug($classXMLName);
                 $flowXMLPath = '';
                 if ('' !== $version) {
                     // バージョン一致のファイルを先ず走査する
                     if (file_exists_ip(self::$flowXMLBasePath . '/' . $targetPath . $version . '/' . $classXMLName . '.flow.xml')) {
                         $flowXMLPath = self::$flowXMLBasePath . '/' . $targetPath . $version . '/' . $classXMLName . '.flow.xml';
                     }
                 }
                 if ('' === $flowXMLPath) {
                     // バージョン関係ナシのファイルを走査する
                     if (file_exists_ip(self::$flowXMLBasePath . '/' . $targetPath . $classXMLName . '.flow.xml')) {
                         $flowXMLPath = self::$flowXMLBasePath . '/' . $targetPath . $classXMLName . '.flow.xml';
                     }
                 }
                 debug($flowXMLPath);
                 if ('' === $flowXMLPath) {
                     // エラー終了
                     return FALSE;
                 }
                 // flowファイルの履歴を残しておく
                 self::$flowXMLPaths[] = array('class' => $controlerClassName, 'xml' => $flowXMLPath);
                 // Flowに応じたクラス定義の自動生成を委任
                 loadModule('Flow');
                 if (FALSE === Flow::generate($flowXMLPath, $controlerClassName, $targetPath)) {
                     // エラー終了
                     return FALSE;
                 }
                 if (!class_exists($controlerClassName, FALSE)) {
                     // エラー終了
                     return FALSE;
                 }
             }
         }
     }
     return $controlerClassName;
 }
 /**
  * Sessionクラスの初期化
  * @param string セッションの有効期限
  * @param string DBDSN情報
  */
 protected static function _init($argExpiredtime = NULL, $argDSN = NULL)
 {
     if (FALSE === self::$_initialized) {
         $DSN = NULL;
         $expiredtime = self::$_expiredtime;
         if (class_exists('Configure') && NULL !== Configure::constant('DB_DSN')) {
             // 定義からセッションDBの接続情報を特定
             $DSN = Configure::DB_DSN;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_DB_DSN')) {
             // 定義からセッションDBの接続情報を特定
             $DSN = Configure::DB_DSN;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_EXPIRED_TIME')) {
             // 定義からセッションの有効期限を設定
             $expiredtime = Configure::SESSION_EXPIRED_TIME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_DATA_TBL_NAME')) {
             // 定義からセッションデータテーブル名を特定
             self::$_sessionDataTblName = $ProjectConfigure::SESSION_DATA_TBL_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_DATA_TBL_PKEY_NAME')) {
             // 定義からセッションデータテーブルのPKey名を特定
             self::$_sessionDataPKeyName = Configure::SESSION_DATA_TBL_PKEY_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SERIALIZE_KEY_NAME')) {
             // 定義からシリアライズデータのフィールド名を特定
             self::$_serializeKeyName = Configure::SERIALIZE_KEY_NAME;
         }
         if (class_exists('Configure') && NULL !== Configure::constant('SESSION_DATA_DATE_KEY_NAME')) {
             // 定義から日時フィールド名を特定
             self::$_sessionDataDateKeyName = Configure::SESSION_DATA_DATE_KEY_NAME;
         }
         if (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
             $ProjectConfigure = PROJECT_NAME . 'Configure';
             if (NULL !== $ProjectConfigure::constant('DB_DSN')) {
                 // 定義からセッションDBの接続情報を特定
                 $DSN = $ProjectConfigure::DB_DSN;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_DB_DSN')) {
                 // 定義からセッションDBの接続情報を特定
                 $DSN = $ProjectConfigure::SESSION_DB_DSN;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_EXPIRED_TIME')) {
                 // 定義からセッションの有効期限を設定
                 $expiredtime = $ProjectConfigure::SESSION_EXPIRED_TIME;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_DATA_TBL_NAME')) {
                 // 定義からセッションデータテーブル名を特定
                 self::$_sessionDataTblName = $ProjectConfigure::SESSION_DATA_TBL_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_DATA_TBL_PKEY_NAME')) {
                 // 定義からセッションデータテーブルのPKey名を特定
                 self::$_sessionDataPKeyName = $ProjectConfigure::SESSION_DATA_TBL_PKEY_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('SERIALIZE_KEY_NAME')) {
                 // 定義からuserTable名を特定
                 self::$_serializeKeyName = $ProjectConfigure::SERIALIZE_KEY_NAME;
             }
             if (NULL !== $ProjectConfigure::constant('SESSION_DATA_DATE_KEY_NAME')) {
                 // 定義から日時フィールド名を特定
                 self::$_sessionDataDateKeyName = $ProjectConfigure::SESSION_DATA_DATE_KEY_NAME;
             }
         }
         // DBOを初期化
         if (NULL === self::$_DBO) {
             if (NULL !== $argDSN) {
                 // セッションDBの接続情報を直指定
                 $DSN = $argDSN;
             }
             self::$_DBO = DBO::sharedInstance($DSN);
         }
         // セッションの有効期限を設定
         if (NULL !== $argExpiredtime) {
             // セッションの有効期限を直指定
             $expiredtime = $argExpiredtime;
         }
         self::$_expiredtime = $expiredtime;
         // 初期化済み
         self::$_initialized = TRUE;
     }
 }
Beispiel #10
0
 /**
  * 該当get_called_classのDBインスタンスの初期化
  */
 private function _initDB()
 {
     $dsn = NULL;
     if (TRUE === @property_exists($this, "DSN") && isset($this->DSN) && NULL !== $this->DSN && strlen($this->DSN) > 0) {
         // 与えられたDSN情報を使用する
         $dsn = $this->DSN;
         $calledClassName = "default";
         if (TRUE === @property_exists($this, "dbidentifykey")) {
             $this->dbidentifykey = $calledClassName;
         }
     } else {
         // フレームワークの機能を使ったDSNの自動解決処理
         // 継承元クラス名を取得(静的クラス名を取るためにget_called_classを使用する)
         $calledClassName = @get_called_class();
         if (0 == strlen($calledClassName)) {
             // もしもの時の為
             $calledClassName = "default";
         }
         // 継承元クラス名に応じたDSN定義を取得
         $ProjectConfigure = NULL;
         if (defined('PROJECT_NAME') && strlen(PROJECT_NAME) > 0 && class_exists(PROJECT_NAME . 'Configure')) {
             $ProjectConfigure = PROJECT_NAME . 'Configure';
         }
         if (NULL !== $ProjectConfigure && NULL !== $ProjectConfigure::constant('DB_DSN')) {
             $dsn = $ProjectConfigure::DB_DSN;
         } elseif (0 < strlen($calledClassName) && __CLASS__ != $calledClassName && class_exists("Configure") && NULL !== Configure::constant(strtoupper($calledClassName) . "_DSN")) {
             $dsn = Configure::constant(strtoupper($calledClassName) . "_DSN");
         } elseif (class_exists("Configure") && NULL !== Configure::constant("DB_DSN")) {
             $dsn = Configure::DB_DSN;
         } else {
             // 定数を使う
             $dsn = DB_DSN;
         }
         if (TRUE === @property_exists($this, "DSN")) {
             $this->DSN = $dsn;
         }
         if (TRUE === @property_exists($this, "dbidentifykey")) {
             $this->dbidentifykey = $calledClassName;
         }
     }
     if (!(isset(self::$_DBInstance[$calledClassName]) && is_object(self::$_DBInstance[$calledClassName]))) {
         $DBInstance = ADONewConnection($dsn);
         self::$_DBInstance[$calledClassName] = TRUE;
         if (false === $DBInstance) {
             // DBインスタンス初期化エラー
             throw new Exception(__CLASS__ . PATH_SEPARATOR . __METHOD__ . PATH_SEPARATOR . __LINE__);
         }
         // XXX Pconnectの場合、直前のエラー終了プロセスのコネクションがコミットされずに残っていて
         // それを再利用してしまうケースがあるので、まず再利用コネクションをロールバックする事に注意!!!
         $DBInstance->RollbackTrans();
         // インスタンスの保持
         self::$_DBInstance[$calledClassName] = $DBInstance;
         self::$_DSN[$calledClassName] = $dsn;
         // MySQlはSET NAMES utf8する
         if (0 === strpos($dsn, 'mysql') && FALSE === self::$_DBInstance[$calledClassName]->Execute("SET NAMES utf8")) {
             throw new Exception(__CLASS__ . PATH_SEPARATOR . __METHOD__ . PATH_SEPARATOR . __LINE__);
         }
         // OracleはALTER SESSIONする
         if (0 === strpos($dsn, 'oci') && FALSE === self::$_DBInstance[$calledClassName]->Execute("ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd hh24:mi:ss'")) {
             throw new Exception(__CLASS__ . PATH_SEPARATOR . __METHOD__ . PATH_SEPARATOR . __LINE__);
         }
     }
     return $calledClassName;
 }