app = $app; $this->token = $token; $sql = 'SELECT api_account_id, UNIX_TIMESTAMP(expires) AS expires, scope FROM api_oauth_refresh_tokens WHERE refresh_token = :token'; $stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql); $stmt->execute([':token' => $this->token]); $row = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); $this->account_id = (int) $row['api_account_id']; $this->expires = $row['expires']; $this->scope = $row['scope']; return $this; } public function get_value() { return $this->token; } /** * * @return API_OAuth2_Account */ public function get_account() { if (! $this->account) { $this->account = new API_OAuth2_Account($this->app, $this->account_id); } return $this->account; } /** * * @return int */ public function get_expires() { return $this->expires; } public function get_scope() { return $this->scope; } public function delete() { $sql = 'DELETE FROM api_oauth_refresh_tokens WHERE refresh_token = :refresh_token'; $stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql); $stmt->execute([":refresh_token" => $this->token]); $stmt->closeCursor(); return; } /** * * @param Application $app * @param API_OAuth2_Account $account * @return array */ public static function load_by_account(Application $app, API_OAuth2_Account $account) { $sql = 'SELECT refresh_token FROM api_oauth_refresh_tokens WHERE api_account_id = :account_id'; $stmt = $app['phraseanet.appbox']->get_connection()->prepare($sql); $stmt->execute([':account_id' => $account->get_id()]); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); $tokens = []; foreach ($rs as $row) { $tokens[] = new API_OAuth2_RefreshToken($app, $row['refresh_token']); } return $tokens; } /** * * @param Application $app * @param API_OAuth2_Account $account * @param int $expires * @param type $refresh_token * @param type $scope * @return API_OAuth2_RefreshToken */ public static function create(Application $app, API_OAuth2_Account $account, $expires, $refresh_token, $scope) { $sql = 'INSERT INTO api_oauth_refresh_tokens (refresh_token, api_account_id, expires, scope) VALUES (:refresh_token, :account_id, :expires, :scope)'; $stmt = $app['phraseanet.appbox']->get_connection()->prepare($sql); $params = [ ":refresh_token" => $refresh_token, ":account_id" => $account->get_id(), ":expires" => $expires, ":scope" => $scope ]; $stmt->execute($params); $stmt->closeCursor(); return new self($app, $refresh_token); } }