]> git.mxchange.org Git - friendica.git/blobdiff - mod/dfrn_poll.php
Merge pull request #10109 from annando/post-type
[friendica.git] / mod / dfrn_poll.php
index ca60cc87a100f07dca83f88395f8ac8f4cf39d27..54a996f651221be56a66335ffa6b6f7ac435a213 100644 (file)
@@ -1,26 +1,38 @@
 <?php
-
 /**
- * @file mod/dfrn_poll.php
+ * @copyright Copyright (C) 2010-2021, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  */
 
 use Friendica\App;
-use Friendica\Core\Config;
-use Friendica\Core\L10n;
 use Friendica\Core\Logger;
-use Friendica\Core\System;
 use Friendica\Core\Session;
+use Friendica\Core\System;
 use Friendica\Database\DBA;
-use Friendica\Module\Login;
+use Friendica\DI;
 use Friendica\Protocol\DFRN;
 use Friendica\Protocol\OStatus;
-use Friendica\Util\Network;
 use Friendica\Util\Strings;
 use Friendica\Util\XML;
 
 function dfrn_poll_init(App $a)
 {
-       Login::sessionAuth();
+       DI::auth()->withSession($a);
 
        $dfrn_id         =  $_GET['dfrn_id']         ?? '';
        $type            = ($_GET['type']            ?? '') ?: 'data';
@@ -50,7 +62,7 @@ function dfrn_poll_init(App $a)
        $hidewall = false;
 
        if (($dfrn_id === '') && empty($_POST['dfrn_id'])) {
-               if (Config::get('system', 'block_public') && !Session::isAuthenticated()) {
+               if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
                        throw new \Friendica\Network\HTTPException\ForbiddenException();
                }
 
@@ -90,7 +102,7 @@ function dfrn_poll_init(App $a)
                                $my_id = '0:' . $dfrn_id;
                                break;
                        default:
-                               $a->internalRedirect();
+                               DI::baseUrl()->redirect();
                                break; // NOTREACHED
                }
 
@@ -102,7 +114,7 @@ function dfrn_poll_init(App $a)
                );
 
                if (DBA::isResult($r)) {
-                       $s = Network::fetchUrl($r[0]['poll'] . '?dfrn_id=' . $my_id . '&type=profile-check');
+                       $s = DI::httpRequest()->fetch($r[0]['poll'] . '?dfrn_id=' . $my_id . '&type=profile-check');
 
                        Logger::log("dfrn_poll: old profile returns " . $s, Logger::DATA);
 
@@ -120,7 +132,7 @@ function dfrn_poll_init(App $a)
                                        Session::setVisitorsContacts();
 
                                        if (!$quiet) {
-                                               info(L10n::t('%1$s welcomes %2$s', $r[0]['username'], $r[0]['name']) . EOL);
+                                               info(DI::l10n()->t('%1$s welcomes %2$s', $r[0]['username'], $r[0]['name']));
                                        }
 
                                        // Visitors get 1 day session.
@@ -137,10 +149,10 @@ function dfrn_poll_init(App $a)
                        if (!empty($destination_url)) {
                                System::externalRedirect($destination_url);
                        } else {
-                               $a->internalRedirect('profile/' . $profile);
+                               DI::baseUrl()->redirect('profile/' . $profile);
                        }
                }
-               $a->internalRedirect();
+               DI::baseUrl()->redirect();
        }
 
        if ($type === 'profile-check' && $dfrn_version < 2.2) {
@@ -227,7 +239,6 @@ function dfrn_poll_post(App $a)
 {
        $dfrn_id      =  $_POST['dfrn_id']   ?? '';
        $challenge    =  $_POST['challenge'] ?? '';
-       $url          =  $_POST['url']       ?? '';
        $sec          =  $_POST['sec']       ?? '';
        $ptype        =  $_POST['type']      ?? '';
        $perm         = ($_POST['perm']      ?? '') ?: 'r';
@@ -307,7 +318,6 @@ function dfrn_poll_post(App $a)
                exit();
        }
 
-       $type = $r[0]['type'];
        $last_update = $r[0]['last_update'];
 
        DBA::delete('challenge', ['dfrn-id' => $dfrn_id, 'challenge' => $challenge]);
@@ -324,7 +334,7 @@ function dfrn_poll_post(App $a)
                        $sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", DBA::escape($dfrn_id));
                        break;
                default:
-                       $a->internalRedirect();
+                       DI::baseUrl()->redirect();
                        break; // NOTREACHED
        }
 
@@ -334,59 +344,29 @@ function dfrn_poll_post(App $a)
        }
 
        $contact = $r[0];
-       $owner_uid = $r[0]['uid'];
        $contact_id = $r[0]['id'];
 
