X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fdfrn_request.php;h=f5716e8ff5b3719b5883e37f41bc64ce4db09c82;hb=5ce13b210ee83a3ee3622d2106589b9c2c4c876a;hp=76ddb09a5f8ac1919ed5c01d951deadd95a893c1;hpb=1bc4b2e0788ac11d3b377013b410f2250fff68aa;p=friendica.git diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 76ddb09a5f..f5716e8ff5 100644 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -1,19 +1,30 @@ . + * + *Handles communication associated with the issuance of friend requests. + * + * @see PDF with dfrn specs: https://github.com/friendica/friendica/blob/stable/spec/dfrn2.pdf * You also find a graphic which describes the confirmation process at - * https://github.com/friendica/friendica/blob/master/spec/dfrn2_contact_request.png + * https://github.com/friendica/friendica/blob/stable/spec/dfrn2_contact_request.png */ use Friendica\App; -use Friendica\Core\Config; use Friendica\Core\Logger; use Friendica\Core\Protocol; use Friendica\Core\Renderer; @@ -24,6 +35,7 @@ use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Group; +use Friendica\Model\Notify\Type; use Friendica\Model\Profile; use Friendica\Model\User; use Friendica\Module\Security\Login; @@ -63,8 +75,8 @@ function dfrn_request_init(App $a) */ function dfrn_request_post(App $a) { - if (($a->argc != 2) || (!count($a->profile))) { - Logger::log('Wrong count of argc or profiles: argc=' . $a->argc . ',profile()=' . count($a->profile)); + if ($a->argc != 2 || empty($a->profile)) { + Logger::log('Wrong count of argc or profiles: argc=' . $a->argc . ', profile()=' . count($a->profile ?? [])); return; } @@ -227,7 +239,7 @@ function dfrn_request_post(App $a) * in $a->argv[1] and we should have their complete info in $a->profile. * */ - if (!(is_array($a->profile) && count($a->profile))) { + if (empty($a->profile['uid'])) { notice(DI::l10n()->t('Profile unavailable.') . EOL); return; } @@ -285,8 +297,8 @@ function dfrn_request_post(App $a) $data = Probe::uri($url); $network = $data["network"]; - // Canonicalise email-style profile locator - $url = Probe::webfingerDfrn($url, $hcard); + // Canonicalize email-style profile locator + $url = Probe::webfingerDfrn($data['url'], $hcard); if (substr($url, 0, 5) === 'stat:') { // Every time we detect the remote subscription we define this as OStatus. @@ -455,15 +467,9 @@ function dfrn_request_post(App $a) // Diaspora needs the uri in the format user@domain.tld // Diaspora will support the remote subscription in a future version if ($network == Protocol::DIASPORA) { - $uri = $nickname . '@' . DI::baseUrl()->getHostname(); - - if (DI::baseUrl()->getUrlPath()) { - $uri .= '/' . DI::baseUrl()->getUrlPath(); - } - - $uri = urlencode($uri); + $uri = urlencode($a->profile['addr']); } else { - $uri = 'profile/' . $nickname; + $uri = urlencode($a->profile['url']); } $url = str_replace('{uri}', $uri, $url); @@ -553,7 +559,7 @@ function dfrn_request_content(App $a) if (!$auto_confirm) { notification([ - 'type' => NOTIFY_INTRO, + 'type' => Type::INTRO, 'notify_flags' => $r[0]['notify-flags'], 'language' => $r[0]['language'], 'to_name' => $r[0]['username'], @@ -595,8 +601,8 @@ function dfrn_request_content(App $a) exit(); } else { // Normal web request. Display our user's introduction form. - if (Config::get('system', 'block_public') && !Session::isAuthenticated()) { - if (!Config::get('system', 'local_block')) { + if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) { + if (!DI::config()->get('system', 'local_block')) { notice(DI::l10n()->t('Public access denied.') . EOL); return; } @@ -632,28 +638,21 @@ function dfrn_request_content(App $a) $tpl = Renderer::getMarkupTemplate('auto_request.tpl'); } - $page_desc = DI::l10n()->t("Please enter your 'Identity Address' from one of the following supported communications networks:"); - - $invite_desc = DI::l10n()->t('If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today.', Search::getGlobalDirectory() . '/servers'); - $o = Renderer::replaceMacros($tpl, [ - '$header' => DI::l10n()->t('Friend/Connection Request'), - '$desc' => DI::l10n()->t('Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@gnusocial.de'), - '$pls_answer' => DI::l10n()->t('Please answer the following:'), - '$does_know_you' => ['knowyou', DI::l10n()->t('Does %s know you?', $a->profile['name']), false, '', [DI::l10n()->t('No'), DI::l10n()->t('Yes')]], - '$add_note' => DI::l10n()->t('Add a personal note:'), - '$page_desc' => $page_desc, - '$friendica' => DI::l10n()->t('Friendica'), - '$statusnet' => DI::l10n()->t("GNU Social \x28Pleroma, Mastodon\x29"), - '$diaspora' => DI::l10n()->t("Diaspora \x28Socialhome, Hubzilla\x29"), - '$diasnote' => DI::l10n()->t(' - please do not use this form. Instead, enter %s into your Diaspora search bar.', $target_addr), - '$your_address' => DI::l10n()->t('Your Identity Address:'), - '$invite_desc' => $invite_desc, - '$submit' => DI::l10n()->t('Submit Request'), - '$cancel' => DI::l10n()->t('Cancel'), - '$nickname' => $a->argv[1], - '$name' => $a->profile['name'], - '$myaddr' => $myaddr + '$header' => DI::l10n()->t('Friend/Connection Request'), + '$page_desc' => DI::l10n()->t('Enter your Webfinger address (user@domain.tld) or profile URL here. If this isn\'t supported by your system (for example it doesn\'t work with Diaspora), you have to subscribe to %s directly on your system', $target_addr), + '$invite_desc' => DI::l10n()->t('If you are not yet a member of the free social web, follow this link to find a public Friendica node and join us today.', Search::getGlobalDirectory() . '/servers'), + '$your_address' => DI::l10n()->t('Your Webfinger address or profile URL:'), + '$pls_answer' => DI::l10n()->t('Please answer the following:'), + '$submit' => DI::l10n()->t('Submit Request'), + '$cancel' => DI::l10n()->t('Cancel'), + + '$request' => 'dfrn_request/' . $a->argv[1], + '$name' => $a->profile['name'], + '$myaddr' => $myaddr, + + '$does_know_you' => ['knowyou', DI::l10n()->t('%s knows you', $a->profile['name'])], + '$addnote_field' => ['dfrn-request-message', DI::l10n()->t('Add a personal note:')], ]); return $o; }