]> git.mxchange.org Git - friendica.git/blobdiff - mod/redir.php
Merge pull request #5899 from annando/avoid-flooding
[friendica.git] / mod / redir.php
index 8484b53ebab36af6b3db34e0f8e01b49305415c9..e989ad015a83045b5f98ce9e202e416bce03731a 100644 (file)
@@ -2,8 +2,9 @@
 
 use Friendica\App;
 use Friendica\Core\L10n;
+use Friendica\Core\Protocol;
 use Friendica\Core\System;
-use Friendica\Database\DBM;
+use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Profile;
 
@@ -22,16 +23,16 @@ function redir_init(App $a) {
        }
 
        if (!empty($cid)) {
-               $fields = ['id', 'uid', 'nurl', 'url', 'addr', 'name', 'network', 'poll', 'issued-id', 'dfrn-id', 'duplex'];
-               $contact = dba::selectFirst('contact', $fields, ['id' => $cid, 'uid' => [0, local_user()]]);
-               if (!DBM::is_result($contact)) {
+               $fields = ['id', 'uid', 'nurl', 'url', 'addr', 'name', 'network', 'poll', 'issued-id', 'dfrn-id', 'duplex', 'pending'];
+               $contact = DBA::selectFirst('contact', $fields, ['id' => $cid, 'uid' => [0, local_user()]]);
+               if (!DBA::isResult($contact)) {
                        notice(L10n::t('Contact not found.'));
                        goaway(System::baseUrl());
                }
 
                $contact_url = $contact['url'];
 
-               if ($contact['network'] !== NETWORK_DFRN // Authentication isn't supported for non DFRN contacts.
+               if ($contact['network'] !== Protocol::DFRN // Authentication isn't supported for non DFRN contacts.
                        || (!local_user() && !remote_user()) // Visitors (not logged in or not remotes) can't authenticate.
                        || (!empty($a->contact['id']) && $a->contact['id'] == $cid)) // Local user is already authenticated.
                {
@@ -41,9 +42,9 @@ function redir_init(App $a) {
                if ($contact['uid'] == 0 && local_user()) {
                        // Let's have a look if there is an established connection
                        // between the puplic contact we have found and the local user.
-                       $contact = dba::selectFirst('contact', $fields, ['nurl' => $contact['nurl'], 'uid' => local_user()]);
+                       $contact = DBA::selectFirst('contact', $fields, ['nurl' => $contact['nurl'], 'uid' => local_user()]);
 
-                       if (DBM::is_result($contact)) {
+                       if (DBA::isResult($contact)) {
                                $cid = $contact['id'];
                        }
 
@@ -56,7 +57,7 @@ function redir_init(App $a) {
                }
 
                if (remote_user()) {
-                       $host = substr(System::baseUrl() . ($a->path ? '/' . $a->path : ''), strpos(System::baseUrl(), '://') + 3);
+                       $host = substr(System::baseUrl() . ($a->getURLPath() ? '/' . $a->getURLPath() : ''), strpos(System::baseUrl(), '://') + 3);
                        $remotehost = substr($contact['addr'], strpos($contact['addr'], '@') + 1);
 
                        // On a local instance we have to check if the local user has already authenticated
@@ -79,7 +80,7 @@ function redir_init(App $a) {
                }
 
                // Doing remote auth with dfrn.
-               if (local_user()&& (!empty($contact['dfrn-id']) || !empty($contact['issued-id']))) {
+               if (local_user() && (!empty($contact['dfrn-id']) || !empty($contact['issued-id'])) && empty($contact['pending'])) {
                        $dfrn_id = $orig_id = (($contact['issued-id']) ? $contact['issued-id'] : $contact['dfrn-id']);
 
                        if ($contact['duplex'] && $contact['issued-id']) {
@@ -95,7 +96,7 @@ function redir_init(App $a) {
 
                        $fields = ['uid' => local_user(), 'cid' => $cid, 'dfrn_id' => $dfrn_id,
                                'sec' => $sec, 'expire' => time() + 45];
-                       dba::insert('profile_check', $fields);
+                       DBA::insert('profile_check', $fields);
 
                        logger('mod_redir: ' . $contact['name'] . ' ' . $sec, LOGGER_DEBUG);