-       if ($type === 'reputation' && strlen($url)) {
-               $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
-                       DBA::escape($url),
-                       intval($owner_uid)
-               );
-               $reputation = 0;
-               $text = '';
-
-               if (DBA::isResult($r)) {
-                       $reputation = $r[0]['rating'];
-                       $text = $r[0]['reason'];
-
-                       if ($r[0]['id'] == $contact_id) { // inquiring about own reputation not allowed
-                               $reputation = 0;
-                               $text = '';
-                       }
+       // Update the writable flag if it changed
+       Logger::debug('post request feed', ['post' => $_POST]);
+       if ($dfrn_version >= 2.21) {
+               if ($perm === 'rw') {
+                       $writable = 1;
+               } else {
+                       $writable = 0;
                }
 
-               echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-               <reputation>
-                       <url>$url</url>
-                       <rating>$reputation</rating>
-                       <description>$text</description>
-               </reputation>
-               ";
-               exit();
-               // NOTREACHED
-       } else {
-               // Update the writable flag if it changed
-               Logger::log('dfrn_poll: post request feed: ' . print_r($_POST, true), Logger::DATA);
-               if ($dfrn_version >= 2.21) {
-                       if ($perm === 'rw') {
-                               $writable = 1;
-                       } else {
-                               $writable = 0;
-                       }
-
-                       if ($writable != $contact['writable']) {
-                               q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d",
-                                       intval($writable),
-                                       intval($contact_id)
-                               );
-                       }
+               if ($writable != $contact['writable']) {
+                       q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d",
+                               intval($writable),
+                               intval($contact_id)
+                       );
                }
-
-               header("Content-type: application/atom+xml");
-               $o = DFRN::feed($dfrn_id, $a->argv[1], $last_update, $direction);
-               echo $o;
-               exit();
        }
+
+       header("Content-type: application/atom+xml");
+       $o = DFRN::feed($dfrn_id, $a->argv[1], $last_update, $direction);
+       echo $o;
+       exit();
 }
 
 function dfrn_poll_content(App $a)
@@ -444,7 +424,7 @@ function dfrn_poll_content(App $a)
                                $my_id = '0:' . $dfrn_id;
                                break;
                        default:
-                               $a->internalRedirect();
+                               DI::baseUrl()->redirect();
                                break; // NOTREACHED
                }
 
@@ -486,20 +466,20 @@ function dfrn_poll_content(App $a)
 
                        // URL reply
                        if ($dfrn_version < 2.2) {
-                               $s = Network::fetchUrl($r[0]['poll']
-                                       . '?dfrn_id=' . $encrypted_id
-                                       . '&type=profile-check'
-                                       . '&dfrn_version=' . DFRN_PROTOCOL_VERSION
-                                       . '&challenge=' . $challenge
-                                       . '&sec=' . $sec
+                               $s = DI::httpRequest()->fetch($r[0]['poll']
+                                                             . '?dfrn_id=' . $encrypted_id
+                                                             . '&type=profile-check'
+                                                             . '&dfrn_version=' . DFRN_PROTOCOL_VERSION
+                                                             . '&challenge=' . $challenge
+                                                             . '&sec=' . $sec
                                );
                        } else {
-                               $s = Network::post($r[0]['poll'], [
-                                       'dfrn_id' => $encrypted_id,
-                                       'type' => 'profile-check',
+                               $s = DI::httpRequest()->post($r[0]['poll'], [
+                                       'dfrn_id'      => $encrypted_id,
+                                       'type'         => 'profile-check',
                                        'dfrn_version' => DFRN_PROTOCOL_VERSION,
-                                       'challenge' => $challenge,
-                                       'sec' => $sec
+                                       'challenge'    => $challenge,
+                                       'sec'          => $sec
                                ])->getBody();
                        }
 
@@ -508,7 +488,7 @@ function dfrn_poll_content(App $a)
                        if (strlen($s) && strstr($s, '<?xml')) {
                                $xml = XML::parseString($s);
 
-                               Logger::log('dfrn_poll: profile: parsed xml: ' . print_r($xml, true), Logger::DATA);
+                               Logger::debug(' profile: parsed', ['xml' => $xml]);
 
                                Logger::log('dfrn_poll: secure profile: challenge: ' . $xml->challenge . ' expecting ' . $hash);
                                Logger::log('dfrn_poll: secure profile: sec: ' . $xml->sec . ' expecting ' . $sec);
@@ -523,7 +503,7 @@ function dfrn_poll_content(App $a)
                                        Session::setVisitorsContacts();
 
                                        if (!$quiet) {
-                                               info(L10n::t('%1$s welcomes %2$s', $r[0]['username'], $r[0]['name']) . EOL);
+                                               info(DI::l10n()->t('%1$s welcomes %2$s', $r[0]['username'], $r[0]['name']));
                                        }
 
                                        // Visitors get 1 day session.
@@ -540,18 +520,18 @@ function dfrn_poll_content(App $a)
 
                        switch ($destination_url) {
                                case 'profile':
-                                       $a->internalRedirect('profile/' . $profile . '?f=&tab=profile');
+                                       DI::baseUrl()->redirect('profile/' . $profile . '/profile');
                                        break;
                                case 'photos':
-                                       $a->internalRedirect('photos/' . $profile);
+                                       DI::baseUrl()->redirect('photos/' . $profile);
                                        break;
                                case 'status':
                                case '':
-                                       $a->internalRedirect('profile/' . $profile);
+                                       DI::baseUrl()->redirect('profile/' . $profile);
                                        break;
                                default:
-                                       $appendix = (strstr($destination_url, '?') ? '&f=&redir=1' : '?f=&redir=1');
-                                       $a->redirect($destination_url . $appendix);
+                                       $appendix = (strstr($destination_url, '?') ? '&redir=1' : '?redir=1');
+                                       DI::baseUrl()->redirect($destination_url . $appendix);
                                        break;
                        }
                        // NOTREACHED