]> git.mxchange.org Git - friendica.git/commitdiff
Many more app-variables removed
authorMichael <heluecht@pirati.ca>
Sat, 24 Jul 2021 10:09:39 +0000 (10:09 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 24 Jul 2021 10:09:39 +0000 (10:09 +0000)
30 files changed:
boot.php
include/conversation.php
mod/cal.php
mod/display.php
mod/editpost.php
mod/events.php
mod/notes.php
mod/photos.php
mod/videos.php
src/App.php
src/App/Page.php
src/Content/Text/HTML.php
src/Content/Widget.php
src/Content/Widget/VCard.php
src/Core/Renderer.php
src/Model/Profile.php
src/Module/BaseProfile.php
src/Module/Contact.php
src/Module/Debug/Localtime.php
src/Module/HCard.php
src/Module/Item/Compose.php
src/Module/Profile/Common.php
src/Module/Profile/Contacts.php
src/Module/Profile/Profile.php
src/Module/Profile/Status.php
src/Module/RemoteFollow.php
src/Module/Update/Profile.php
src/Object/Post.php
src/Object/Thread.php
src/Security/Authentication.php

index b3b560a0963f0be40495966d4a6a5030bb8eee73..ecf59eb2fc587140cfd5e1dbd50049a754286e4d 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -297,13 +297,11 @@ function notice($s)
                return;
        }
 
-       $a = DI::app();
        if (empty($_SESSION['sysmsg'])) {
                $_SESSION['sysmsg'] = [];
        }
-       if ($a->interactive) {
-               $_SESSION['sysmsg'][] = $s;
-       }
+
+       $_SESSION['sysmsg'][] = $s;
 }
 
 /**
@@ -315,14 +313,15 @@ function notice($s)
  */
 function info($s)
 {
-       $a = DI::app();
+       if (empty($_SESSION)) {
+               return;
+       }
 
        if (empty($_SESSION['sysmsg_info'])) {
                $_SESSION['sysmsg_info'] = [];
        }
-       if ($a->interactive) {
-               $_SESSION['sysmsg_info'][] = $s;
-       }
+
+       $_SESSION['sysmsg_info'][] = $s;
 }
 
 function feed_birthday($uid, $tz)
index c46aeff992621b22393948864af4c05f51d061a2..32e705290ddc141cbfba3ebe4df009e69720366a 100644 (file)
@@ -1134,7 +1134,6 @@ function status_editor(App $a, $x, $notes_cid = 0, $popup = false)
                '$preview'      => DI::l10n()->t('Preview'),
                '$jotplugins'   => $jotplugins,
                '$notes_cid'    => $notes_cid,
-               '$sourceapp'    => DI::l10n()->t($a->sourcename),
                '$cancel'       => DI::l10n()->t('Cancel'),
                '$rand_num'     => Crypto::randomDigits(12),
 
index e1cf91aa685dd4cceeca4a36140e860777f00ce1..d4830842bb05159a2d015d1a655cc24668c1cc8c 100644 (file)
 
 use Friendica\App;
 use Friendica\Content\Nav;
-use Friendica\Content\Text\BBCode;
 use Friendica\Content\Widget;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use Friendica\DI;
-use Friendica\Model\Contact;
 use Friendica\Model\Event;
 use Friendica\Model\Item;
 use Friendica\Model\User;
@@ -52,52 +50,34 @@ function cal_init(App $a)
 
        Nav::setSelected('events');
 
-       $nick = $a->argv[1];
-       $user = DBA::selectFirst('user', [], ['nickname' => $nick, 'blocked' => false]);
-       if (!DBA::isResult($user)) {
-               throw new HTTPException\NotFoundException();
-       }
-
-       $a->data['user'] = $user;
-       $a->profile_uid = $user['uid'];
-
        // if it's a json request abort here becaus we don't
        // need the widget data
        if (!empty($a->argv[2]) && ($a->argv[2] === 'json')) {
                return;
        }
 
-       $a->profile = User::getOwnerDataByNick($nick);
-       if (empty($a->profile)) {
+       $owner = User::getOwnerDataByNick($a->argv[1]);
+       if (empty($owner)) {
                throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
        }
 
-       $account_type = Contact::getAccountType($a->profile);
-
-       $tpl = Renderer::getMarkupTemplate('widget/vcard.tpl');
-
-       $vcard_widget = Renderer::replaceMacros($tpl, [
-               '$name' => $a->profile['name'],
-               '$photo' => $a->profile['photo'],
-               '$addr' => $a->profile['addr'] ?: '',
-               '$account_type' => $account_type,
-               '$about' => BBCode::convert($a->profile['about']),
-       ]);
-
-       $cal_widget = Widget\CalendarExport::getHTML($user['uid']);
-
        if (empty(DI::page()['aside'])) {
                DI::page()['aside'] = '';
        }
 
-       DI::page()['aside'] .= $vcard_widget;
-       DI::page()['aside'] .= $cal_widget;
+       DI::page()['aside'] .= Widget\VCard::getHTML($owner);
+       DI::page()['aside'] .= Widget\CalendarExport::getHTML($owner['uid']);
 
        return;
 }
 
 function cal_content(App $a)
 {
+       $owner = User::getOwnerDataByNick($a->argv[1]);
+       if (empty($owner)) {
+               throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
+       }
+
        Nav::setSelected('events');
 
        // get the translation strings for the callendar
@@ -110,7 +90,7 @@ function cal_content(App $a)
 
        $htpl = Renderer::getMarkupTemplate('event_head.tpl');
        DI::page()['htmlhead'] .= Renderer::replaceMacros($htpl, [
-               '$module_url' => '/cal/' . $a->data['user']['nickname'],
+               '$module_url' => '/cal/' . $owner['nickname'],
                '$modparams' => 2,
                '$i18n' => $i18n,
        ]);
@@ -127,19 +107,16 @@ function cal_content(App $a)
        }
 
        // Setup permissions structures
-       $owner_uid = intval($a->data['user']['uid']);
-       $nick = $a->data['user']['nickname'];
-       if (empty($a->profile)) {
-               throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
-       }
+       $owner_uid = intval($owner['uid']);
+       $nick = $owner['nickname'];
 
-       $contact_id = Session::getRemoteContactID($a->profile['uid']);
+       $contact_id = Session::getRemoteContactID($owner['uid']);
 
-       $remote_contact = $contact_id && DBA::exists('contact', ['id' => $contact_id, 'uid' => $a->profile['uid']]);
+       $remote_contact = $contact_id && DBA::exists('contact', ['id' => $contact_id, 'uid' => $owner['uid']]);
 
-       $is_owner = local_user() == $a->profile['uid'];
+       $is_owner = local_user() == $owner['uid'];
 
