3 * @copyright Copyright (C) 2020, Friendica
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Module;
25 use Friendica\BaseModule;
26 use Friendica\Core\Hook;
27 use Friendica\Core\Renderer;
30 class BaseProfile extends BaseModule
33 * Returns the HTML for the profile pages tabs
36 * @param string $current
37 * @param bool $is_owner
38 * @param string $nickname
40 * @throws \Friendica\Network\HTTPException\InternalServerErrorException
42 public static function getTabsHTML(App $a, string $current, bool $is_owner, string $nickname = null)
44 if (is_null($nickname)) {
45 $nickname = $a->user['nickname'];
48 $baseProfileUrl = DI::baseUrl() . '/profile/' . $nickname;
52 'label' => DI::l10n()->t('Profile'),
53 'url' => $baseProfileUrl . '/profile',
54 'sel' => $current == 'profile' ? 'active' : '',
55 'title' => DI::l10n()->t('Profile Details'),
56 'id' => 'profile-tab',
60 'label' => DI::l10n()->t('Status'),
61 'url' => $baseProfileUrl . '/status',
62 'sel' => $current == 'status' ? 'active' : '',
63 'title' => DI::l10n()->t('Status Messages and Posts'),
68 'label' => DI::l10n()->t('Photos'),
69 'url' => DI::baseUrl() . '/photos/' . $nickname,
70 'sel' => $current == 'photos' ? 'active' : '',
71 'title' => DI::l10n()->t('Photo Albums'),
76 'label' => DI::l10n()->t('Videos'),
77 'url' => DI::baseUrl() . '/videos/' . $nickname,
78 'sel' => $current == 'videos' ? 'active' : '',
79 'title' => DI::l10n()->t('Videos'),
85 // the calendar link for the full featured events calendar
86 if ($is_owner && $a->theme_events_in_profile) {
88 'label' => DI::l10n()->t('Events'),
89 'url' => DI::baseUrl() . '/events',
90 'sel' => $current == 'events' ? 'active' : '',
91 'title' => DI::l10n()->t('Events and Calendar'),
95 // if the user is not the owner of the calendar we only show a calendar
96 // with the public events of the calendar owner
97 } elseif (!$is_owner) {
99 'label' => DI::l10n()->t('Events'),
100 'url' => DI::baseUrl() . '/cal/' . $nickname,
101 'sel' => $current == 'cal' ? 'active' : '',
102 'title' => DI::l10n()->t('Events and Calendar'),
103 'id' => 'events-tab',
110 'label' => DI::l10n()->t('Personal Notes'),
111 'url' => DI::baseUrl() . '/notes',
112 'sel' => $current == 'notes' ? 'active' : '',
113 'title' => DI::l10n()->t('Only You Can See This'),
119 if (empty($a->profile['hide-friends'])) {
121 'label' => DI::l10n()->t('Contacts'),
122 'url' => $baseProfileUrl . '/contacts',
123 'sel' => $current == 'contacts' ? 'active' : '',
124 'title' => DI::l10n()->t('Contacts'),
125 'id' => 'viewcontacts-tab',
130 if (DI::session()->get('new_member') && $is_owner) {
132 'label' => DI::l10n()->t('Tips for New Members'),
133 'url' => DI::baseUrl() . '/newmember',
135 'title' => DI::l10n()->t('Tips for New Members'),
136 'id' => 'newmember-tab',
140 $arr = ['is_owner' => $is_owner, 'nickname' => $nickname, 'tab' => $current, 'tabs' => $tabs];
142 Hook::callAll('profile_tabs', $arr);
144 $tpl = Renderer::getMarkupTemplate('common_tabs.tpl');
146 return Renderer::replaceMacros($tpl, ['$tabs' => $arr['tabs']]);