X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FProfile.php;h=0da9fbf35972c15675e89ecdddbb07d12b5a1ba1;hb=8e2910976f126ee7c728ba4716f317ac496f377b;hp=0ebb400f6eb3eefca7e8696f02782328f132114f;hpb=e944d7bed6b971494bff82396960d280e6a82cca;p=friendica.git diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 0ebb400f6e..0da9fbf359 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -5,23 +5,15 @@ namespace Friendica\Model; use Friendica\App; -use Friendica\Content\Feature; -use Friendica\Content\ForumManager; use Friendica\Content\Text\BBCode; -use Friendica\Content\Text\HTML; use Friendica\Content\Widget\ContactBlock; -use Friendica\Core\Cache; -use Friendica\Core\Config; +use Friendica\Core\Cache\Duration; use Friendica\Core\Hook; -use Friendica\Core\L10n; use Friendica\Core\Logger; -use Friendica\Core\PConfig; use Friendica\Core\Protocol; use Friendica\Core\Renderer; use Friendica\Core\Session; use Friendica\Core\System; -use Friendica\Core\Theme; -use Friendica\Core\Worker; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Protocol\Activity; @@ -30,12 +22,11 @@ use Friendica\Util\DateTimeFormat; use Friendica\Util\Network; use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\Strings; -use Friendica\Util\Temporal; class Profile { /** - * @brief Returns default profile for a given user id + * Returns default profile for a given user id * * @param integer User ID * @@ -44,12 +35,11 @@ class Profile */ public static function getByUID($uid) { - $profile = DBA::selectFirst('profile', [], ['uid' => $uid, 'is-default' => true]); - return $profile; + return DBA::selectFirst('profile', [], ['uid' => $uid]); } /** - * @brief Returns default profile for a given user ID and ID + * Returns default profile for a given user ID and ID * * @param int $uid The contact ID * @param int $id The contact owner ID @@ -64,7 +54,7 @@ class Profile } /** - * @brief Returns profile data for the contact owner + * Returns profile data for the contact owner * * @param int $uid The User ID * @param array $fields The fields to retrieve @@ -78,7 +68,7 @@ class Profile } /** - * @brief Returns a formatted location string from the given profile array + * Returns a formatted location string from the given profile array * * @param array $profile Profile array (Generated from the "profile" table) * @@ -112,7 +102,6 @@ class Profile } /** - * * Loads a profile into the page sidebar. * * The function requires a writeable copy of the main App structure, and the nickname @@ -130,21 +119,19 @@ class Profile * the theme is chosen before the _init() function of a theme is run, which will usually * load a lot of theme-specific content * - * @brief Loads a profile into the page sidebar. * @param App $a * @param string $nickname string - * @param int $profile int * @param array $profiledata array * @param boolean $show_connect Show connect link * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function load(App $a, $nickname, $profile = 0, array $profiledata = [], $show_connect = true) + public static function load(App $a, $nickname, array $profiledata = [], $show_connect = true) { $user = DBA::selectFirst('user', ['uid'], ['nickname' => $nickname, 'account_removed' => false]); if (!DBA::isResult($user) && empty($profiledata)) { - Logger::log('profile error: ' . $a->query_string, Logger::DEBUG); + Logger::log('profile error: ' . DI::args()->getQueryString(), Logger::DEBUG); return; } @@ -155,43 +142,33 @@ class Profile } // Add profile data to sidebar - $a->page['aside'] .= self::sidebar($a, $profiledata, true, $show_connect); + DI::page()['aside'] .= self::sidebar($a, $profiledata, true, $show_connect); if (!DBA::isResult($user)) { return; } } - $pdata = self::getByNickname($nickname, $user['uid'], $profile); + $profile = self::getByNickname($nickname, $user['uid']); - if (empty($pdata) && empty($profiledata)) { - Logger::log('profile error: ' . $a->query_string, Logger::DEBUG); + if (empty($profile) && empty($profiledata)) { + Logger::log('profile error: ' . DI::args()->getQueryString(), Logger::DEBUG); return; } - if (empty($pdata)) { - $pdata = ['uid' => 0, 'profile_uid' => 0, 'is-default' => false,'name' => $nickname]; - } - - // fetch user tags if this isn't the default profile - - if (!$pdata['is-default']) { - $condition = ['uid' => $pdata['profile_uid'], 'is-default' => true]; - $profile = DBA::selectFirst('profile', ['pub_keywords'], $condition); - if (DBA::isResult($profile)) { - $pdata['pub_keywords'] = $profile['pub_keywords']; - } + if (empty($profile)) { + $profile = ['uid' => 0, 'name' => $nickname]; } - $a->profile = $pdata; - $a->profile_uid = $pdata['profile_uid']; + $a->profile = $profile; + $a->profile_uid = $profile['uid']; - $a->profile['mobile-theme'] = PConfig::get($a->profile['profile_uid'], 'system', 'mobile_theme'); + $a->profile['mobile-theme'] = DI::pConfig()->get($a->profile['uid'], 'system', 'mobile_theme'); $a->profile['network'] = Protocol::DFRN; - $a->page['title'] = $a->profile['name'] . ' @ ' . Config::get('config', 'sitename'); + DI::page()['title'] = $a->profile['name'] . ' @ ' . DI::config()->get('config', 'sitename'); - if (!$profiledata && !PConfig::get(local_user(), 'system', 'always_my_theme')) { + if (!$profiledata && !DI::pConfig()->get(local_user(), 'system', 'always_my_theme')) { $a->setCurrentTheme($a->profile['theme']); $a->setCurrentMobileTheme($a->profile['mobile-theme']); } @@ -208,16 +185,16 @@ class Profile } if (local_user() && local_user() == $a->profile['uid'] && $profiledata) { - $a->page['aside'] .= Renderer::replaceMacros( - Renderer::getMarkupTemplate('profile_edlink.tpl'), + DI::page()['aside'] .= Renderer::replaceMacros( + Renderer::getMarkupTemplate('settings/profile/link.tpl'), [ - '$editprofile' => L10n::t('Edit profile'), + '$editprofile' => DI::l10n()->t('Edit profile'), '$profid' => $a->profile['id'] ] ); } - $block = ((Config::get('system', 'block_public') && !Session::isAuthenticated()) ? true : false); + $block = ((DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) ? true : false); /** * @todo @@ -225,7 +202,7 @@ class Profile * But: When this profile was on the same server, then we could display the contacts */ if (!$profiledata) { - $a->page['aside'] .= self::sidebar($a, $a->profile, $block, $show_connect); + DI::page()['aside'] .= self::sidebar($a, $a->profile, $block, $show_connect); } return; @@ -241,51 +218,26 @@ class Profile * * Includes all available profile data * - * @brief Get all profile data of a local user * @param string $nickname nick * @param int $uid uid * @param int $profile_id ID of the profile * @return array * @throws \Exception */ - public static function getByNickname($nickname, $uid = 0, $profile_id = 0) + public static function getByNickname($nickname, $uid = 0) { - if (!empty(Session::getRemoteContactID($uid))) { - $contact = DBA::selectFirst('contact', ['profile-id'], ['id' => Session::getRemoteContactID($uid)]); - if (DBA::isResult($contact)) { - $profile_id = $contact['profile-id']; - } - } - - $profile = null; - - if ($profile_id) { - $profile = DBA::fetchFirst( - "SELECT `contact`.`id` AS `contact_id`, `contact`.`photo` AS `contact_photo`, - `contact`.`thumb` AS `contact_thumb`, `contact`.`micro` AS `contact_micro`, - `profile`.`uid` AS `profile_uid`, `profile`.*, - `contact`.`avatar-date` AS picdate, `contact`.`addr`, `contact`.`url`, `user`.* - FROM `profile` - INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` AND `contact`.`self` - INNER JOIN `user` ON `profile`.`uid` = `user`.`uid` - WHERE `user`.`nickname` = ? AND `profile`.`id` = ? LIMIT 1", - $nickname, - intval($profile_id) - ); - } - if (!DBA::isResult($profile)) { - $profile = DBA::fetchFirst( - "SELECT `contact`.`id` AS `contact_id`, `contact`.`photo` as `contact_photo`, - `contact`.`thumb` AS `contact_thumb`, `contact`.`micro` AS `contact_micro`, - `profile`.`uid` AS `profile_uid`, `profile`.*, - `contact`.`avatar-date` AS picdate, `contact`.`addr`, `contact`.`url`, `user`.* - FROM `profile` - INNER JOIN `contact` ON `contact`.`uid` = `profile`.`uid` AND `contact`.`self` - INNER JOIN `user` ON `profile`.`uid` = `user`.`uid` - WHERE `user`.`nickname` = ? AND `profile`.`is-default` LIMIT 1", - $nickname - ); - } + $profile = DBA::fetchFirst( + "SELECT `contact`.`id` AS `contact_id`, `contact`.`photo` AS `contact_photo`, + `contact`.`thumb` AS `contact_thumb`, `contact`.`micro` AS `contact_micro`, + `profile`.*, + `contact`.`avatar-date` AS picdate, `contact`.`addr`, `contact`.`url`, `user`.* + FROM `profile` + INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` AND `contact`.`self` + INNER JOIN `user` ON `profile`.`uid` = `user`.`uid` + WHERE `user`.`nickname` = ? AND `profile`.`uid` = ? LIMIT 1", + $nickname, + intval($uid) + ); return $profile; } @@ -296,7 +248,6 @@ class Profile * It is very difficult to templatise the HTML completely * because of all the conditional logic. * - * @brief Formats a profile for display in the sidebar. * @param array $profile * @param int $block * @param boolean $show_connect Show connect link @@ -359,7 +310,7 @@ class Profile $profile_is_dfrn = $profile['network'] == Protocol::DFRN; $profile_is_native = in_array($profile['network'], Protocol::NATIVE_SUPPORT); - $local_user_is_self = local_user() && local_user() == ($profile['profile_uid'] ?? 0); + $local_user_is_self = local_user() && local_user() == ($profile['uid'] ?? 0); $visitor_is_authenticated = (bool)self::getMyURL(); $visitor_is_following = in_array($visitor_contact['rel'] ?? 0, [Contact::FOLLOWER, Contact::FRIEND]) @@ -371,7 +322,9 @@ class Profile if (!$local_user_is_self && $show_connect) { if (!$visitor_is_authenticated) { - $follow_link = 'dfrn_request/' . $profile['nickname']; + if (!empty($profile['nickname'])) { + $follow_link = 'dfrn_request/' . $profile['nickname']; + } } elseif ($profile_is_native) { if ($visitor_is_following) { $unfollow_link = $visitor_base_path . '/unfollow?url=' . urlencode($profile_url); @@ -395,40 +348,12 @@ class Profile // show edit profile to yourself if (!$is_contact && $local_user_is_self) { - if (Feature::isEnabled(local_user(), 'multi_profiles')) { - $profile['edit'] = [System::baseUrl() . '/profiles', L10n::t('Profiles'), '', L10n::t('Manage/edit profiles')]; - $r = q( - "SELECT * FROM `profile` WHERE `uid` = %d", - local_user() - ); - - $profile['menu'] = [ - 'chg_photo' => L10n::t('Change profile photo'), - 'cr_new' => L10n::t('Create New Profile'), - 'entries' => [], - ]; - - if (DBA::isResult($r)) { - foreach ($r as $rr) { - $profile['menu']['entries'][] = [ - 'photo' => $rr['thumb'], - 'id' => $rr['id'], - 'alt' => L10n::t('Profile Image'), - 'profile_name' => $rr['profile-name'], - 'isdefault' => $rr['is-default'], - 'visibile_to_everybody' => L10n::t('visible to everybody'), - 'edit_visibility' => L10n::t('Edit visibility'), - ]; - } - } - } else { - $profile['edit'] = [System::baseUrl() . '/profiles/' . $profile['id'], L10n::t('Edit profile'), '', L10n::t('Edit profile')]; - $profile['menu'] = [ - 'chg_photo' => L10n::t('Change profile photo'), - 'cr_new' => null, - 'entries' => [], - ]; - } + $profile['edit'] = [DI::baseUrl() . '/settings/profile', DI::l10n()->t('Edit profile'), '', DI::l10n()->t('Edit profile')]; + $profile['menu'] = [ + 'chg_photo' => DI::l10n()->t('Change profile photo'), + 'cr_new' => null, + 'entries' => [], + ]; } // Fetch the account type @@ -441,14 +366,14 @@ class Profile || !empty($profile['postal-code']) || !empty($profile['country-name']) ) { - $location = L10n::t('Location:'); + $location = DI::l10n()->t('Location:'); } - $gender = !empty($profile['gender']) ? L10n::t('Gender:') : false; - $marital = !empty($profile['marital']) ? L10n::t('Status:') : false; - $homepage = !empty($profile['homepage']) ? L10n::t('Homepage:') : false; - $about = !empty($profile['about']) ? L10n::t('About:') : false; - $xmpp = !empty($profile['xmpp']) ? L10n::t('XMPP:') : false; + $gender = !empty($profile['gender']) ? DI::l10n()->t('Gender:') : false; + $marital = !empty($profile['marital']) ? DI::l10n()->t('Status:') : false; + $homepage = !empty($profile['homepage']) ? DI::l10n()->t('Homepage:') : false; + $about = !empty($profile['about']) ? DI::l10n()->t('About:') : false; + $xmpp = !empty($profile['xmpp']) ? DI::l10n()->t('XMPP:') : false; if ((!empty($profile['hidewall']) || $block) && !Session::isAuthenticated()) { $location = $gender = $marital = $homepage = $about = false; @@ -461,7 +386,7 @@ class Profile if (!empty($profile['guid'])) { $diaspora = [ 'guid' => $profile['guid'], - 'podloc' => System::baseUrl(), + 'podloc' => DI::baseUrl(), 'searchable' => (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false'), 'nickname' => $profile['nickname'], 'fullname' => $profile['name'], @@ -521,11 +446,11 @@ class Profile } if (isset($p['gender'])) { - $p['gender'] = L10n::t($p['gender']); + $p['gender'] = DI::l10n()->t($p['gender']); } if (isset($p['marital'])) { - $p['marital'] = L10n::t($p['marital']); + $p['marital'] = DI::l10n()->t($p['marital']); } if (isset($p['photo'])) { @@ -534,17 +459,17 @@ class Profile $p['url'] = Contact::magicLink(($p['url'] ?? '') ?: $profile_url); - $tpl = Renderer::getMarkupTemplate('profile_vcard.tpl'); + $tpl = Renderer::getMarkupTemplate('profile/vcard.tpl'); $o .= Renderer::replaceMacros($tpl, [ '$profile' => $p, '$xmpp' => $xmpp, - '$follow' => L10n::t('Follow'), + '$follow' => DI::l10n()->t('Follow'), '$follow_link' => $follow_link, - '$unfollow' => L10n::t('Unfollow'), + '$unfollow' => DI::l10n()->t('Unfollow'), '$unfollow_link' => $unfollow_link, - '$subscribe_feed' => L10n::t('Atom feed'), + '$subscribe_feed' => DI::l10n()->t('Atom feed'), '$subscribe_feed_link' => $subscribe_feed_link, - '$wallmessage' => L10n::t('Message'), + '$wallmessage' => DI::l10n()->t('Message'), '$wallmessage_link' => $wallmessage_link, '$account_type' => $account_type, '$location' => $location, @@ -552,7 +477,7 @@ class Profile '$marital' => $marital, '$homepage' => $homepage, '$about' => $about, - '$network' => L10n::t('Network:'), + '$network' => DI::l10n()->t('Network:'), '$contacts' => $contact_count, '$updated' => $updated, '$diaspora' => $diaspora, @@ -568,10 +493,10 @@ class Profile public static function getBirthdays() { - $a = \get_app(); + $a = DI::app(); $o = ''; - if (!local_user() || $a->is_mobile || $a->is_tablet) { + if (!local_user() || DI::mode()->isMobile() || DI::mode()->isMobile()) { return $o; } @@ -582,11 +507,11 @@ class Profile * return $o; */ - $bd_format = L10n::t('g A l F d'); // 8 AM Friday January 18 - $bd_short = L10n::t('F d'); + $bd_format = DI::l10n()->t('g A l F d'); // 8 AM Friday January 18 + $bd_short = DI::l10n()->t('F d'); $cachekey = 'get_birthdays:' . local_user(); - $r = Cache::get($cachekey); + $r = DI::cache()->get($cachekey); if (is_null($r)) { $s = DBA::p( "SELECT `event`.*, `event`.`id` AS `eid`, `contact`.* FROM `event` @@ -608,7 +533,7 @@ class Profile ); if (DBA::isResult($s)) { $r = DBA::toArray($s); - Cache::set($cachekey, $r, Cache::HOUR); + DI::cache()->set($cachekey, $r, Duration::HOUR); } } @@ -645,7 +570,7 @@ class Profile $rr['link'] = Contact::magicLink($rr['url']); $rr['title'] = $rr['name']; - $rr['date'] = L10n::getDay(DateTimeFormat::convert($rr['start'], $a->timezone, 'UTC', $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . L10n::t('[today]') : ''); + $rr['date'] = DI::l10n()->getDay(DateTimeFormat::convert($rr['start'], $a->timezone, 'UTC', $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); $rr['startime'] = null; $rr['today'] = $today; } @@ -655,8 +580,8 @@ class Profile return Renderer::replaceMacros($tpl, [ '$classtoday' => $classtoday, '$count' => $total, - '$event_reminders' => L10n::t('Birthday Reminders'), - '$event_title' => L10n::t('Birthdays this week:'), + '$event_reminders' => DI::l10n()->t('Birthday Reminders'), + '$event_title' => DI::l10n()->t('Birthdays this week:'), '$events' => $r, '$lbr' => '{', // raw brackets mess up if/endif macro processing '$rbr' => '}' @@ -665,10 +590,10 @@ class Profile public static function getEventsReminderHTML() { - $a = \get_app(); + $a = DI::app(); $o = ''; - if (!local_user() || $a->is_mobile || $a->is_tablet) { + if (!local_user() || DI::mode()->isMobile() || DI::mode()->isMobile()) { return $o; } @@ -679,7 +604,7 @@ class Profile * return $o; */ - $bd_format = L10n::t('g A l F d'); // 8 AM Friday January 18 + $bd_format = DI::l10n()->t('g A l F d'); // 8 AM Friday January 18 $classtoday = ''; $condition = ["`uid` = ? AND `type` != 'birthday' AND `start` < ? AND `start` >= ?", @@ -717,7 +642,7 @@ class Profile $description = substr(strip_tags(BBCode::convert($rr['desc'])), 0, 32) . '... '; if (!$description) { - $description = L10n::t('[No description]'); + $description = DI::l10n()->t('[No description]'); } $strt = DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->timezone : 'UTC'); @@ -730,7 +655,7 @@ class Profile $rr['title'] = $title; $rr['description'] = $description; - $rr['date'] = L10n::getDay(DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->timezone : 'UTC', 'UTC', $bd_format)) . (($today) ? ' ' . L10n::t('[today]') : ''); + $rr['date'] = DI::l10n()->getDay(DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->timezone : 'UTC', 'UTC', $bd_format)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); $rr['startime'] = $strt; $rr['today'] = $today; @@ -743,270 +668,12 @@ class Profile return Renderer::replaceMacros($tpl, [ '$classtoday' => $classtoday, '$count' => count($r), - '$event_reminders' => L10n::t('Event Reminders'), - '$event_title' => L10n::t('Upcoming events the next 7 days:'), + '$event_reminders' => DI::l10n()->t('Event Reminders'), + '$event_title' => DI::l10n()->t('Upcoming events the next 7 days:'), '$events' => $r, ]); } - public static function getAdvanced(App $a) - { - $uid = intval($a->profile['uid']); - - if ($a->profile['name']) { - $tpl = Renderer::getMarkupTemplate('profile_advanced.tpl'); - - $profile = []; - - $profile['fullname'] = [L10n::t('Full Name:'), $a->profile['name']]; - - if (Feature::isEnabled($uid, 'profile_membersince')) { - $profile['membersince'] = [L10n::t('Member since:'), DateTimeFormat::local($a->profile['register_date'])]; - } - - if ($a->profile['gender']) { - $profile['gender'] = [L10n::t('Gender:'), L10n::t($a->profile['gender'])]; - } - - if (!empty($a->profile['dob']) && $a->profile['dob'] > DBA::NULL_DATE) { - $year_bd_format = L10n::t('j F, Y'); - $short_bd_format = L10n::t('j F'); - - $val = 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) - ); - - $profile['birthday'] = [L10n::t('Birthday:'), $val]; - } - - if (!empty($a->profile['dob']) - && $a->profile['dob'] > DBA::NULL_DATE - && $age = Temporal::getAgeByTimezone($a->profile['dob'], $a->profile['timezone'], '') - ) { - $profile['age'] = [L10n::t('Age:'), $age]; - } - - if ($a->profile['marital']) { - $profile['marital'] = [L10n::t('Status:'), L10n::t($a->profile['marital'])]; - } - - /// @TODO Maybe use x() here, plus below? - if ($a->profile['with']) { - $profile['marital']['with'] = $a->profile['with']; - } - - if (strlen($a->profile['howlong']) && $a->profile['howlong'] > DBA::NULL_DATETIME) { - $profile['howlong'] = Temporal::getRelativeDate($a->profile['howlong'], L10n::t('for %1$d %2$s')); - } - - if ($a->profile['sexual']) { - $profile['sexual'] = [L10n::t('Sexual Preference:'), L10n::t($a->profile['sexual'])]; - } - - if ($a->profile['homepage']) { - $profile['homepage'] = [L10n::t('Homepage:'), HTML::toLink($a->profile['homepage'])]; - } - - if ($a->profile['hometown']) { - $profile['hometown'] = [L10n::t('Hometown:'), HTML::toLink($a->profile['hometown'])]; - } - - if ($a->profile['pub_keywords']) { - $profile['pub_keywords'] = [L10n::t('Tags:'), $a->profile['pub_keywords']]; - } - - if ($a->profile['politic']) { - $profile['politic'] = [L10n::t('Political Views:'), $a->profile['politic']]; - } - - if ($a->profile['religion']) { - $profile['religion'] = [L10n::t('Religion:'), $a->profile['religion']]; - } - - if ($txt = BBCode::convert($a->profile['about'])) { - $profile['about'] = [L10n::t('About:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['interest'])) { - $profile['interest'] = [L10n::t('Hobbies/Interests:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['likes'])) { - $profile['likes'] = [L10n::t('Likes:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['dislikes'])) { - $profile['dislikes'] = [L10n::t('Dislikes:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['contact'])) { - $profile['contact'] = [L10n::t('Contact information and Social Networks:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['music'])) { - $profile['music'] = [L10n::t('Musical interests:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['book'])) { - $profile['book'] = [L10n::t('Books, literature:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['tv'])) { - $profile['tv'] = [L10n::t('Television:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['film'])) { - $profile['film'] = [L10n::t('Film/dance/culture/entertainment:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['romance'])) { - $profile['romance'] = [L10n::t('Love/Romance:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['work'])) { - $profile['work'] = [L10n::t('Work/employment:'), $txt]; - } - - if ($txt = BBCode::convert($a->profile['education'])) { - $profile['education'] = [L10n::t('School/education:'), $txt]; - } - - //show subcribed forum if it is enabled in the usersettings - if (Feature::isEnabled($uid, 'forumlist_profile')) { - $profile['forumlist'] = [L10n::t('Forums:'), ForumManager::profileAdvanced($uid)]; - } - - if ($a->profile['uid'] == local_user()) { - $profile['edit'] = [System::baseUrl() . '/profiles/' . $a->profile['id'], L10n::t('Edit profile'), '', L10n::t('Edit profile')]; - } - - return Renderer::replaceMacros($tpl, [ - '$title' => L10n::t('Profile'), - '$basic' => L10n::t('Basic'), - '$advanced' => L10n::t('Advanced'), - '$profile' => $profile - ]); - } - - return ''; - } - - /** - * @param App $a - * @param string $current - * @param bool $is_owner - * @param string $nickname - * @return string - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ - public static function getTabs(App $a, string $current, bool $is_owner, string $nickname = null) - { - if (is_null($nickname)) { - $nickname = $a->user['nickname']; - } - - $baseProfileUrl = System::baseUrl() . '/profile/' . $nickname; - - $tabs = [ - [ - 'label' => L10n::t('Status'), - 'url' => $baseProfileUrl, - 'sel' => !$current ? 'active' : '', - 'title' => L10n::t('Status Messages and Posts'), - 'id' => 'status-tab', - 'accesskey' => 'm', - ], - [ - 'label' => L10n::t('Profile'), - 'url' => $baseProfileUrl . '/?tab=profile', - 'sel' => $current == 'profile' ? 'active' : '', - 'title' => L10n::t('Profile Details'), - 'id' => 'profile-tab', - 'accesskey' => 'r', - ], - [ - 'label' => L10n::t('Photos'), - 'url' => System::baseUrl() . '/photos/' . $nickname, - 'sel' => $current == 'photos' ? 'active' : '', - 'title' => L10n::t('Photo Albums'), - 'id' => 'photo-tab', - 'accesskey' => 'h', - ], - [ - 'label' => L10n::t('Videos'), - 'url' => System::baseUrl() . '/videos/' . $nickname, - 'sel' => $current == 'videos' ? 'active' : '', - 'title' => L10n::t('Videos'), - 'id' => 'video-tab', - 'accesskey' => 'v', - ], - ]; - - // the calendar link for the full featured events calendar - if ($is_owner && $a->theme_events_in_profile) { - $tabs[] = [ - 'label' => L10n::t('Events'), - 'url' => System::baseUrl() . '/events', - 'sel' => $current == 'events' ? 'active' : '', - 'title' => L10n::t('Events and Calendar'), - 'id' => 'events-tab', - 'accesskey' => 'e', - ]; - // if the user is not the owner of the calendar we only show a calendar - // with the public events of the calendar owner - } elseif (!$is_owner) { - $tabs[] = [ - 'label' => L10n::t('Events'), - 'url' => System::baseUrl() . '/cal/' . $nickname, - 'sel' => $current == 'cal' ? 'active' : '', - 'title' => L10n::t('Events and Calendar'), - 'id' => 'events-tab', - 'accesskey' => 'e', - ]; - } - - if ($is_owner) { - $tabs[] = [ - 'label' => L10n::t('Personal Notes'), - 'url' => System::baseUrl() . '/notes', - 'sel' => $current == 'notes' ? 'active' : '', - 'title' => L10n::t('Only You Can See This'), - 'id' => 'notes-tab', - 'accesskey' => 't', - ]; - } - - if (!empty($_SESSION['new_member']) && $is_owner) { - $tabs[] = [ - 'label' => L10n::t('Tips for New Members'), - 'url' => System::baseUrl() . '/newmember', - 'sel' => false, - 'title' => L10n::t('Tips for New Members'), - 'id' => 'newmember-tab', - ]; - } - - if ($is_owner || empty($a->profile['hide-friends'])) { - $tabs[] = [ - 'label' => L10n::t('Contacts'), - 'url' => $baseProfileUrl . '/contacts', - 'sel' => $current == 'contacts' ? 'active' : '', - 'title' => L10n::t('Contacts'), - 'id' => 'viewcontacts-tab', - 'accesskey' => 'k', - ]; - } - - $arr = ['is_owner' => $is_owner, 'nickname' => $nickname, 'tab' => $current, 'tabs' => $tabs]; - Hook::callAll('profile_tabs', $arr); - - $tpl = Renderer::getMarkupTemplate('common_tabs.tpl'); - - return Renderer::replaceMacros($tpl, ['$tabs' => $arr['tabs']]); - } - /** * Retrieves the my_url session variable * @@ -1047,7 +714,7 @@ class Profile $addr = $_GET['addr'] ?? $my_url; - $arr = ['zrl' => $my_url, 'url' => $a->cmd]; + $arr = ['zrl' => $my_url, 'url' => DI::args()->getCommand()]; Hook::callAll('zrl_init', $arr); // Try to find the public contact entry of the visitor. @@ -1066,18 +733,18 @@ class Profile // Avoid endless loops $cachekey = 'zrlInit:' . $my_url; - if (Cache::get($cachekey)) { + if (DI::cache()->get($cachekey)) { Logger::log('URL ' . $my_url . ' already tried to authenticate.', Logger::DEBUG); return; } else { - Cache::set($cachekey, true, Cache::MINUTE); + DI::cache()->set($cachekey, true, Duration::MINUTE); } Logger::log('Not authenticated. Invoking reverse magic-auth for ' . $my_url, Logger::DEBUG); // Remove the "addr" parameter from the destination. It is later added as separate parameter again. $addr_request = 'addr=' . urlencode($addr); - $query = rtrim(str_replace($addr_request, '', $a->query_string), '?&'); + $query = rtrim(str_replace($addr_request, '', DI::args()->getQueryString()), '?&'); // The other instance needs to know where to redirect. $dest = urlencode(DI::baseUrl()->get() . '/' . $query); @@ -1106,7 +773,7 @@ class Profile */ public static function addVisitorCookieForHandle($handle) { - $a = \get_app(); + $a = DI::app(); // Try to find the public contact entry of the visitor. $cid = Contact::getIdForURL($handle); @@ -1144,7 +811,7 @@ class Profile */ public static function openWebAuthInit($token) { - $a = \get_app(); + $a = DI::app(); // Clean old OpenWebAuthToken entries. OpenWebAuthToken::purge('owt', '3 MINUTE'); @@ -1164,7 +831,7 @@ class Profile $arr = [ 'visitor' => $visitor, - 'url' => $a->query_string + 'url' => DI::args()->getQueryString() ]; /** * @hooks magic_auth_success @@ -1176,7 +843,7 @@ class Profile $a->contact = $arr['visitor']; - info(L10n::t('OpenWebAuth: %1$s welcomes %2$s', DI::baseUrl()->getHostname(), $visitor['name'])); + info(DI::l10n()->t('OpenWebAuth: %1$s welcomes %2$s', DI::baseUrl()->getHostname(), $visitor['name'])); Logger::log('OpenWebAuth: auth success from ' . $visitor['addr'], Logger::DEBUG); } @@ -1209,7 +876,6 @@ class Profile * system pconfig, which means they don't want to see anybody else's theme * settings except their own while on this site. * - * @brief Get the user ID of the page owner * @return int user ID * * @throws \Friendica\Network\HTTPException\InternalServerErrorException @@ -1218,7 +884,7 @@ class Profile public static function getThemeUid(App $a) { $uid = !empty($a->profile_uid) ? intval($a->profile_uid) : 0; - if (local_user() && (PConfig::get(local_user(), 'system', 'always_my_theme') || !$uid)) { + if (local_user() && (DI::pConfig()->get(local_user(), 'system', 'always_my_theme') || !$uid)) { return local_user(); } @@ -1238,7 +904,7 @@ class Profile */ public static function searchProfiles($start = 0, $count = 100, $search = null) { - $publish = (Config::get('system', 'publish_all') ? '' : " AND `publish` = 1 "); + $publish = (DI::config()->get('system', 'publish_all') ? '' : "`publish` = 1"); $total = 0; if (!empty($search)) { @@ -1246,14 +912,13 @@ class Profile $cnt = DBA::fetchFirst("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` - WHERE `is-default` $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` + WHERE $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND ((`profile`.`name` LIKE ?) OR (`user`.`nickname` LIKE ?) OR (`profile`.`pdesc` LIKE ?) OR (`profile`.`locality` LIKE ?) OR (`profile`.`region` LIKE ?) OR (`profile`.`country-name` LIKE ?) OR - (`profile`.`gender` LIKE ?) OR (`profile`.`marital` LIKE ?) OR (`profile`.`sexual` LIKE ?) OR (`profile`.`about` LIKE ?) OR @@ -1268,7 +933,7 @@ class Profile $cnt = DBA::fetchFirst("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` - WHERE `is-default` $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed`"); + WHERE $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed`"); } if (DBA::isResult($cnt)) { @@ -1288,14 +953,13 @@ class Profile FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` LEFT JOIN `contact` ON `contact`.`uid` = `user`.`uid` - WHERE `is-default` $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND `contact`.`self` + WHERE $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND `contact`.`self` AND ((`profile`.`name` LIKE ?) OR (`user`.`nickname` LIKE ?) OR (`profile`.`pdesc` LIKE ?) OR (`profile`.`locality` LIKE ?) OR (`profile`.`region` LIKE ?) OR (`profile`.`country-name` LIKE ?) OR - (`profile`.`gender` LIKE ?) OR (`profile`.`marital` LIKE ?) OR (`profile`.`sexual` LIKE ?) OR (`profile`.`about` LIKE ?) OR @@ -1315,7 +979,7 @@ class Profile FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` LEFT JOIN `contact` ON `contact`.`uid` = `user`.`uid` - WHERE `is-default` $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND `contact`.`self` + WHERE $publish AND NOT `user`.`blocked` AND NOT `user`.`account_removed` AND `contact`.`self` $order LIMIT ?,?", $start, $count );