-       if ($a->profile['hidewall'] && !$is_owner && !$remote_contact) {
+       if ($owner['hidewall'] && !$is_owner && !$remote_contact) {
                notice(DI::l10n()->t('Access to this profile has been restricted.'));
                return;
        }
@@ -150,7 +127,7 @@ function cal_content(App $a)
        $sql_extra = " AND `event`.`cid` = 0 " . $sql_perms;
 
        // get the tab navigation bar
-       $tabs = BaseProfile::getTabsHTML($a, 'cal', false, $a->data['user']['nickname']);
+       $tabs = BaseProfile::getTabsHTML($a, 'cal', false, $owner);
 
        // The view mode part is similiar to /mod/events.php
        if ($mode == 'view') {
index b51768e8004099dab64b74fa2e76ab2f23b53b12..fd7ef4ae850d8f9d287dd9cb0a37cb1bcd742942 100644 (file)
@@ -32,6 +32,7 @@ use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
+use Friendica\Model\User;
 use Friendica\Module\ActivityPub\Objects;
 use Friendica\Network\HTTPException;
 use Friendica\Protocol\ActivityPub;
@@ -134,6 +135,7 @@ function display_fetchauthor($a, $item)
 
        $profiledata = [];
        $profiledata['uid'] = -1;
+       $profiledata['id'] = -1;
        $profiledata['nickname'] = $author['nick'];
        $profiledata['name'] = $author['name'];
        $profiledata['picdate'] = '';
@@ -189,9 +191,9 @@ function display_content(App $a, $update = false, $update_uid = 0)
                $item = Post::selectFirst(['uid', 'parent-uri-id'], ['uri-id' => $uri_id, 'uid' => $update_uid]);
                if (!empty($item)) {
                        if ($item['uid'] != 0) {
-                               $a->profile = ['uid' => intval($item['uid'])];
+                               $a->profile_owner = intval($item['uid']);
                        } else {
-                               $a->profile = ['uid' => intval($update_uid)];
+                               $a->profile_owner = intval($update_uid);
                        }
                        $parent_uri_id = $item['parent-uri-id'];
                }
@@ -273,14 +275,18 @@ function display_content(App $a, $update = false, $update_uid = 0)
                $page_uid = $item['uid'];
        }
 
-       $page_contact = DBA::selectFirst('contact', [], ['self' => true, 'uid' => $page_uid]);
+       $page_contact = DBA::selectFirst('contact', ['id', 'url', 'network', 'name'], ['self' => true, 'uid' => $page_uid]);
        if (DBA::isResult($page_contact)) {
+               // "$a->page_contact" is only used in "checkWallToWall" in Post.php.
+               // It is used for the wall post feature that has its issues.
+               // It can't work with AP or Diaspora since the creator can't sign the post with their private key.
                $a->page_contact = $page_contact;
+               $page_user = User::getById($page_uid);
        }
 
        $is_owner = (local_user() && (in_array($page_uid, [local_user(), 0])) ? true : false);
 
-       if (!empty($a->profile['hidewall']) && !$is_owner && !$is_remote_contact) {
+       if (!empty($page_user['hidewall']) && !$is_owner && !$is_remote_contact) {
                throw new HTTPException\ForbiddenException(DI::l10n()->t('Access to this profile has been restricted.'));
        }
 
index 6f80bac0c1ad21b148b5d6bc0b7d351bf3e46e82..ee72b1e64e574980cb050e2ab235e981e61fe22a 100644 (file)
@@ -124,7 +124,6 @@ function editpost_content(App $a)
                '$profile_uid' => $_SESSION['uid'],
                '$preview' => DI::l10n()->t('Preview'),
                '$jotplugins' => $jotplugins,
-               '$sourceapp' => DI::l10n()->t($a->sourcename),
                '$cancel' => DI::l10n()->t('Cancel'),
                '$rand_num' => Crypto::randomDigits(12),
 
index aabb608eb742d4a8bbd592644f75b72bbe68338e..43c79dd9bc49f081fca755af67ed6300190eac0f 100644 (file)
@@ -280,7 +280,7 @@ function events_content(App $a)
        $tabs = '';
        // tabs
        if ($a->theme_events_in_profile) {
-               $tabs = BaseProfile::getTabsHTML($a, 'events', true);
+               $tabs = BaseProfile::getTabsHTML($a, 'events', true, $a->user);
        }
 
        $mode = 'view';
index 2b8c20783ab4ce1bbf5470d5341919fe12797483..8b9da39696d81485701678f7d034a1915f62639b 100644 (file)
@@ -45,7 +45,7 @@ function notes_content(App $a, $update = false)
                return;
        }
 
-       $o = BaseProfile::getTabsHTML($a, 'notes', true);
+       $o = BaseProfile::getTabsHTML($a, 'notes', true, $a->user);
 
        if (!$update) {
                $o .= '<h3>' . DI::l10n()->t('Personal Notes') . '</h3>';
index dcea99991ac6f9f8b3a0f48015000ca279e18d50..37d3c467b402078fe87ff1c7d1862b518bf501e9 100644 (file)
@@ -24,6 +24,7 @@ use Friendica\Content\Feature;
 use Friendica\Content\Nav;
 use Friendica\Content\Pager;
 use Friendica\Content\Text\BBCode;
+use Friendica\Content\Widget;
 use Friendica\Core\ACL;
 use Friendica\Core\Addon;
 use Friendica\Core\Hook;
@@ -51,6 +52,7 @@ use Friendica\Security\Security;
 use Friendica\Util\Strings;
 use Friendica\Util\Temporal;
 use Friendica\Util\XML;
+use Friendica\Network\HTTPException;
 
 function photos_init(App $a) {
 
@@ -61,34 +63,13 @@ function photos_init(App $a) {
        Nav::setSelected('home');
 
        if ($a->argc > 1) {
-               $nick = $a->argv[1];
-               $user = DBA::selectFirst('user', [], ['nickname' => $nick, 'blocked' => false]);
+               $owner = User::getOwnerDataByNick($a->argv[1]);
 
-               if (!DBA::isResult($user)) {
-                       return;
-               }
-
-               $a->data['user'] = $user;
-               $a->profile_uid = $user['uid'];
-               $is_owner = (local_user() && (local_user() == $a->profile_uid));
-
-               $profile = User::getOwnerDataByNick($nick);
+               $is_owner = (local_user() && (local_user() == $owner['uid']));
 
-               $account_type = Contact::getAccountType($profile);
-
-               $tpl = Renderer::getMarkupTemplate('widget/vcard.tpl');
-
-               $vcard_widget = Renderer::replaceMacros($tpl, [
-                       '$name' => $profile['name'],
-                       '$photo' => $profile['photo'],
-                       '$addr' => $profile['addr'] ?? '',
-                       '$account_type' => $account_type,
-                       '$about' => BBCode::convert($profile['about']),
-               ]);
+               $albums = Photo::getAlbums($owner['uid']);
 
-               $albums = Photo::getAlbums($a->data['user']['uid']);
-
-               $albums_visible = ((intval($a->data['user']['hidewall']) && !Session::isAuthenticated()) ? false : true);
+               $albums_visible = ((intval($owner['hidewall']) && !Session::isAuthenticated()) ? false : true);
 
                // add various encodings to the array so we can just loop through and pick them out in a template
                $ret = ['success' => false];
@@ -103,12 +84,12 @@ function photos_init(App $a) {
                        $ret['albums'] = [];
                        foreach ($albums as $k => $album) {
                                //hide profile photos to others
-                               if (!$is_owner && !Session::getRemoteContactID($a->profile_uid) && ($album['album'] == DI::l10n()->t('Profile Photos')))
+                               if (!$is_owner && !Session::getRemoteContactID($owner['uid']) && ($album['album'] == DI::l10n()->t('Profile Photos')))
                                        continue;
                                $entry = [
                                        'text'      => $album['album'],
                                        'total'     => $album['total'],
-                                       'url'       => 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album['album']),
+                                       'url'       => 'photos/' . $owner['nickname'] . '/album/' . bin2hex($album['album']),
                                        'urlencode' => urlencode($album['album']),
                                        'bin2hex'   => bin2hex($album['album'])
                                ];
@@ -116,7 +97,7 @@ function photos_init(App $a) {
                        }
                }
 
-               if (local_user() && $a->data['user']['uid'] == local_user()) {
+               if (local_user() && $owner['uid'] == local_user()) {
                        $can_post = true;
                } else {
                        $can_post = false;
@@ -124,11 +105,11 @@ function photos_init(App $a) {
 
                if ($ret['success']) {
                        $photo_albums_widget = Renderer::replaceMacros(Renderer::getMarkupTemplate('photo_albums.tpl'), [
-                               '$nick'     => $a->data['user']['nickname'],
+                               '$nick'     => $owner['nickname'],
                                '$title'    => DI::l10n()->t('Photo Albums'),
                                '$recent'   => DI::l10n()->t('Recent Photos'),
                                '$albums'   => $ret['albums'],
-                               '$upload'   => [DI::l10n()->t('Upload New Photos'), 'photos/' . $a->data['user']['nickname'] . '/upload'],
+                               '$upload'   => [DI::l10n()->t('Upload New Photos'), 'photos/' . $owner['nickname'] . '/upload'],
                                '$can_post' => $can_post
                        ]);
                }
@@ -137,7 +118,7 @@ function photos_init(App $a) {
                        DI::page()['aside'] = '';
                }
 
-               DI::page()['aside'] .= $vcard_widget;
+               DI::page()['aside'] .= Widget\VCard::getHTML($owner);
 
                if (!empty($photo_albums_widget)) {
                        DI::page()['aside'] .= $photo_albums_widget;
@@ -155,13 +136,18 @@ function photos_init(App $a) {
 
 function photos_post(App $a)
 {
+       $user = User::getByNickname($a->argv[1]);
+       if (!DBA::isResult($user)) {
+               throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
+       }
+
        $phototypes = Images::supportedTypes();
 
        $can_post  = false;
        $visitor   = 0;
 
-       $page_owner_uid = intval($a->data['user']['uid']);
-       $community_page = $a->data['user']['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
+       $page_owner_uid = intval($user['uid']);
+       $community_page = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
 
        if (local_user() && (local_user() == $page_owner_uid)) {
                $can_post = true;
@@ -203,7 +189,7 @@ function photos_post(App $a)
 
        if ($a->argc > 3 && $a->argv[2] === 'album') {
                if (!Strings::isHex($a->argv[3])) {
-                       DI::baseUrl()->redirect('photos/' . $a->data['user']['nickname'] . '/album');
+                       DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album');
                }
                $album = hex2bin($a->argv[3]);
 
@@ -219,13 +205,13 @@ function photos_post(App $a)
 
                if (!DBA::isResult($r)) {
                        notice(DI::l10n()->t('Album not found.'));
-                       DI::baseUrl()->redirect('photos/' . $a->data['user']['nickname'] . '/album');
+                       DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album');
                        return; // NOTREACHED
                }
 
                // Check if the user has responded to a delete confirmation query
                if (!empty($_REQUEST['canceled'])) {
-                       DI::baseUrl()->redirect('photos/' . $a->data['user']['nickname'] . '/album/' . $a->argv[3]);
+                       DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album/' . $a->argv[3]);
                }
 
                // RENAME photo album
@@ -282,7 +268,7 @@ function photos_post(App $a)
                        }
                }
 
-               DI::baseUrl()->redirect('photos/' . $a->data['user']['nickname'] . '/album');
+               DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album');
        }
 
        if ($a->argc > 3 && $a->argv[2] === 'image') {
@@ -419,7 +405,7 @@ function photos_post(App $a)
                        $arr['visible']       = $visibility;
                        $arr['origin']        = 1;
 
-                       $arr['body']          = '[url=' . DI::baseUrl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $photo['resource-id'] . ']'
+                       $arr['body']          = '[url=' . DI::baseUrl() . '/photos/' . $user['nickname'] . '/image/' . $photo['resource-id'] . ']'
                                                . '[img]' . DI::baseUrl() . '/photo/' . $photo['resource-id'] . '-' . $photo['scale'] . '.'. $ext . '[/img]'
                                                . '[/url]';
 
@@ -523,7 +509,7 @@ function photos_post(App $a)
 
                                                        if (!empty($item['uri-id'])) {
                                                                Tag::store($item['uri-id'], Tag::MENTION, $newname, $profile);
-                                                       }       
+                                                       }
                                                }
                                        } elseif (strpos($tag, '#') === 0) {
                                                $tagname = substr($tag, 1);
@@ -831,12 +817,17 @@ function photos_content(App $a)
        // photos/name/image/xxxxx/edit
        // photos/name/image/xxxxx/drop
 
+       $user = User::getByNickname($a->argv[1]);
+       if (!DBA::isResult($user)) {
+               throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
+       }
+
        if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
                notice(DI::l10n()->t('Public access denied.'));
                return;
        }
 
-       if (empty($a->data['user'])) {
+       if (empty($user)) {
                notice(DI::l10n()->t('No photos selected'));
                return;
        }
@@ -871,9 +862,9 @@ function photos_content(App $a)
        $edit           = '';
        $drop           = '';
 
-       $owner_uid = $a->data['user']['uid'];
+       $owner_uid = $user['uid'];
 
-       $community_page = (($a->data['user']['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false);
+       $community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false);
 
        if (local_user() && (local_user() == $owner_uid)) {
                $can_post = true;
@@ -902,7 +893,7 @@ function photos_content(App $a)
                $contact = $a->contact;
        }
 
-       if ($a->data['user']['hidewall'] && (local_user() != $owner_uid) && !$remote_contact) {
+       if ($user['hidewall'] && (local_user() != $owner_uid) && !$remote_contact) {
                notice(DI::l10n()->t('Access to this item is restricted.'));
                return;
        }
@@ -913,7 +904,7 @@ function photos_content(App $a)
 
        // tabs
        $is_owner = (local_user() && (local_user() == $owner_uid));
-       $o .= BaseProfile::getTabsHTML($a, 'photos', $is_owner, $a->data['user']['nickname']);
+       $o .= BaseProfile::getTabsHTML($a, 'photos', $is_owner, $user);
 
        // Display upload form
        if ($datatype === 'upload') {
@@ -939,7 +930,7 @@ function photos_content(App $a)
 
                $uploader = '';
 
-               $ret = ['post_url' => 'photos/' . $a->data['user']['nickname'],
+               $ret = ['post_url' => 'photos/' . $user['nickname'],
                                'addon_text' => $uploader,
                                'default_upload' => true];
 
@@ -960,7 +951,7 @@ function photos_content(App $a)
                        '$pagename' => DI::l10n()->t('Upload Photos'),
                        '$sessid' => session_id(),
                        '$usage' => $usage_message,
-                       '$nickname' => $a->data['user']['nickname'],
+                       '$nickname' => $user['nickname'],
                        '$newalbum' => DI::l10n()->t('New album name: '),
                        '$existalbumtext' => DI::l10n()->t('or select existing album:'),
                        '$nosharetext' => DI::l10n()->t('Do not show a status post for this upload'),
@@ -989,7 +980,7 @@ function photos_content(App $a)
        if ($datatype === 'album') {
                // if $datum is not a valid hex, redirect to the default page
                if (!Strings::isHex($datum)) {
-                       DI::baseUrl()->redirect('photos/' . $a->data['user']['nickname']. '/album');
+                       DI::baseUrl()->redirect('photos/' . $user['nickname']. '/album');
                }
                $album = hex2bin($datum);
 
@@ -1047,7 +1038,7 @@ function photos_content(App $a)
 
                                        $o .= Renderer::replaceMacros($edit_tpl,[
                                                '$nametext' => DI::l10n()->t('New album name: '),
-                                               '$nickname' => $a->data['user']['nickname'],
+                                               '$nickname' => $user['nickname'],
                                                '$album' => $album_e,
                                                '$hexalbum' => bin2hex($album),
                                                '$submit' => DI::l10n()->t('Submit'),
@@ -1057,15 +1048,15 @@ function photos_content(App $a)
                        }
                } else {
                        if (($album !== DI::l10n()->t('Profile Photos')) && ($album !== Photo::CONTACT_PHOTOS) && ($album !== DI::l10n()->t(Photo::CONTACT_PHOTOS)) && $can_post) {
-                               $edit = [DI::l10n()->t('Edit Album'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '/edit'];
-                               $drop = [DI::l10n()->t('Drop Album'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '/drop'];
+                               $edit = [DI::l10n()->t('Edit Album'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album) . '/edit'];
+                               $drop = [DI::l10n()->t('Drop Album'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album) . '/drop'];
                        }
                }
 
                if ($order_field === 'posted') {
-                       $order =  [DI::l10n()->t('Show Newest First'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album), 'oldest'];
+                       $order =  [DI::l10n()->t('Show Newest First'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album), 'oldest'];
                } else {
-                       $order = [DI::l10n()->t('Show Oldest First'), 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '?order=posted', 'newest'];
+                       $order = [DI::l10n()->t('Show Oldest First'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album) . '?order=posted', 'newest'];
                }
 
                $photos = [];
@@ -1084,7 +1075,7 @@ function photos_content(App $a)
                                $photos[] = [
                                        'id' => $rr['id'],
                                        'twist' => ' ' . ($twist ? 'rotleft' : 'rotright') . rand(2,4),
-                                       'link' => 'photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id']
+                                       'link' => 'photos/' . $user['nickname'] . '/image/' . $rr['resource-id']
                                                . ($order_field === 'posted' ? '?order=posted' : ''),
                                        'title' => DI::l10n()->t('View Photo'),
                                        'src' => 'photo/' . $rr['resource-id'] . '-' . $rr['scale'] . '.' .$ext,
@@ -1101,7 +1092,7 @@ function photos_content(App $a)
                        '$photos' => $photos,
                        '$album' => $album,
                        '$can_post' => $can_post,
-                       '$upload' => [DI::l10n()->t('Upload New Photos'), 'photos/' . $a->data['user']['nickname'] . '/upload/' . bin2hex($album)],
+                       '$upload' => [DI::l10n()->t('Upload New Photos'), 'photos/' . $user['nickname'] . '/upload/' . bin2hex($album)],
                        '$order' => $order,
                        '$edit' => $edit,
                        '$drop' => $drop,
@@ -1184,10 +1175,10 @@ function photos_content(App $a)
                                }
 
                                if (!is_null($prv)) {
-                                       $prevlink = 'photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . ($order_field === 'posted' ? '?order=posted' : '');
+                                       $prevlink = 'photos/' . $user['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . ($order_field === 'posted' ? '?order=posted' : '');
                                }
                                if (!is_null($nxt)) {
-                                       $nextlink = 'photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . ($order_field === 'posted' ? '?order=posted' : '');
+                                       $nextlink = 'photos/' . $user['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . ($order_field === 'posted' ? '?order=posted' : '');
                                }
 
                                $tpl = Renderer::getMarkupTemplate('photo_edit_head.tpl');
@@ -1220,17 +1211,17 @@ function photos_content(App $a)
                        }
                }
 
-               $album_link = 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']);
+               $album_link = 'photos/' . $user['nickname'] . '/album/' . bin2hex($ph[0]['album']);
 
                $tools = null;
 
                if ($can_post && ($ph[0]['uid'] == $owner_uid)) {
                        $tools = [];
                        if ($cmd === 'edit') {
-                               $tools['view'] = ['photos/' . $a->data['user']['nickname'] . '/image/' . $datum, DI::l10n()->t('View photo')];
+                               $tools['view'] = ['photos/' . $user['nickname'] . '/image/' . $datum, DI::l10n()->t('View photo')];
                        } else {
-                               $tools['edit'] = ['photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit', DI::l10n()->t('Edit photo')];
-                               $tools['delete'] = ['photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/drop', DI::l10n()->t('Delete photo')];
+                               $tools['edit'] = ['photos/' . $user['nickname'] . '/image/' . $datum . '/edit', DI::l10n()->t('Edit photo')];
+                               $tools['delete'] = ['photos/' . $user['nickname'] . '/image/' . $datum . '/drop', DI::l10n()->t('Delete photo')];
                                $tools['profile'] = ['settings/profile/photo/crop/' . $ph[0]['resource-id'], DI::l10n()->t('Use as profile photo')];
                        }
 
@@ -1329,7 +1320,7 @@ function photos_content(App $a)
                                '$rotate_cw' => ['rotate', DI::l10n()->t("Rotate CW \x28right\x29"),1,''],
                                '$rotate_ccw' => ['rotate', DI::l10n()->t("Rotate CCW \x28left\x29"),2,''],
 
-                               '$nickname' => $a->data['user']['nickname'],
+                               '$nickname' => $user['nickname'],
                                '$resource_id' => $ph[0]['resource-id'],
                                '$permissions' => DI::l10n()->t('Permissions'),
                                '$aclselect' => $aclselect_e,
@@ -1379,7 +1370,6 @@ function photos_content(App $a)
                                                '$submit' => DI::l10n()->t('Submit'),
                                                '$preview' => DI::l10n()->t('Preview'),
                                                '$loading' => DI::l10n()->t('Loading...'),
-                                               '$sourceapp' => DI::l10n()->t($a->sourcename),
                                                '$qcomment' => $qcomment,
                                                '$rand_num' => Crypto::randomDigits(12)
                                        ]);
@@ -1435,7 +1425,6 @@ function photos_content(App $a)
                                                '$comment' => DI::l10n()->t('Comment'),
                                                '$submit' => DI::l10n()->t('Submit'),
                                                '$preview' => DI::l10n()->t('Preview'),
-                                               '$sourceapp' => DI::l10n()->t($a->sourcename),
                                                '$qcomment' => $qcomment,
                                                '$rand_num' => Crypto::randomDigits(12)
                                        ]);
@@ -1510,7 +1499,6 @@ function photos_content(App $a)
                                                        '$comment' => DI::l10n()->t('Comment'),
                                                        '$submit' => DI::l10n()->t('Submit'),
                                                        '$preview' => DI::l10n()->t('Preview'),
-                                                       '$sourceapp' => DI::l10n()->t($a->sourcename),
                                                        '$qcomment' => $qcomment,
                                                        '$rand_num' => Crypto::randomDigits(12)
                                                ]);
@@ -1577,7 +1565,7 @@ function photos_content(App $a)
        $total = 0;
        $r = q("SELECT `resource-id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s'
                $sql_extra GROUP BY `resource-id`",
-               intval($a->data['user']['uid']),
+               intval($user['uid']),
                DBA::escape(Photo::CONTACT_PHOTOS),
                DBA::escape(DI::l10n()->t(Photo::CONTACT_PHOTOS))
        );
@@ -1592,7 +1580,7 @@ function photos_content(App $a)
                ANY_VALUE(`created`) AS `created` FROM `photo`
                WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s'
                $sql_extra GROUP BY `resource-id` ORDER BY `created` DESC LIMIT %d , %d",
-               intval($a->data['user']['uid']),
+               intval($user['uid']),
                DBA::escape(Photo::CONTACT_PHOTOS),
                DBA::escape(DI::l10n()->t(Photo::CONTACT_PHOTOS)),
                $pager->getStart(),
@@ -1618,12 +1606,12 @@ function photos_content(App $a)
                        $photos[] = [
                                'id'    => $rr['id'],
                                'twist' => ' ' . ($twist ? 'rotleft' : 'rotright') . rand(2,4),
-                               'link'  => 'photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id'],
+                               'link'  => 'photos/' . $user['nickname'] . '/image/' . $rr['resource-id'],
                                'title' => DI::l10n()->t('View Photo'),
                                'src'   => 'photo/' . $rr['resource-id'] . '-' . ((($rr['scale']) == 6) ? 4 : $rr['scale']) . '.' . $ext,
                                'alt'   => $alt_e,
                                'album' => [
-                                       'link' => 'photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($rr['album']),
+                                       'link' => 'photos/' . $user['nickname'] . '/album/' . bin2hex($rr['album']),
                                        'name' => $name_e,
                                        'alt'  => DI::l10n()->t('View Album'),
                                ],
@@ -1636,7 +1624,7 @@ function photos_content(App $a)
        $o .= Renderer::replaceMacros($tpl, [
                '$title' => DI::l10n()->t('Recent Photos'),
                '$can_post' => $can_post,
-               '$upload' => [DI::l10n()->t('Upload New Photos'), 'photos/'.$a->data['user']['nickname'].'/upload'],
+               '$upload' => [DI::l10n()->t('Upload New Photos'), 'photos/'.$user['nickname'].'/upload'],
                '$photos' => $photos,
                '$paginate' => $pager->renderFull($total),
        ]);
index 89097f5cde3f4a4cb6e5792b8a5bb3d1b9f2e546..f678e13fc6ff3d8e2d5f5d451eb1120c17550070 100644 (file)
 use Friendica\App;
 use Friendica\Content\Nav;
 use Friendica\Content\Pager;
-use Friendica\Content\Text\BBCode;
+use Friendica\Content\Widget;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Attach;
-use Friendica\Model\Contact;
 use Friendica\Model\Item;
 use Friendica\Model\User;
 use Friendica\Module\BaseProfile;
 use Friendica\Security\Security;
+use Friendica\Network\HTTPException;
 
 function videos_init(App $a)
 {
@@ -43,38 +43,17 @@ function videos_init(App $a)
        Nav::setSelected('home');
 
        if ($a->argc > 1) {
-               $nick = $a->argv[1];
-               $user = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1",
-                       DBA::escape($nick)
-               );
-
-               if (!DBA::isResult($user)) {
-                       return;
+               $owner = User::getOwnerDataByNick($a->argv[1]);
+               if (empty($owner)) {
+                       throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
                }
 
-               $a->data['user'] = $user[0];
-               $a->profile_uid = $user[0]['uid'];
-
-               $profile = User::getOwnerDataByNick($nick);
-
-               $account_type = Contact::getAccountType($profile);
-
-               $tpl = Renderer::getMarkupTemplate('widget/vcard.tpl');
-
-               $vcard_widget = Renderer::replaceMacros($tpl, [
-                       '$name' => $profile['name'],
-                       '$photo' => $profile['photo'],
-                       '$addr' => $profile['addr'] ?? '',
-                       '$account_type' => $account_type,
-                       '$about' => BBCode::convert($profile['about']),
-               ]);
-
                // If not there, create 'aside' empty
                if (!isset(DI::page()['aside'])) {
                        DI::page()['aside'] = '';
                }
 
-               DI::page()['aside'] .= $vcard_widget;
+               DI::page()['aside'] .= Widget\VCard::getHTML($owner);
 
                $tpl = Renderer::getMarkupTemplate("videos_head.tpl");
                DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl);
@@ -85,10 +64,13 @@ function videos_init(App $a)
 
 function videos_post(App $a)
 {
-       $owner_uid = $a->data['user']['uid'];
+       $user = User::getByNickname($a->argv[1]);
+       if (!DBA::isResult($user)) {
+               throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
+       }
 
-       if (local_user() != $owner_uid) {
-               DI::baseUrl()->redirect('videos/' . $a->data['user']['nickname']);
+       if (local_user() != $user['uid']) {
+               DI::baseUrl()->redirect('videos/' . $user['nickname']);
        }
 
        if (($a->argc == 2) && !empty($_POST['delete']) && !empty($_POST['id'])) {
@@ -105,11 +87,11 @@ function videos_post(App $a)
                        ], local_user());
                }
 
-               DI::baseUrl()->redirect('videos/' . $a->data['user']['nickname']);
+               DI::baseUrl()->redirect('videos/' . $user['nickname']);
                return; // NOTREACHED
        }
 
-       DI::baseUrl()->redirect('videos/' . $a->data['user']['nickname']);
+       DI::baseUrl()->redirect('videos/' . $user['nickname']);
 }
 
 function videos_content(App $a)
@@ -123,13 +105,17 @@ function videos_content(App $a)
        // videos/name/video/xxxxx
        // videos/name/video/xxxxx/edit
 
+       $user = User::getByNickname($a->argv[1]);
+       if (!DBA::isResult($user)) {
+               throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
+       }
 
        if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
                notice(DI::l10n()->t('Public access denied.'));
                return;
        }
 
-       if (empty($a->data['user'])) {
+       if (empty($user)) {
                notice(DI::l10n()->t('No videos selected') . EOL );
                return;
        }
@@ -154,41 +140,38 @@ function videos_content(App $a)
        //
        $can_post       = false;
        $visitor        = 0;
-       $contact        = null;
        $remote_contact = false;
        $contact_id     = 0;
 
-       $owner_uid = $a->data['user']['uid'];
-
-       $community_page = (($a->data['user']['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false);
+       $community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false);
 
-       if ((local_user()) && (local_user() == $owner_uid)) {
+       if ((local_user()) && (local_user() == $user['uid'])) {
                $can_post = true;
-       } elseif ($community_page && !empty(Session::getRemoteContactID($owner_uid))) {
-               $contact_id = Session::getRemoteContactID($owner_uid);
+       } elseif ($community_page && !empty(Session::getRemoteContactID($user['uid']))) {
+               $contact_id = Session::getRemoteContactID($user['uid']);
                $can_post = true;
                $remote_contact = true;
                $visitor = $contact_id;
        }
 
        // perhaps they're visiting - but not a community page, so they wouldn't have write access
-       if (!empty(Session::getRemoteContactID($owner_uid)) && !$visitor) {
-               $contact_id = Session::getRemoteContactID($owner_uid);
+       if (!empty(Session::getRemoteContactID($user['uid'])) && !$visitor) {
+               $contact_id = Session::getRemoteContactID($user['uid']);
                $remote_contact = true;
        }
 
-       if ($a->data['user']['hidewall'] && (local_user() != $owner_uid) && !$remote_contact) {
+       if ($user['hidewall'] && (local_user() != $user['uid']) && !$remote_contact) {
                notice(DI::l10n()->t('Access to this item is restricted.'));
                return;
        }
 
-       $sql_extra = Security::getPermissionsSQLByUserId($owner_uid);
+       $sql_extra = Security::getPermissionsSQLByUserId($user['uid']);
 
        $o = "";
 
        // tabs
-       $_is_owner = (local_user() && (local_user() == $owner_uid));
-       $o .= BaseProfile::getTabsHTML($a, 'videos', $_is_owner, $a->data['user']['nickname']);
+       $_is_owner = (local_user() && (local_user() == $user['uid']));
+       $o .= BaseProfile::getTabsHTML($a, 'videos', $_is_owner, $user);
 
        //
        // dispatch request
@@ -218,7 +201,7 @@ function videos_content(App $a)
        $total = 0;
        $r = q("SELECT hash FROM `attach` WHERE `uid` = %d AND filetype LIKE '%%video%%'
                $sql_extra GROUP BY hash",
-               intval($a->data['user']['uid'])
+               intval($user['uid'])
        );
        if (DBA::isResult($r)) {
                $total = count($r);
@@ -231,7 +214,7 @@ function videos_content(App $a)
                FROM `attach`
                WHERE `uid` = %d AND filetype LIKE '%%video%%'
                $sql_extra GROUP BY hash ORDER BY `created` DESC LIMIT %d , %d",
-               intval($a->data['user']['uid']),
+               intval($user['uid']),
                $pager->getStart(),
                $pager->getItemsPerPage()
        );
@@ -247,13 +230,13 @@ function videos_content(App $a)
 
                        $videos[] = [
                                'id'       => $rr['id'],
-                               'link'     => DI::baseUrl() . '/videos/' . $a->data['user']['nickname'] . '/video/' . $rr['hash'],
+                               'link'     => DI::baseUrl() . '/videos/' . $user['nickname'] . '/video/' . $rr['hash'],
                                'title'    => DI::l10n()->t('View Video'),
                                'src'      => DI::baseUrl() . '/attach/' . $rr['id'] . '?attachment=0',
                                'alt'      => $alt_e,
                                'mime'     => $rr['filetype'],
                                'album' => [
-                                       'link'  => DI::baseUrl() . '/videos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($rr['album']),
+                                       'link'  => DI::baseUrl() . '/videos/' . $user['nickname'] . '/album/' . bin2hex($rr['album']),
                                        'name'  => $name_e,
                                        'alt'   => DI::l10n()->t('View Album'),
                                ],
@@ -265,9 +248,9 @@ function videos_content(App $a)
        $o .= Renderer::replaceMacros($tpl, [
                '$title'      => DI::l10n()->t('Recent Videos'),
                '$can_post'   => $can_post,
-               '$upload'     => [DI::l10n()->t('Upload New Videos'), DI::baseUrl() . '/videos/' . $a->data['user']['nickname'] . '/upload'],
+               '$upload'     => [DI::l10n()->t('Upload New Videos'), DI::baseUrl() . '/videos/' . $user['nickname'] . '/upload'],
                '$videos'     => $videos,
-               '$delete_url' => (($can_post) ? DI::baseUrl() . '/videos/' . $a->data['user']['nickname'] : false)
+               '$delete_url' => (($can_post) ? DI::baseUrl() . '/videos/' . $user['nickname'] : false)
        ]);
 
        $o .= $pager->renderFull($total);
index 5c74b1b539388750f7b2c8300351ac34a07795dd..47d70db64acd51c1bf1b192b1272a2c6e67d3363 100644 (file)
@@ -56,28 +56,21 @@ use Psr\Log\LoggerInterface;
  */
 class App
 {
-       public $profile;
-       public $profile_uid;
+       public $profile_owner;
        public $user;
-       public $cid;
        public $contact;
-       public $contacts;
        public $page_contact;
-       public $content;
        public $data = [];
        /** @deprecated 2019.09 - use App\Arguments->getArgv() or Arguments->get() */
        public $argv;
        /** @deprecated 2019.09 - use App\Arguments->getArgc() */
        public $argc;
        public $timezone;
-       public $interactive = true;
        public $identities;
        public $theme_info = [];
-       public $category;
        // Allow themes to control internal parameters
        // by changing App values in theme.php
 
-       public $sourcename              = '';
        public $videowidth              = 425;
        public $videoheight             = 350;
        public $theme_events_in_profile = true;
@@ -317,10 +310,10 @@ class App
 
                $page_theme = null;
                // Find the theme that belongs to the user whose stuff we are looking at
-               if ($this->profile_uid && ($this->profile_uid != local_user())) {
+               if (!empty($this->profile_owner) && ($this->profile_owner != local_user())) {
                        // Allow folks to override user themes and always use their own on their own site.
                        // This works only if the user is on the same server
-                       $user = $this->database->selectFirst('user', ['theme'], ['uid' => $this->profile_uid]);
+                       $user = $this->database->selectFirst('user', ['theme'], ['uid' => $this->profile_owner]);
                        if ($this->database->isResult($user) && !$this->pConfig->get(local_user(), 'system', 'always_my_theme')) {
                                $page_theme = $user['theme'];
                        }
@@ -350,11 +343,11 @@ class App
 
                $page_mobile_theme = null;
                // Find the theme that belongs to the user whose stuff we are looking at
-               if ($this->profile_uid && ($this->profile_uid != local_user())) {
+               if (!empty($this->profile_owner) && ($this->profile_owner != local_user())) {
                        // Allow folks to override user themes and always use their own on their own site.
                        // This works only if the user is on the same server
                        if (!$this->pConfig->get(local_user(), 'system', 'always_my_theme')) {
-                               $page_mobile_theme = $this->pConfig->get($this->profile_uid, 'system', 'mobile-theme');
+                               $page_mobile_theme = $this->pConfig->get($this->profile_owner, 'system', 'mobile-theme');
                        }
                }
 
@@ -547,7 +540,7 @@ class App
                                $this->baseURL->redirect('search');
                        }
 
-                       // Initialize module that can set the current theme in the init() method, either directly or via App->profile_uid
+                       // Initialize module that can set the current theme in the init() method, either directly or via App->profile_owner
                        $page['page_title'] = $moduleName;
 
                        if (!$this->mode->isInstall() && !$this->mode->has(App\Mode::MAINTENANCEDISABLED)) {
index bf33ebfab18daaa93eda72ef3d3c7f30d6223370..c6e3e723ce9fccea247179c53be10a7751083d85 100644 (file)
@@ -459,7 +459,6 @@ class Page implements ArrayAccess
                }
 
                $page    = $this->page;
-               $profile = $app->profile;
 
                header("X-Friendica-Version: " . FRIENDICA_VERSION);
                header("Content-type: text/html; charset=utf-8");
index 51515137e56ddd00f3d576e93f4998b7652bf025..e65c89523a7f70ca094712bdd573baf8b932432c 100644 (file)
@@ -801,22 +801,6 @@ class HTML
                ]);
        }
 
-       /**
-        * Get html for contact block.
-        *
-        * @deprecated since version 2019.03
-        * @see ContactBlock::getHTML()
-        * @return string
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
-        * @throws \ImagickException
-        */
-       public static function contactBlock()
-       {
-               $a = DI::app();
-
-               return ContactBlock::getHTML($a->profile);
-       }
-
        /**
         * Format contacts as picture links or as text links
         *
index 139fd8ebb6131b9566d62c33fbd9bcac2b4ba253..88afbe9e5284de70d45d1214eb25488aed7781f2 100644 (file)
@@ -334,7 +334,7 @@ class Widget
        {
                $a = DI::app();
 
-               $uid = intval($a->profile['uid']);
+               $uid = intval($a->profile_owner);
 
                if (!Feature::isEnabled($uid, 'categories')) {
                        return '';
@@ -416,23 +416,20 @@ class Widget
        /**
         * Insert a tag cloud widget for the present profile.
         *
+        * @param int $uid   User ID
         * @param int $limit Max number of displayed tags.
         * @return string HTML formatted output.
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public static function tagCloud($limit = 50)
+       public static function tagCloud(int $uid, int $limit = 50)
        {
-               $a = DI::app();
-
-               $uid = intval($a->profile['uid']);
-
-               if (!$uid || !$a->profile['url']) {
+               if (empty($uid)) {
                        return '';
                }
 
                if (Feature::isEnabled($uid, 'tagadelic')) {
-                       $owner_id = Contact::getIdForURL($a->profile['url'], 0, false);
+                       $owner_id = Contact::getPublicIdByUserId($uid);
 
                        if (!$owner_id) {
                                return '';
index 340fc0cf3a7ab0308d610ad0b0f3bfa4a762ad91..e3550b28b8fe39a827cba6d0d2847b122c1b9c0b 100644 (file)
 namespace Friendica\Content\Widget;
 
 use Friendica\Content\Text\BBCode;
+use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
+use Friendica\Core\System;
 use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Util\Strings;
@@ -43,6 +45,10 @@ class VCard
         */
        public static function getHTML(array $contact)
        {
+               if (!isset($contact['network']) || !isset($contact['id'])) {
+                       Logger::warning('Incomplete contact', ['contact' => $contact ?? [], 'callstack' => System::callstack(20)]);
+               }
+
                if (($contact['network'] != '') && ($contact['network'] != Protocol::DFRN)) {
                        $network_link = Strings::formatNetworkName($contact['network'], $contact['url']);
                } else {
index 75a869a38be2f4dd8a12fc89e3dc77c215a758df..bb404965ee2d039ca26f5edd064a2ec2f9578a0b 100644 (file)
@@ -48,7 +48,6 @@ class Renderer
         * beyond are used.
         */
        public static $theme = [
-               'sourcename' => '',
                'videowidth' => 425,
                'videoheight' => 350,
                'stylesheet' => '',
index 95fdc0ceae8bab2b2ad876392dcdddfc1200ff0a..d81ecc239ec1ae63f04064abd634936277f61402 100644 (file)
@@ -205,31 +205,27 @@ class Profile
         *      load a lot of theme-specific content
         *
         * @param App     $a
-        * @param string  $nickname     string
-        * @param array   $profiledata  array
-        * @param boolean $show_connect Show connect link
+        * @param string  $nickname string
+        *
+        * @return array Profile
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public static function load(App $a, $nickname)
+       public static function load(App $a, string $nickname, bool $show_contacts = true)
        {
                $profile = User::getOwnerDataByNick($nickname);
                if (empty($profile)) {
                        Logger::log('profile error: ' . DI::args()->getQueryString(), Logger::DEBUG);
-                       return;
+                       return [];
                }
 
-               $a->profile = $profile;
-               $a->profile_uid = $profile['uid'];
-
-               $a->profile['mobile-theme'] = DI::pConfig()->get($a->profile['uid'], 'system', 'mobile_theme');
-               $a->profile['network'] = Protocol::DFRN;
+               $a->profile_owner = $profile['uid'];
 
-               DI::page()['title'] = $a->profile['name'] . ' @ ' . DI::config()->get('config', 'sitename');
+               DI::page()['title'] = $profile['name'] . ' @ ' . DI::config()->get('config', 'sitename');
 
                if (!DI::pConfig()->get(local_user(), 'system', 'always_my_theme')) {
-                       $a->setCurrentTheme($a->profile['theme']);
-                       $a->setCurrentMobileTheme($a->profile['mobile-theme']);
+                       $a->setCurrentTheme($profile['theme']);
+                       $a->setCurrentMobileTheme(DI::pConfig()->get($a->profile_owner, 'system', 'mobile_theme'));
                }
 
                /*
@@ -250,9 +246,9 @@ class Profile
                 * By now, the contact block isn't shown, when a different profile is given
                 * But: When this profile was on the same server, then we could display the contacts
                 */
-               DI::page()['aside'] .= self::sidebar($a, $a->profile, $block);
+               DI::page()['aside'] .= self::sidebar($profile, $block, $show_contacts);
 
-               return;
+               return $profile;
        }
 
        /**
@@ -261,9 +257,9 @@ class Profile
         * It is very difficult to templatise the HTML completely
         * because of all the conditional logic.
         *
-        * @param array   $profile
-        * @param int     $block
-        * @param boolean $show_connect Show connect link
+        * @param array $profile       Profile array
+        * @param bool  $block         Block personal details
+        * @param bool  $show_contacts Show contact block
         *
         * @return string HTML sidebar module
         *
@@ -276,15 +272,11 @@ class Profile
         * @hooks 'profile_sidebar'
         *      array $arr
         */
-       private static function sidebar(App $a, array $profile, $block = 0)
+       private static function sidebar(array $profile, bool $block, bool $show_contacts)
        {
                $o = '';
                $location = false;
 
-               // This function can also use contact information in $profile, but the 'cid'
-               // value is going to be coming from 'owner-view', which means it's the wrong
-               // contact ID for the user viewing this page. Use 'nurl' to look up the
-               // correct contact table entry for the logged-in user.
                $profile_contact = [];
 
                if (local_user() && ($profile['uid'] ?? 0) != local_user()) {
@@ -403,10 +395,10 @@ class Profile
                        $updated = date('c', strtotime($profile['last-item']));
                }
 
-               if (!$block) {
-                       $contact_block = ContactBlock::getHTML($a->profile);
+               if (!$block && $show_contacts) {
+                       $contact_block = ContactBlock::getHTML($profile);
 
-                       if (is_array($a->profile) && !$a->profile['hide-friends']) {
+                       if (is_array($profile) && !$profile['hide-friends']) {
                                $contact_count = DBA::count('contact', [
                                        'uid' => $profile['uid'],
                                        'self' => false,
@@ -879,7 +871,7 @@ class Profile
         */
        public static function getThemeUid(App $a)
        {
-               $uid = !empty($a->profile_uid) ? intval($a->profile_uid) : 0;
+               $uid = !empty($a->profile_owner) ? intval($a->profile_owner) : 0;
                if (local_user() && (DI::pConfig()->get(local_user(), 'system', 'always_my_theme') || !$uid)) {
                        return local_user();
                }
index c6b2973002c48bd2feaa5d9a0b3148f07ef84ab4..e84ebded101c4f8fcd454ab6d0022d6a1659c03e 100644 (file)
@@ -39,11 +39,9 @@ class BaseProfile extends BaseModule
         * @return string
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function getTabsHTML(App $a, string $current, bool $is_owner, string $nickname = null)
+       public static function getTabsHTML(App $a, string $current, bool $is_owner, array $profile)
        {
-               if (is_null($nickname)) {
-                       $nickname = $a->user['nickname'];
-               }
+               $nickname = $profile['nickname'];
 
                $baseProfileUrl = DI::baseUrl() . '/profile/' . $nickname;
 
@@ -116,7 +114,7 @@ class BaseProfile extends BaseModule
                        ];
                }
 
-               if (empty($a->profile['hide-friends'])) {
+               if (empty($profile['hide-friends'])) {
                        $tabs[] = [
                                'label' => DI::l10n()->t('Contacts'),
                                'url'   => $baseProfileUrl . '/contacts',
index 89051f27dc8608595fd0890d386cb377d67c2007..36cc11de411e21c2caeeae656a0b5338cee4f661 100644 (file)
@@ -156,12 +156,6 @@ class Contact extends BaseModule
                if (!DBA::isResult($r)) {
                        notice(DI::l10n()->t('Failed to update contact record.'));
                }
-
-               $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]);
-               if (DBA::isResult($contact)) {
-                       $a->data['contact'] = $contact;
-               }
-
                return;
        }
 
@@ -306,8 +300,6 @@ class Contact extends BaseModule
                                }
                        }
 
-                       $a->data['contact'] = $contact;
-
                        $vcard_widget = Widget\VCard::getHTML($contact);
 
                        $findpeople_widget = '';
@@ -453,9 +445,7 @@ class Contact extends BaseModule
 
                $_SESSION['return_path'] = DI::args()->getQueryString();
 
-               if (!empty($a->data['contact']) && is_array($a->data['contact'])) {
-                       $contact = $a->data['contact'];
-
+               if (!empty($contact) && is_array($contact)) {
                        DI::page()['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_head.tpl'), [
                                '$baseurl' => DI::baseUrl()->get(true),
                        ]);
index 5030cb37ee38f5ce9bb7331e85e7058c2be67679..ff1466408e922152f0dfb481aa092c88938153d2 100644 (file)
@@ -29,6 +29,8 @@ use Friendica\Util\Temporal;
 
 class Localtime extends BaseModule
 {
+       static $mod_localtime = '';
+
        public static function post(array $parameters = [])
        {
                $time = ($_REQUEST['time'] ?? '') ?: 'now';
@@ -36,14 +38,12 @@ class Localtime extends BaseModule
                $bd_format = DI::l10n()->t('l F d, Y \@ g:i A');
 
                if (!empty($_POST['timezone'])) {
-                       DI::app()->data['mod-localtime'] = DateTimeFormat::convert($time, $_POST['timezone'], 'UTC', $bd_format);
+                       self::$mod_localtime = DateTimeFormat::convert($time, $_POST['timezone'], 'UTC', $bd_format);
                }
        }
 
        public static function content(array $parameters = [])
        {
-               $app = DI::app();
-
                $time = ($_REQUEST['time'] ?? '') ?: 'now';
 
                $output  = '<h3>' . DI::l10n()->t('Time Conversion') . '</h3>';
@@ -54,8 +54,8 @@ class Localtime extends BaseModule
                        $output .= '<p>' . DI::l10n()->t('Current timezone: %s', $_REQUEST['timezone']) . '</p>';
                }
 
-               if (!empty($app->data['mod-localtime'])) {
-                       $output .= '<p>' . DI::l10n()->t('Converted localtime: %s', $app->data['mod-localtime']) . '</p>';
+               if (!empty(self::$mod_localtime)) {
+                       $output .= '<p>' . DI::l10n()->t('Converted localtime: %s', self::$mod_localtime) . '</p>';
                }
 
                $output .= '<form action ="' . DI::baseUrl()->get() . '/localtime?time=' . $time . '" method="post" >';
index e348f2ff5bc2f020d745df2fb6bc030c09497c0d..b8df844367acccf66b7c3120e417a3effa59f31d 100644 (file)
@@ -48,28 +48,28 @@ class HCard extends BaseModule
                        throw new HTTPException\NotFoundException(DI::l10n()->t('No profile'));
                }
 
-               Profile::load($a, $nickname);
+               $profile = Profile::load($a, $nickname, false);
 
-               if (empty($a->profile)) {
+               if (empty($profile)) {
                        throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
                }
 
                $page = DI::page();
 
-               if (!empty($a->profile['page-flags']) && ($a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) {
+               if (!empty($profile['page-flags']) && ($profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) {
                        $page['htmlhead'] .= '<meta name="friendica.community" content="true" />';
                }
-               if (!empty($a->profile['openidserver'])) {
-                       $page['htmlhead'] .= '<link rel="openid.server" href="' . $a->profile['openidserver'] . '" />' . "\r\n";
+               if (!empty($profile['openidserver'])) {
+                       $page['htmlhead'] .= '<link rel="openid.server" href="' . $profile['openidserver'] . '" />' . "\r\n";
                }
-               if (!empty($a->profile['openid'])) {
-                       $delegate         = ((strstr($a->profile['openid'], '://')) ? $a->profile['openid'] : 'http://' . $a->profile['openid']);
+               if (!empty($profile['openid'])) {
+                       $delegate         = ((strstr($profile['openid'], '://')) ? $profile['openid'] : 'http://' . $profile['openid']);
                        $page['htmlhead'] .= '<link rel="openid.delegate" href="' . $delegate . '" />' . "\r\n";
                }
 
                // check if blocked
                if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
-                       $keywords = $a->profile['pub_keywords'] ?? '';
+                       $keywords = $profile['pub_keywords'] ?? '';
                        $keywords = str_replace([',', ' ', ',,'], [' ', ',', ','], $keywords);
                        if (strlen($keywords)) {
                                $page['htmlhead'] .= '<meta name="keywords" content="' . $keywords . '" />' . "\r\n";
@@ -78,9 +78,9 @@ class HCard extends BaseModule
 
                $baseUrl = DI::baseUrl();
 
-               $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $baseUrl->getHostname() . ($baseUrl->getUrlPath() ? '/' . $baseUrl->getUrlPath() : ''));
+               $uri = urlencode('acct:' . $profile['nickname'] . '@' . $baseUrl->getHostname() . ($baseUrl->getUrlPath() ? '/' . $baseUrl->getUrlPath() : ''));
 
-               $page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . ($a->profile['net-publish'] ? 'true' : 'false') . '" />' . "\r\n";
+               $page['htmlhead'] .= '<meta name="dfrn-global-visibility" content="' . ($profile['net-publish'] ? 'true' : 'false') . '" />' . "\r\n";
                $page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $baseUrl->get() . '/dfrn_poll/' . $nickname . '" />' . "\r\n";
                $page['htmlhead'] .= '<link rel="lrdd" type="application/xrd+xml" href="' . $baseUrl->get() . '/xrd/?uri=' . $uri . '" />' . "\r\n";
                header('Link: <' . $baseUrl->get() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
index 7ce16d02afc5ebf532e878b64530cbd5d87d7f1b..c2bfba2dc447499892d697602808adc97272112b 100644 (file)
@@ -171,7 +171,6 @@ class Compose extends BaseModule
                        '$group_deny'   => implode(',', $group_deny_list),
 
                        '$jotplugins'   => $jotplugins,
-                       '$sourceapp'    => DI::l10n()->t($a->sourcename),
                        '$rand_num'     => Crypto::randomDigits(12),
                        '$acl_selector'  => ACL::getFullSelectorHTML(DI::page(), $a->user, $doesFederate, [
                                'allow_cid' => $contact_allow_list,
index 6e65ee22e262d30dbd5233d3b87fcf661044da19..ad30ab4ac3fcb1c1c20e235a67c31671f0b1676e 100644 (file)
@@ -47,28 +47,27 @@ class Common extends BaseProfile
 
                $nickname = $parameters['nickname'];
 
-               Profile::load($a, $nickname);
-
-               if (empty($a->profile)) {
+               $profile = Profile::load($a, $nickname);
+               if (empty($profile)) {
                        throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
                }
 
-               if (!empty($a->profile['hide-friends'])) {
+               if (!empty($profile['hide-friends'])) {
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
                }
 
-               $displayCommonTab = Session::isAuthenticated() && $a->profile['uid'] != local_user();
+               $displayCommonTab = Session::isAuthenticated() && $profile['uid'] != local_user();
 
                if (!$displayCommonTab) {
                        $a->redirect('profile/' . $nickname . '/contacts');
                };
 
-               $o = self::getTabsHTML($a, 'contacts', false, $nickname);
+               $o = self::getTabsHTML($a, 'contacts', false, $profile);
 
                $tabs = self::getContactFilterTabs('profile/' . $nickname, 'common', $displayCommonTab);
 
                $sourceId = Contact::getIdForURL(Profile::getMyURL());
-               $targetId = Contact::getPublicIdByUserId($a->profile['uid']);
+               $targetId = Contact::getPublicIdByUserId($profile['uid']);
 
                $condition = [
                        'blocked' => false,
@@ -87,7 +86,7 @@ class Common extends BaseProfile
                $title = DI::l10n()->tt('Common contact (%s)', 'Common contacts (%s)', $total);
                $desc = DI::l10n()->t(
                        'Both <strong>%s</strong> and yourself have publicly interacted with these contacts (follow, comment or likes on public posts).',
-                       htmlentities($a->profile['name'], ENT_COMPAT, 'UTF-8')
+                       htmlentities($profile['name'], ENT_COMPAT, 'UTF-8')
                );
 
                $tpl = Renderer::getMarkupTemplate('profile/contacts.tpl');
index 61b79b241f3a35b4c79ff608bf9bdb02fd44249a..3307694e7f8fed52a0c4b86785a00db7b41091c4 100644 (file)
@@ -23,6 +23,7 @@ namespace Friendica\Module\Profile;
 
 use Friendica\Content\Nav;
 use Friendica\Content\Pager;
+use Friendica\Content\Widget;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session;
@@ -45,26 +46,25 @@ class Contacts extends Module\BaseProfile
                $nickname = $parameters['nickname'];
                $type = $parameters['type'] ?? 'all';
 
-               Model\Profile::load($a, $nickname);
-
-               if (empty($a->profile)) {
+               $profile = Model\Profile::load($a, $nickname);
+               if (empty($profile)) {
                        throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
                }
 
-               $is_owner = $a->profile['uid'] == local_user();
+               $is_owner = $profile['uid'] == local_user();
 
-               if (!empty($a->profile['hide-friends']) && !$is_owner) {
+               if (!empty($profile['hide-friends']) && !$is_owner) {
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
                }
 
                Nav::setSelected('home');
 
-               $o = self::getTabsHTML($a, 'contacts', $is_owner, $nickname);
+               $o = self::getTabsHTML($a, 'contacts', $is_owner, $profile);
 
-               $tabs = self::getContactFilterTabs('profile/' . $nickname, $type, Session::isAuthenticated() && $a->profile['uid'] != local_user());
+               $tabs = self::getContactFilterTabs('profile/' . $nickname, $type, Session::isAuthenticated() && $profile['uid'] != local_user());
 
                $condition = [
-                       'uid'     => $a->profile['uid'],
+                       'uid'     => $profile['uid'],
                        'blocked' => false,
                        'pending' => false,
                        'hidden'  => false,
@@ -103,7 +103,7 @@ class Contacts extends Module\BaseProfile
                                $title = DI::l10n()->tt('Mutual friend (%s)', 'Mutual friends (%s)', $total);
                                $desc = DI::l10n()->t(
                                        'These contacts both follow and are followed by <strong>%s</strong>.',
-                                       htmlentities($a->profile['name'], ENT_COMPAT, 'UTF-8')
+                                       htmlentities($profile['name'], ENT_COMPAT, 'UTF-8')
                                );
                                break;
                        case 'all':
index 96545deaf9de0a1fc70eff8d90f7066ccce6ebfa..4f083db2606c855cf9bdcfa9647b932c5665e88d 100644 (file)
@@ -26,6 +26,7 @@ use Friendica\Content\ForumManager;
 use Friendica\Content\Nav;
 use Friendica\Content\Text\BBCode;
 use Friendica\Content\Text\HTML;
+use Friendica\Content\Widget;
 use Friendica\Core\Hook;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
@@ -76,36 +77,35 @@ class Profile extends BaseProfile
        {
                $a = DI::app();
 
-               ProfileModel::load($a, $parameters['nickname']);
-
-               if (!$a->profile) {
+               $profile = ProfileModel::load($a, $parameters['nickname']);
+               if (!$profile) {
                        throw new HTTPException\NotFoundException(DI::l10n()->t('Profile not found.'));
                }
 
-               $remote_contact_id = Session::getRemoteContactID($a->profile_uid);
+               $remote_contact_id = Session::getRemoteContactID($profile['uid']);
 
                if (DI::config()->get('system', 'block_public') && !local_user() && !$remote_contact_id) {
                        return Login::form();
                }
 
-               $is_owner = local_user() == $a->profile_uid;
+               $is_owner = local_user() == $profile['uid'];
 
-               if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact_id) {
+               if (!empty($profile['hidewall']) && !$is_owner && !$remote_contact_id) {
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('Access to this profile has been restricted.'));
                }
 
-               if (!empty($a->profile['page-flags']) && $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) {
+               if (!empty($profile['page-flags']) && $profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) {
                        DI::page()['htmlhead'] .= '<meta name="friendica.community" content="true" />' . "\n";
                }
 
-               DI::page()['htmlhead'] .= self::buildHtmlHead($a->profile, $parameters['nickname'], $remote_contact_id);
+               DI::page()['htmlhead'] .= self::buildHtmlHead($profile, $parameters['nickname'], $remote_contact_id);
 
                Nav::setSelected('home');
 
-               $is_owner = local_user() == $a->profile['uid'];
-               $o = self::getTabsHTML($a, 'profile', $is_owner, $a->profile['nickname']);
+               $is_owner = local_user() == $profile['uid'];
+               $o = self::getTabsHTML($a, 'profile', $is_owner, $profile);
 
-               if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact_id) {
+               if (!empty($profile['hidewall']) && !$is_owner && !$remote_contact_id) {
                        notice(DI::l10n()->t('Access to this profile has been restricted.'));
                        return '';
                }
@@ -141,59 +141,59 @@ class Profile extends BaseProfile
 
                $basic_fields = [];
 
-               $basic_fields += self::buildField('fullname', DI::l10n()->t('Full Name:'), $a->profile['name']);
+               $basic_fields += self::buildField('fullname', DI::l10n()->t('Full Name:'), $profile['name']);
 
-               if (Feature::isEnabled($a->profile_uid, 'profile_membersince')) {
+               if (Feature::isEnabled($profile['uid'], 'profile_membersince')) {
                        $basic_fields += self::buildField(
                                'membersince',
                                DI::l10n()->t('Member since:'),
-                               DateTimeFormat::local($a->profile['register_date'])
+                               DateTimeFormat::local($profile['register_date'])
                        );
                }
 
-               if (!empty($a->profile['dob']) && $a->profile['dob'] > DBA::NULL_DATE) {
+               if (!empty($profile['dob']) && $profile['dob'] > DBA::NULL_DATE) {
                        $year_bd_format = DI::l10n()->t('j F, Y');
                        $short_bd_format = DI::l10n()->t('j F');
 
                        $dob = DI::l10n()->getDay(
-                               intval($a->profile['dob']) ?
-                                       DateTimeFormat::utc($a->profile['dob'] . ' 00:00 +00:00', $year_bd_format)
-                                       : DateTimeFormat::utc('2001-' . substr($a->profile['dob'], 5) . ' 00:00 +00:00', $short_bd_format)
+                               intval($profile['dob']) ?
+                                       DateTimeFormat::utc($profile['dob'] . ' 00:00 +00:00', $year_bd_format)
+                                       : DateTimeFormat::utc('2001-' . substr($profile['dob'], 5) . ' 00:00 +00:00', $short_bd_format)
                        );
 
                        $basic_fields += self::buildField('dob', DI::l10n()->t('Birthday:'), $dob);
 
-                       if ($age = Temporal::getAgeByTimezone($a->profile['dob'], $a->profile['timezone'])) {
+                       if ($age = Temporal::getAgeByTimezone($profile['dob'], $profile['timezone'])) {
                                $basic_fields += self::buildField('age', DI::l10n()->t('Age: '), DI::l10n()->tt('%d year old', '%d years old', $age));
                        }
                }
 
-               if ($a->profile['about']) {
-                       $basic_fields += self::buildField('about', DI::l10n()->t('Description:'), BBCode::convertForUriId($a->profile['uri-id'], $a->profile['about']));
+               if ($profile['about']) {
+                       $basic_fields += self::buildField('about', DI::l10n()->t('Description:'), BBCode::convertForUriId($profile['uri-id'], $profile['about']));
                }
 
-               if ($a->profile['xmpp']) {
-                       $basic_fields += self::buildField('xmpp', DI::l10n()->t('XMPP:'), $a->profile['xmpp']);
+               if ($profile['xmpp']) {
+                       $basic_fields += self::buildField('xmpp', DI::l10n()->t('XMPP:'), $profile['xmpp']);
                }
 
-               if ($a->profile['homepage']) {
-                       $basic_fields += self::buildField('homepage', DI::l10n()->t('Homepage:'), HTML::toLink($a->profile['homepage']));
+               if ($profile['homepage']) {
+                       $basic_fields += self::buildField('homepage', DI::l10n()->t('Homepage:'), HTML::toLink($profile['homepage']));
                }
 
                if (
-                       $a->profile['address']
-                       || $a->profile['locality']
-                       || $a->profile['postal-code']
-                       || $a->profile['region']
-                       || $a->profile['country-name']
+                       $profile['address']
+                       || $profile['locality']
+                       || $profile['postal-code']
+                       || $profile['region']
+                       || $profile['country-name']
                ) {
-                       $basic_fields += self::buildField('location', DI::l10n()->t('Location:'), ProfileModel::formatLocation($a->profile));
+                       $basic_fields += self::buildField('location', DI::l10n()->t('Location:'), ProfileModel::formatLocation($profile));
                }
 
-               if ($a->profile['pub_keywords']) {
+               if ($profile['pub_keywords']) {
                        $tags = [];
                        // Separator is defined in Module\Settings\Profile\Index::cleanKeywords
-                       foreach (explode(', ', $a->profile['pub_keywords']) as $tag_label) {
+                       foreach (explode(', ', $profile['pub_keywords']) as $tag_label) {
                                $tags[] = [
                                        'url' => '/search?tag=' . $tag_label,
                                        'label' => Tag::TAG_CHARACTER[Tag::HASHTAG] . $tag_label,
@@ -209,26 +209,26 @@ class Profile extends BaseProfile
                $contact_id = $view_as_contact_id ?: $remote_contact_id ?: 0;
 
                if ($is_owner && $contact_id === 0) {
-                       $profile_fields = DI::profileField()->selectByUserId($a->profile_uid);
+                       $profile_fields = DI::profileField()->selectByUserId($profile['uid']);
                } else {
-                       $profile_fields = DI::profileField()->selectByContactId($contact_id, $a->profile_uid);
+                       $profile_fields = DI::profileField()->selectByContactId($contact_id, $profile['uid']);
                }
 
                foreach ($profile_fields as $profile_field) {
                        $custom_fields += self::buildField(
                                'custom_' . $profile_field->order,
                                $profile_field->label,
-                               BBCode::convertForUriId($a->profile['uri-id'], $profile_field->value),
+                               BBCode::convertForUriId($profile['uri-id'], $profile_field->value),
                                'aprofile custom'
                        );
                };
 
                //show subcribed forum if it is enabled in the usersettings
-               if (Feature::isEnabled($a->profile_uid, 'forumlist_profile')) {
+               if (Feature::isEnabled($profile['uid'], 'forumlist_profile')) {
                        $custom_fields += self::buildField(
                                'forumlist',
                                DI::l10n()->t('Forums:'),
-                               ForumManager::profileAdvanced($a->profile_uid)
+                               ForumManager::profileAdvanced($profile['uid'])
                        );
                }
 
@@ -243,11 +243,11 @@ class Profile extends BaseProfile
                        '$submit' => DI::l10n()->t('Submit'),
                        '$basic' => DI::l10n()->t('Basic'),
                        '$advanced' => DI::l10n()->t('Advanced'),
-                       '$is_owner' => $a->profile_uid == local_user(),
+                       '$is_owner' => $profile['uid'] == local_user(),
                        '$query_string' => DI::args()->getQueryString(),
                        '$basic_fields' => $basic_fields,
                        '$custom_fields' => $custom_fields,
-                       '$profile' => $a->profile,
+                       '$profile' => $profile,
                        '$edit_link' => [
                                'url' => DI::baseUrl() . '/settings/profile', DI::l10n()->t('Edit profile'),
                                'title' => '',
index b181ec43363851171e84b93113536539007e459f..30ac5f06ff5907cd90c42ca0a87faa4796955886 100644 (file)
@@ -52,20 +52,20 @@ class Status extends BaseProfile
 
                $a = DI::app();
 
-               ProfileModel::load($a, $parameters['nickname']);
+               $profile = ProfileModel::load($a, $parameters['nickname']);
 
-               if (empty($a->profile)) {
+               if (empty($profile)) {
                        throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
                }
 
-               if (!$a->profile['net-publish']) {
+               if (!$profile['net-publish']) {
                        DI::page()['htmlhead'] .= '<meta content="noindex, noarchive" name="robots" />' . "\n";
                }
 
-               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/dfrn_poll/' . $parameters['nickname'] . '" title="DFRN: ' . DI::l10n()->t('%s\'s timeline', $a->profile['name']) . '"/>' . "\n";
-               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/feed/' . $parameters['nickname'] . '/" title="' . DI::l10n()->t('%s\'s posts', $a->profile['name']) . '"/>' . "\n";
-               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/feed/' . $parameters['nickname'] . '/comments" title="' . DI::l10n()->t('%s\'s comments', $a->profile['name']) . '"/>' . "\n";
-               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/feed/' . $parameters['nickname'] . '/activity" title="' . DI::l10n()->t('%s\'s timeline', $a->profile['name']) . '"/>' . "\n";
+               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/dfrn_poll/' . $parameters['nickname'] . '" title="DFRN: ' . DI::l10n()->t('%s\'s timeline', $profile['name']) . '"/>' . "\n";
+               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/feed/' . $parameters['nickname'] . '/" title="' . DI::l10n()->t('%s\'s posts', $profile['name']) . '"/>' . "\n";
+               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/feed/' . $parameters['nickname'] . '/comments" title="' . DI::l10n()->t('%s\'s comments', $profile['name']) . '"/>' . "\n";
+               DI::page()['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . DI::baseUrl() . '/feed/' . $parameters['nickname'] . '/activity" title="' . DI::l10n()->t('%s\'s timeline', $profile['name']) . '"/>' . "\n";
 
                $category = $datequery = $datequery2 = '';
 
@@ -91,42 +91,42 @@ class Status extends BaseProfile
 
                $hashtags = $_GET['tag'] ?? '';
 
-               if (DI::config()->get('system', 'block_public') && !local_user() && !Session::getRemoteContactID($a->profile['uid'])) {
+               if (DI::config()->get('system', 'block_public') && !local_user() && !Session::getRemoteContactID($profile['uid'])) {
                        return Login::form();
                }
 
                $o = '';
 
-               if ($a->profile['uid'] == local_user()) {
+               if ($profile['uid'] == local_user()) {
                        Nav::setSelected('home');
                }
 
-               $remote_contact = Session::getRemoteContactID($a->profile['uid']);
-               $is_owner = local_user() == $a->profile['uid'];
-               $last_updated_key = "profile:" . $a->profile['uid'] . ":" . local_user() . ":" . $remote_contact;
+               $remote_contact = Session::getRemoteContactID($profile['uid']);
+               $is_owner = local_user() == $profile['uid'];
+               $last_updated_key = "profile:" . $profile['uid'] . ":" . local_user() . ":" . $remote_contact;
 
-               if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact) {
+               if (!empty($profile['hidewall']) && !$is_owner && !$remote_contact) {
                        notice(DI::l10n()->t('Access to this profile has been restricted.'));
                        return '';
                }
 
-               $o .= self::getTabsHTML($a, 'status', $is_owner, $a->profile['nickname']);
+               $o .= self::getTabsHTML($a, 'status', $is_owner, $profile);
 
-               $o .= Widget::commonFriendsVisitor($a->profile['uid'], $a->profile['nickname']);
+               $o .= Widget::commonFriendsVisitor($profile['uid'], $profile['nickname']);
 
-               $commpage = $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
+               $commpage = $profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
                $commvisitor = $commpage && $remote_contact;
 
-               DI::page()['aside'] .= Widget::postedByYear(DI::baseUrl() . '/profile/' . $a->profile['nickname'] . '/status', $a->profile['profile_uid'] ?? 0, true);
-               DI::page()['aside'] .= Widget::categories(DI::baseUrl() . '/profile/' . $a->profile['nickname'] . '/status', XML::escape($category));
-               DI::page()['aside'] .= Widget::tagCloud();
+               DI::page()['aside'] .= Widget::postedByYear(DI::baseUrl() . '/profile/' . $profile['nickname'] . '/status', $profile['profile_uid'] ?? 0, true);
+               DI::page()['aside'] .= Widget::categories(DI::baseUrl() . '/profile/' . $profile['nickname'] . '/status', XML::escape($category));
+               DI::page()['aside'] .= Widget::tagCloud($profile['uid']);
 
-               if (Security::canWriteToUserWall($a->profile['uid'])) {
+               if (Security::canWriteToUserWall($profile['uid'])) {
                        $x = [
                                'is_owner' => $is_owner,
-                               'allow_location' => ($is_owner || $commvisitor) && $a->profile['allow_location'],
+                               'allow_location' => ($is_owner || $commvisitor) && $profile['allow_location'],
                                'default_location' => $is_owner ? $a->user['default-location'] : '',
-                               'nickname' => $a->profile['nickname'],
+                               'nickname' => $profile['nickname'],
                                'lockstate' => is_array($a->user)
                                && (strlen($a->user['allow_cid'])
                                        || strlen($a->user['allow_gid'])
@@ -136,25 +136,25 @@ class Status extends BaseProfile
                                'acl' => $is_owner ? ACL::getFullSelectorHTML(DI::page(), $a->user, true) : '',
                                'bang' => '',
                                'visitor' => $is_owner || $commvisitor ? 'block' : 'none',
-                               'profile_uid' => $a->profile['uid'],
+                               'profile_uid' => $profile['uid'],
                        ];
 
                        $o .= status_editor($a, $x);
                }
 
                // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
-               $condition = Item::getPermissionsConditionArrayByUserId($a->profile['uid']);
+               $condition = Item::getPermissionsConditionArrayByUserId($profile['uid']);
 
                $last_updated_array = Session::get('last_updated', []);
 
                if (!empty($category)) {
                        $condition = DBA::mergeConditions($condition, ["`uri-id` IN (SELECT `uri-id` FROM `category-view` WHERE `name` = ? AND `type` = ? AND `uid` = ?)",
-                               $category, Category::CATEGORY, $a->profile['uid']]);
+                               $category, Category::CATEGORY, $profile['uid']]);
                }
 
                if (!empty($hashtags)) {
                        $condition = DBA::mergeConditions($condition, ["`uri-id` IN (SELECT `uri-id` FROM `tag-search-view` WHERE `name` = ? AND `uid` = ?)",
-                               $hashtags, $a->profile['uid']]);
+                               $hashtags, $profile['uid']]);
                }
 
                if (!empty($datequery)) {
@@ -166,9 +166,9 @@ class Status extends BaseProfile
 
                // Does the profile page belong to a forum?
                // If not then we can improve the performance with an additional condition
-               $condition2 = ['uid' => $a->profile['uid'], 'page-flags' => [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]];
+               $condition2 = ['uid' => $profile['uid'], 'page-flags' => [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]];
                if (!DBA::exists('user', $condition2)) {
-                       $condition = DBA::mergeConditions($condition, ['contact-id' => $a->profile['id']]);
+                       $condition = DBA::mergeConditions($condition, ['contact-id' => $profile['id']]);
                }
 
                if (DI::mode()->isMobile()) {
@@ -186,7 +186,7 @@ class Status extends BaseProfile
                        GRAVITY_PARENT, GRAVITY_ACTIVITY, Verb::getID(Activity::ANNOUNCE), GRAVITY_PARENT,
                        Protocol::DFRN, Protocol::ACTIVITYPUB, Protocol::DIASPORA, Protocol::OSTATUS]);
 
-               $condition = DBA::mergeConditions($condition, ['uid' => $a->profile['uid'], 'network' => Protocol::FEDERATED,
+               $condition = DBA::mergeConditions($condition, ['uid' => $profile['uid'], 'network' => Protocol::FEDERATED,
                        'visible' => true, 'deleted' => false]);
 
                $pager = new Pager(DI::l10n(), $args->getQueryString(), $itemspage_network);
@@ -213,25 +213,25 @@ class Status extends BaseProfile
 
                $items = Post::toArray($items_stmt);
 
-               if ($pager->getStart() == 0 && !empty($a->profile['uid'])) {
+               if ($pager->getStart() == 0 && !empty($profile['uid'])) {
                        $condition = ['private' => [Item::PUBLIC, Item::UNLISTED]];
-                       $remote_user = Session::getRemoteContactID($a->profile['uid']);
+                       $remote_user = Session::getRemoteContactID($profile['uid']);
                        if (!empty($remote_user)) {
-                               $permissionSets = DI::permissionSet()->selectByContactId($remote_user, $a->profile['uid']);
+                               $permissionSets = DI::permissionSet()->selectByContactId($remote_user, $profile['uid']);
                                if (!empty($permissionSets)) {
                                        $condition = ['psid' => array_merge($permissionSets->column('id'),
-                                                       [DI::permissionSet()->getIdFromACL($a->profile['uid'], '', '', '', '')])];
+                                                       [DI::permissionSet()->getIdFromACL($profile['uid'], '', '', '', '')])];
                                }
-                       } elseif ($a->profile['uid'] == local_user()) {
+                       } elseif ($profile['uid'] == local_user()) {
                                $condition = [];
                        }
        
-                       $pinned_items = Post::selectPinned($a->profile['uid'], ['uri-id', 'pinned'], $condition);
+                       $pinned_items = Post::selectPinned($profile['uid'], ['uri-id', 'pinned'], $condition);
                        $pinned = Post::toArray($pinned_items);
                        $items = array_merge($items, $pinned);
                }
 
-               $o .= conversation($a, $items, 'profile', false, false, 'pinned_received', $a->profile['uid']);
+               $o .= conversation($a, $items, 'profile', false, false, 'pinned_received', $profile['uid']);
 
                $o .= $pager->renderMinimal(count($items));
 
index ee13ce065181721ea9ef4ddc624eddfff11a602e..0950a057a508b351a0ae86471f3180890620eb39 100644 (file)
@@ -22,6 +22,7 @@
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
+use Friendica\Content\Widget;
 use Friendica\DI;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
@@ -30,6 +31,7 @@ use Friendica\Core\Search;
 use Friendica\Core\System;
 use Friendica\Model\Contact;
 use Friendica\Model\Profile;
+use Friendica\Model\User;
 use Friendica\Network\Probe;
 
 /**
@@ -37,20 +39,22 @@ use Friendica\Network\Probe;
  */
 class RemoteFollow extends BaseModule
 {
+       static $owner;
+
        public static function init(array $parameters = [])
        {
-               Profile::load(DI::app(), $parameters['profile']);
+               self::$owner = User::getOwnerDataByNick($parameters['profile']);
+
+               DI::page()['aside'] = Widget\VCard::getHTML(self::$owner);
        }
 
        public static function post(array $parameters = [])
        {
-               $a = DI::app();
-
                if (!empty($_POST['cancel']) || empty($_POST['dfrn_url'])) {
                        DI::baseUrl()->redirect();
                }
        
-               if (empty($a->profile['uid'])) {
+               if (empty(self::$owner)) {
                        notice(DI::l10n()->t('Profile unavailable.'));
                        return;
                }
@@ -73,15 +77,15 @@ class RemoteFollow extends BaseModule
                        return;
                }
 
-               Logger::notice('Remote request', ['url' => $url, 'follow' => $a->profile['url'], 'remote' => $data['subscribe']]);
+               Logger::notice('Remote request', ['url' => $url, 'follow' => self::$owner['url'], 'remote' => $data['subscribe']]);
                
                // Substitute our user's feed URL into $data['subscribe']
                // Send the subscriber home to subscribe
                // Diaspora needs the uri in the format user@domain.tld
                if ($data['network'] == Protocol::DIASPORA) {
-                       $uri = urlencode($a->profile['addr']);
+                       $uri = urlencode(self::$owner['addr']);
                } else {
-                       $uri = urlencode($a->profile['url']);
+                       $uri = urlencode(self::$owner['url']);
                }
        
                $follow_link = str_replace('{uri}', $uri, $data['subscribe']);
@@ -90,14 +94,12 @@ class RemoteFollow extends BaseModule
 
        public static function content(array $parameters = [])
        {
-               $a = DI::app();
-
-               if (empty($a->profile)) {
+               if (empty(self::$owner)) {
                        return '';
                }
        
-               $target_addr = $a->profile['addr'];
-               $target_url = $a->profile['url'];
+               $target_addr = self::$owner['addr'];
+               $target_url = self::$owner['url'];
 
                $tpl = Renderer::getMarkupTemplate('auto_request.tpl');
                $o = Renderer::replaceMacros($tpl, [
@@ -110,7 +112,7 @@ class RemoteFollow extends BaseModule
                        '$cancel'        => DI::l10n()->t('Cancel'),
 
                        '$request'       => 'remote_follow/' . $parameters['profile'],
-                       '$name'          => $a->profile['name'],
+                       '$name'          => self::$owner['name'],
                        '$myaddr'        => Profile::getMyURL(),
                ]);
                return $o;
index b22e607d40394dd55fe03014c4d35421650623a6..4ec6a977b27bfa7a0354721f888edbc5d1ae09e6 100644 (file)
@@ -29,6 +29,7 @@ use Friendica\DI;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Model\Profile as ProfileModel;
+use Friendica\Model\User;
 use Friendica\Network\HTTPException\ForbiddenException;
 use Friendica\Util\DateTimeFormat;
 
@@ -38,21 +39,22 @@ class Profile extends BaseModule
        {
                $a = DI::app();
 
-               if (DI::config()->get('system', 'block_public') && !local_user() && !Session::getRemoteContactID($a->profile['uid'])) {
+               // Ensure we've got a profile owner if updating.
+               $a->profile_owner = intval($_GET['p'] ?? 0);
+
+               if (DI::config()->get('system', 'block_public') && !local_user() && !Session::getRemoteContactID($a->profile_owner)) {
                        throw new ForbiddenException();
                }
 
-               $profile_uid = intval($_GET['p'] ?? 0);
-
-               // Ensure we've got a profile owner if updating.
-               $a->profile['uid'] = $profile_uid;
-
-               $remote_contact = Session::getRemoteContactID($a->profile['uid']);
-               $is_owner = local_user() == $a->profile['uid'];
-               $last_updated_key = "profile:" . $a->profile['uid'] . ":" . local_user() . ":" . $remote_contact;
+               $remote_contact = Session::getRemoteContactID($a->profile_owner);
+               $is_owner = local_user() == $a->profile_owner;
+               $last_updated_key = "profile:" . $a->profile_owner . ":" . local_user() . ":" . $remote_contact;
 
-               if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact) {
-                       throw new ForbiddenException(DI::l10n()->t('Access to this profile has been restricted.'));
+               if (!$is_owner && !$remote_contact) {
+                       $user = User::getById($a->profile_owner, ['hidewall']);
+                       if ($user['hidewall']) {
+                               throw new ForbiddenException(DI::l10n()->t('Access to this profile has been restricted.'));
+                       }
                }
 
                $o = '';
@@ -62,7 +64,7 @@ class Profile extends BaseModule
                }
 
                // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
-               $sql_extra = Item::getPermissionsSQLByUserId($a->profile['uid']);
+               $sql_extra = Item::getPermissionsSQLByUserId($a->profile_owner);
 
                $last_updated_array = Session::get('last_updated', []);
 
@@ -86,7 +88,7 @@ class Profile extends BaseModule
                                AND `visible` AND (NOT `deleted` OR `gravity` = ?)
                                AND `wall` $sql_extra4 $sql_extra
                        GROUP BY `parent-uri-id` ORDER BY `received` DESC",
-                       $a->profile['uid'],
+                       $a->profile_owner,
                        GRAVITY_ACTIVITY
                );
 
@@ -99,7 +101,7 @@ class Profile extends BaseModule
                $last_updated_array[$last_updated_key] = time();
                Session::set('last_updated', $last_updated_array);
 
-               if ($is_owner && !$profile_uid && !DI::config()->get('theme', 'hide_eventlist')) {
+               if ($is_owner && !$a->profile_owner && !DI::config()->get('theme', 'hide_eventlist')) {
                        $o .= ProfileModel::getBirthdays();
                        $o .= ProfileModel::getEventsReminderHTML();
                }
@@ -113,7 +115,7 @@ class Profile extends BaseModule
 
                $items = DBA::toArray($items_stmt);
 
-               $o .= conversation($a, $items, 'profile', $profile_uid, false, 'received', $a->profile['uid']);
+               $o .= conversation($a, $items, 'profile', $a->profile_owner, false, 'received', $a->profile_owner);
 
                System::htmlUpdateExit($o);
        }
index 089556a1fa038b361e430f93d1b74f1ce1cead02..bd6e2299e3766a99ec5884489e092773729b4592 100644 (file)
@@ -970,7 +970,6 @@ class Post
                                '$prompttext'  => DI::l10n()->t('Please enter a image/video/audio/webpage URL:'),
                                '$preview'     => DI::l10n()->t('Preview'),
                                '$indent'      => $indent,
-                               '$sourceapp'   => DI::l10n()->t($a->sourcename),
                                '$rand_num'    => Crypto::randomDigits(12)
                        ]);
                }
index c23e723b7dca633c85248998a1ea7287a0827903..a73803b525536f8eb10153cbb534e7195a416b3a 100644 (file)
@@ -79,11 +79,11 @@ class Thread
                                $this->writable = true;
                                break;
                        case 'profile':
-                               $this->profile_owner = $a->profile['uid'];
+                               $this->profile_owner = $a->profile_owner;
                                $this->writable = Security::canWriteToUserWall($this->profile_owner);
                                break;
                        case 'display':
-                               $this->profile_owner = $a->profile['uid'];
+                               $this->profile_owner = $a->profile_owner;
                                $this->writable = Security::canWriteToUserWall($this->profile_owner) || $writable;
                                break;
                        case 'community':
index ce101477e0a2ee043764ea18b70ac98c8d0ad970..3945ac8fdb7ffe05b206070984cac6265eb85223 100644 (file)
@@ -332,8 +332,7 @@ class Authentication
                $contact = $this->dba->selectFirst('contact', [], ['uid' => $user_record['uid'], 'self' => true]);
                if ($this->dba->isResult($contact)) {
                        $a->contact = $contact;
-                       $a->cid     = $contact['id'];
-                       $this->session->set('cid', $a->cid);
+                       $this->session->set('cid', $contact['id']);
                }
 
                header('X-Account-Management-Status: active; name="' . $user_record['username'] . '"; id="' . $user_record['nickname'] . '"');