array( 'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'user of the application'), 'application_id' => array('type' => 'int', 'not null' => true, 'description' => 'id of the application'), 'access_type' => array('type' => 'int', 'size' => 'tiny', 'default' => 0, 'description' => 'access type, bit 1 = read, bit 2 = write'), 'token' => array('type' => 'varchar', 'length' => 191, 'description' => 'request or access token'), 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'), 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'), ), 'primary key' => array('profile_id', 'application_id'), 'foreign keys' => array( 'oauth_application_user_profile_id_fkey' => array('profile', array('profile_id' => 'id')), 'oauth_application_user_application_id_fkey' => array('oauth_application', array('application_id' => 'id')), ), ); } static function getByUserAndToken($user, $token) { if (empty($user) || empty($token)) { return null; } $oau = new Oauth_application_user(); $oau->profile_id = $user->id; $oau->token = $token; $oau->limit(1); $result = $oau->find(true); return empty($result) ? null : $oau; } function updateKeys(&$orig) { $this->_connect(); $parts = array(); foreach (array('profile_id', 'application_id', 'token', 'access_type') as $k) { if (strcmp($this->$k, $orig->$k) != 0) { $parts[] = $k . ' = ' . $this->_quote($this->$k); } } if (count($parts) == 0) { // No changes return true; } $toupdate = implode(', ', $parts); $table = $this->tableName(); if(common_config('db','quote_identifiers')) { $table = '"' . $table . '"'; } $qry = 'UPDATE ' . $table . ' SET ' . $toupdate . ' WHERE profile_id = ' . $orig->profile_id . ' AND application_id = ' . $orig->application_id . " AND token = '$orig->token'"; $orig->decache(); $result = $this->query($qry); if ($result) { $this->encache(); } return $result; } }