X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FProfile.php;h=aab5918567fbab92582531c7967e1ced93bc32d1;hb=d48d3d1db28572e055689097d923b6cf389f9ec9;hp=8e5bedd847ae367252973e0375f449858048d572;hpb=0a82fe4211f73cf10107feb69fe38eaa85eb61f8;p=friendica.git diff --git a/src/Module/Profile.php b/src/Module/Profile.php index 8e5bedd847..aab5918567 100644 --- a/src/Module/Profile.php +++ b/src/Module/Profile.php @@ -33,7 +33,7 @@ class Profile extends BaseModule public static $which = ''; public static $profile = 0; - public static function init() + public static function init(array $parameters = []) { $a = self::getApp(); @@ -48,46 +48,47 @@ class Profile extends BaseModule if (local_user() && $a->argc > 2 && $a->argv[2] === 'view') { self::$which = $a->user['nickname']; self::$profile = filter_var($a->argv[1], FILTER_SANITIZE_NUMBER_INT); - } else { - DFRN::autoRedir($a, self::$which); } } - public static function rawContent() + public static function rawContent(array $parameters = []) { if (ActivityPub::isRequest()) { $user = DBA::selectFirst('user', ['uid'], ['nickname' => self::$which]); - $data = []; if (DBA::isResult($user)) { + // The function returns an empty array when the account is removed, expired or blocked $data = ActivityPub\Transmitter::getProfile($user['uid']); + if (!empty($data)) { + System::jsonExit($data, 'application/activity+json'); + } } - if (!empty($data)) { - System::jsonExit($data, 'application/activity+json'); - } elseif (DBA::exists('userd', ['username' => self::$which])) { + if (DBA::exists('userd', ['username' => self::$which])) { // Known deleted user $data = ActivityPub\Transmitter::getDeletedUser(self::$which); System::jsonError(410, $data); } else { // Any other case (unknown, blocked, unverified, expired, no profile, no self contact) - System::jsonError(404, $data); + System::jsonError(404, []); } } } - public static function content($update = 0) + public static function content(array $parameters = [], $update = 0) { $a = self::getApp(); if (!$update) { ProfileModel::load($a, self::$which, self::$profile); - $blocked = !local_user() && !remote_user() && Config::get('system', 'block_public'); - $userblock = !local_user() && !remote_user() && $a->profile['hidewall']; + $a->page['htmlhead'] .= "\n"; + + $blocked = !local_user() && !Session::getRemoteContactID($a->profile['profile_uid']) && Config::get('system', 'block_public'); + $userblock = !local_user() && !Session::getRemoteContactID($a->profile['profile_uid']) && $a->profile['hidewall']; if (!empty($a->profile['page-flags']) && $a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY) { - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= '' . "\n"; } if (!empty($a->profile['openidserver'])) { @@ -101,13 +102,18 @@ class Profile extends BaseModule // site block if (!$blocked && !$userblock) { - $keywords = str_replace(['#', ',', ' ', ',,'], ['', ' ', ',', ','], defaults($a->profile, 'pub_keywords', '')); + $keywords = str_replace(['#', ',', ' ', ',,'], ['', ' ', ',', ','], $a->profile['pub_keywords'] ?? ''); if (strlen($keywords)) { $a->page['htmlhead'] .= '' . "\n"; } } $a->page['htmlhead'] .= '' . "\n"; + + if (!$a->profile['net-publish'] || $a->profile['hidewall']) { + $a->page['htmlhead'] .= '' . "\n"; + } + $a->page['htmlhead'] .= '' . "\n"; $a->page['htmlhead'] .= '' . "\n"; $a->page['htmlhead'] .= '' . "\n"; @@ -125,9 +131,12 @@ class Profile extends BaseModule $category = $datequery = $datequery2 = ''; + /** @var DateTimeFormat $dtFormat */ + $dtFormat = self::getClass(DateTimeFormat::class); + if ($a->argc > 2) { for ($x = 2; $x < $a->argc; $x ++) { - if (is_a_date_arg($a->argv[$x])) { + if ($dtFormat->isYearMonth($a->argv[$x])) { if ($datequery) { $datequery2 = Strings::escapeHtml($a->argv[$x]); } else { @@ -140,18 +149,15 @@ class Profile extends BaseModule } if (empty($category)) { - $category = defaults($_GET, 'category', ''); + $category = $_GET['category'] ?? ''; } - $hashtags = defaults($_GET, 'tag', ''); + $hashtags = $_GET['tag'] ?? ''; - if (Config::get('system', 'block_public') && !local_user() && !remote_user()) { + if (Config::get('system', 'block_public') && !local_user() && !Session::getRemoteContactID($a->profile['profile_uid'])) { return Login::form(); } - $groups = []; - $remote_cid = null; - $o = ''; if ($update) { @@ -161,17 +167,9 @@ class Profile extends BaseModule Nav::setSelected('home'); } - $remote_contact = ContactModel::isFollower(remote_user(), $a->profile['profile_uid']); + $remote_contact = Session::getRemoteContactID($a->profile['profile_uid']); $is_owner = local_user() == $a->profile['profile_uid']; - $last_updated_key = "profile:" . $a->profile['profile_uid'] . ":" . local_user() . ":" . remote_user(); - - if ($remote_contact) { - $cdata = ContactModel::getPublicAndUserContacID(remote_user(), $a->profile['profile_uid']); - if (!empty($cdata['user'])) { - $groups = Group::getIdsByContactId($cdata['user']); - $remote_cid = $cdata['user']; - } - } + $last_updated_key = "profile:" . $a->profile['profile_uid'] . ":" . local_user() . ":" . $remote_contact; if (!empty($a->profile['hidewall']) && !$is_owner && !$remote_contact) { notice(L10n::t('Access to this profile has been restricted.') . EOL); @@ -179,7 +177,7 @@ class Profile extends BaseModule } if (!$update) { - $tab = Strings::escapeTags(trim(defaults($_GET, 'tab', ''))); + $tab = Strings::escapeTags(trim($_GET['tab'] ?? '')); $o .= ProfileModel::getTabs($a, $tab, $is_owner, $a->profile['nickname']); @@ -221,7 +219,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['profile_uid'], $remote_contact, $groups, $remote_cid); + $sql_extra = Item::getPermissionsSQLByUserId($a->profile['profile_uid']); $sql_extra2 = ''; $last_updated_array = Session::get('last_updated', []); @@ -351,7 +349,13 @@ class Profile extends BaseModule $items = DBA::toArray($items_stmt); - $o .= conversation($a, $items, $pager, 'profile', $update, false, 'received', $a->profile['profile_uid']); + if ($pager->getStart() == 0 && !empty($a->profile['profile_uid'])) { + $pinned_items = Item::selectPinned($a->profile['profile_uid'], ['uri', 'pinned'], ['true' . $sql_extra]); + $pinned = Item::inArray($pinned_items); + $items = array_merge($items, $pinned); + } + + $o .= conversation($a, $items, $pager, 'profile', $update, false, 'pinned_received', $a->profile['profile_uid']); if (!$update) { $o .= $pager->renderMinimal(count($items));