]> git.mxchange.org Git - friendica.git/commitdiff
Functions and Standards
authorAdam Magness <adam.magness@gmail.com>
Mon, 4 Dec 2017 19:52:04 +0000 (14:52 -0500)
committerAdam Magness <adam.magness@gmail.com>
Mon, 4 Dec 2017 19:52:04 +0000 (14:52 -0500)
Standards and convert to dba functions where possible.

include/api.php
src/Protocol/FKOAuth1.php
src/Protocol/FKOAuthDataStore.php

index ea804b18ba026c641c98ca8e3d1737e07ced18ae..e55af1ae995b32288e07aca93afadbc83bc0390b 100644 (file)
@@ -25,12 +25,12 @@ use Friendica\Network\HTTPException\TooManyRequestsException;
 use Friendica\Object\Contact;
 use Friendica\Object\Photo;
 use Friendica\Protocol\Diaspora;
+use Friendica\Protocol\FKOAuth1;
 use Friendica\Util\XML;
 
 require_once 'include/bbcode.php';
 require_once 'include/datetime.php';
 require_once 'include/conversation.php';
-require_once 'include/oauth.php';
 require_once 'include/html2plain.php';
 require_once 'mod/share.php';
 require_once 'mod/item.php';
@@ -159,10 +159,9 @@ function api_login(App $a)
 {
        // login with oauth
        try {
-               $oauth = new FKOAuth1();
-               list($consumer,$token) = $oauth->verify_request(OAuthRequest::from_request());
+               list($consumer, $token) = FKOAuth1::verify_request(OAuthRequest::from_request());
                if (!is_null($token)) {
-                       $oauth->loginUser($token->uid);
+                       FKOAuth1::loginUser($token->uid);
                        call_hooks('logged_in', $a->user);
                        return;
                }
@@ -3365,8 +3364,7 @@ api_register_func('api/direct_messages', 'api_direct_messages_inbox', true);
 function api_oauth_request_token($type)
 {
        try {
-               $oauth = new FKOAuth1();
-               $r = $oauth->fetch_request_token(OAuthRequest::from_request());
+               $r = FKOAuth1::fetch_request_token(OAuthRequest::from_request());
        } catch (Exception $e) {
                echo "error=" . OAuthUtil::urlencode_rfc3986($e->getMessage());
                killme();
@@ -3378,8 +3376,7 @@ function api_oauth_request_token($type)
 function api_oauth_access_token($type)
 {
        try {
-               $oauth = new FKOAuth1();
-               $r = $oauth->fetch_access_token(OAuthRequest::from_request());
+               $r = FKOAuth1::fetch_access_token(OAuthRequest::from_request());
        } catch (Exception $e) {
                echo "error=". OAuthUtil::urlencode_rfc3986($e->getMessage());
                killme();
index 5d0e9e52bf04847754590fe2f79b6596588b9912..710097ae0083a194240bb0606e732b3c03d7306b 100644 (file)
@@ -29,19 +29,22 @@ class FKOAuth1 extends OAuthServer
                $this->add_signature_method(new OAuthSignatureMethod_HMAC_SHA1());
        }
 
-       function loginUser($uid)
+       /**
+        * @param string $uid user id
+        * @return void
+        */
+       public static function loginUser($uid)
        {
                logger("FKOAuth1::loginUser $uid");
                $a = get_app();
-               $r = q("SELECT * FROM `user` WHERE uid=%d AND `blocked` = 0 AND `account_expired` = 0 AND `account_removed` = 0 AND `verified` = 1 LIMIT 1",
-                       intval($uid)
-               );
-               if (DBM::is_result($r)){
-                       $record = $r[0];
+               $r = dba::select('user', array(), array('uid' => $uid, 'blocked' => 0, 'account_expired' => 0, 'account_removed' => 0, 'verified' => 1), array('limit' => 1));
+
+               if (DBM::is_result($r)) {
+                       $record = $r;
                } else {
-                  logger('FKOAuth1::loginUser failure: ' . print_r($_SERVER,true), LOGGER_DEBUG);
-                   header('HTTP/1.0 401 Unauthorized');
-                   die('This api requires login');
+                       logger('FKOAuth1::loginUser failure: ' . print_r($_SERVER, true), LOGGER_DEBUG);
+                       header('HTTP/1.0 401 Unauthorized');
+                       die('This api requires login');
                }
                $_SESSION['uid'] = $record['uid'];
                $_SESSION['theme'] = $record['theme'];
@@ -52,7 +55,6 @@ class FKOAuth1 extends OAuthServer
                $_SESSION['addr'] = $_SERVER['REMOTE_ADDR'];
                $_SESSION["allow_api"] = true;
 
-               //notice( t("Welcome back ") . $record['username'] . EOL);
                $a->user = $record;
 
                if (strlen($a->user['timezone'])) {
@@ -60,14 +62,15 @@ class FKOAuth1 extends OAuthServer
                        $a->timezone = $a->user['timezone'];
                }
 
-               $r = q("SELECT * FROM `contact` WHERE `uid` = %s AND `self` = 1 LIMIT 1",
-                       intval($_SESSION['uid']));
+               $r = dba::select('contact', array(), array('uid' => $_SESSION['uid'], 'self' => 1), array('limit' => 1));
+               
                if (DBM::is_result($r)) {
-                       $a->contact = $r[0];
-                       $a->cid = $r[0]['id'];
+                       $a->contact = $r;
+                       $a->cid = $r['id'];
                        $_SESSION['cid'] = $a->cid;
                }
-               q("UPDATE `user` SET `login_date` = '%s' WHERE `uid` = %d",
+
+               dba::q("UPDATE `user` SET `login_date` = '%s' WHERE `uid` = %d",
                        dbesc(datetime_convert()),
                        intval($_SESSION['uid'])
                );
index 08c32df213ef912e97f331ef051b363f78373eea..dc4b774b9b112c313fccb3393eab0b21362a1a52 100644 (file)
@@ -24,18 +24,24 @@ require_once "library/oauth2-php/lib/OAuth2.inc";
  */
 class FKOAuthDataStore extends OAuthDataStore
 {
-       function gen_token()
+       /**
+        * @return string
+        */
+       private static function genToken()
        {
                return md5(base64_encode(pack('N6', mt_rand(), mt_rand(), mt_rand(), mt_rand(), mt_rand(), uniqid())));
        }
 
-       function lookup_consumer($consumer_key)
+       /**
+        * @param string $consumer_key key
+        * @return mixed
+        */
+       public static function lookup_consumer($consumer_key)
        {
                logger(__function__.":".$consumer_key);
                
-               $r = q("SELECT client_id, pw, redirect_uri FROM clients WHERE client_id='%s'",
-                       dbesc($consumer_key)
-               );
+               $s = dba::select('clients', array('client_id', 'pw', 'redirect_uri'), array('client_id' => $consumer_key));
+               $r = dba::inArray($r);
 
                if (DBM::is_result($r)) {
                        return new OAuthConsumer($r[0]['client_id'], $r[0]['pw'], $r[0]['redirect_uri']);
@@ -44,32 +50,41 @@ class FKOAuthDataStore extends OAuthDataStore
                return null;
        }
 
-       function lookup_token($consumer, $token_type, $token)
+       /**
+        * @param string $consumer   consumer
+        * @param string $token_type type
+        * @param string $token      token
+        * @return mixed
+        */
+       public static function lookup_token($consumer, $token_type, $token)
        {
                logger(__function__.":".$consumer.", ". $token_type.", ".$token);
-               $r = q("SELECT id, secret,scope, expires, uid  FROM tokens WHERE client_id='%s' AND scope='%s' AND id='%s'",
-                       dbesc($consumer->key),
-                       dbesc($token_type),
-                       dbesc($token)
-               );
+               
+               $s = dba::select('tokens', array('id', 'secret', 'scope', 'expires', 'uid'), array('client_id' => $consumer->key, 'scope' => $token_type, 'id' => $token));
+               $r = dba::inArray($s);
+
                if (DBM::is_result($r)) {
                        $ot=new OAuthToken($r[0]['id'], $r[0]['secret']);
-                       $ot->scope=$r[0]['scope'];
+                       $ot->scope = $r[0]['scope'];
                        $ot->expires = $r[0]['expires'];
                        $ot->uid = $r[0]['uid'];
                        return $ot;
                }
+
                return null;
        }
 
-       function lookup_nonce($consumer, $token, $nonce, $timestamp)
+       /**
+        * @param string $consumer  consumer
+        * @param string $token     token
+        * @param string $nonce     nonce
+        * @param string $timestamp timestamp
+        * @return mixed
+        */
+       public static function lookup_nonce($consumer, $token, $nonce, $timestamp)
        {
-               //echo __file__.":".__line__."<pre>"; var_dump($consumer,$key); killme();
-               $r = q("SELECT id, secret  FROM tokens WHERE client_id='%s' AND id='%s' AND expires=%d",
-                       dbesc($consumer->key),
-                       dbesc($nonce),
-                       intval($timestamp)
-               );
+               $s = dba::select('tokens', array('id', 'secret'), array('client_id' => $consumer->key, 'id' => $nonce, 'expires' => $timestamp));
+               $r = dba::inArray($s);
                
                if (DBM::is_result($r)) {
                        return new OAuthToken($r[0]['id'], $r[0]['secret']);
@@ -78,11 +93,16 @@ class FKOAuthDataStore extends OAuthDataStore
                return null;
        }
 
-       function new_request_token($consumer, $callback = null)
+       /**
+        * @param string $consumer consumer
+        * @param string $callback optional, default null
+        * @return mixed
+        */
+       public static function new_request_token($consumer, $callback = null)
        {
                logger(__function__.":".$consumer.", ". $callback);
-               $key = $this->gen_token();
-               $sec = $this->gen_token();
+               $key = self::genToken();
+               $sec = self::genToken();
 
                if ($consumer->key) {
                        $k = $consumer->key;
@@ -90,12 +110,14 @@ class FKOAuthDataStore extends OAuthDataStore
                        $k = $consumer;
                }
 
-               $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires) VALUES ('%s','%s','%s','%s', UNIX_TIMESTAMP()+%d)",
-                       dbesc($key),
-                       dbesc($sec),
-                       dbesc($k),
-                       'request',
-                       intval(REQUEST_TOKEN_DURATION)
+               $r = dba::insert(
+                       'tokens',
+                       array(
+                               'id' => $key,
+                               'secret' => $sec,
+                               'client_id' => $k,
+                               'scope' => 'request',
+                               'expires' => UNIX_TIMESTAMP() + REQUEST_TOKEN_DURATION)
                );
 
                if (!$r) {
@@ -105,7 +127,13 @@ class FKOAuthDataStore extends OAuthDataStore
                return new OAuthToken($key, $sec);
        }
 
-       function new_access_token($token, $consumer, $verifier = null)
+       /**
+        * @param string $token    token
+        * @param string $consumer consumer
+        * @param string $verifier optional, defult null
+        * @return object
+        */
+       public static function new_access_token($token, $consumer, $verifier = null)
        {
                logger(__function__.":".$token.", ". $consumer.", ". $verifier);
 
@@ -121,15 +149,17 @@ class FKOAuthDataStore extends OAuthDataStore
                logger(__function__.":".$verifier.",".$uverifier);
 
                if (is_null($verifier) || ($uverifier!==false)) {
-                       $key = $this->gen_token();
-                       $sec = $this->gen_token();
-                       $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires, uid) VALUES ('%s','%s','%s','%s', UNIX_TIMESTAMP()+%d, %d)",
-                               dbesc($key),
-                               dbesc($sec),
-                               dbesc($consumer->key),
-                               'access',
-                               intval(ACCESS_TOKEN_DURATION),
-                               intval($uverifier)
+                       $key = self::genToken();
+                       $sec = self::genToken();
+                       $r = dba::insert(
+                               'tokens',
+                               array(
+                                       'id' => $key,
+                                       'secret' => $sec,
+                                       'client_id' => $consumer->key,
+                                       'scope' => 'access',
+                                       'expires' => UNIX_TIMESTAMP() + ACCESS_TOKEN_DURATION,
+                                       'uid' => $uverifier)
                        );
 
                        if ($r) {