X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fcal.php;h=e1cf91aa685dd4cceeca4a36140e860777f00ce1;hb=c41aaf8a17405e4e11366fec14519994612744b1;hp=1c14f9e77057f19aecdee24890c44c0a16da14b5;hpb=ab8997f9db910ba70c592bf106a7f5fc41a55b2d;p=friendica.git diff --git a/mod/cal.php b/mod/cal.php index 1c14f9e770..e1cf91aa68 100644 --- a/mod/cal.php +++ b/mod/cal.php @@ -1,6 +1,22 @@ . + * * The calendar module * * This calendar is for profile visitors and contains only the events @@ -8,10 +24,9 @@ */ use Friendica\App; -use Friendica\Content\Feature; use Friendica\Content\Nav; +use Friendica\Content\Text\BBCode; use Friendica\Content\Widget; -use Friendica\Core\Config; use Friendica\Core\Renderer; use Friendica\Core\Session; use Friendica\Database\DBA; @@ -19,18 +34,20 @@ use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Event; use Friendica\Model\Item; -use Friendica\Model\Profile; +use Friendica\Model\User; +use Friendica\Module\BaseProfile; +use Friendica\Network\HTTPException; use Friendica\Util\DateTimeFormat; use Friendica\Util\Temporal; function cal_init(App $a) { - if (Config::get('system', 'block_public') && !Session::isAuthenticated()) { - throw new \Friendica\Network\HTTPException\ForbiddenException(DI::l10n()->t('Access denied.')); + if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) { + throw new HTTPException\ForbiddenException(DI::l10n()->t('Access denied.')); } if ($a->argc < 2) { - throw new \Friendica\Network\HTTPException\ForbiddenException(DI::l10n()->t('Access denied.')); + throw new HTTPException\ForbiddenException(DI::l10n()->t('Access denied.')); } Nav::setSelected('events'); @@ -38,7 +55,7 @@ function cal_init(App $a) $nick = $a->argv[1]; $user = DBA::selectFirst('user', [], ['nickname' => $nick, 'blocked' => false]); if (!DBA::isResult($user)) { - throw new \Friendica\Network\HTTPException\NotFoundException(); + throw new HTTPException\NotFoundException(); } $a->data['user'] = $user; @@ -50,21 +67,24 @@ function cal_init(App $a) return; } - $profile = Profile::getByNickname($nick, $a->profile_uid); + $a->profile = User::getOwnerDataByNick($nick); + if (empty($a->profile)) { + throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.')); + } - $account_type = Contact::getAccountType($profile); + $account_type = Contact::getAccountType($a->profile); - $tpl = Renderer::getMarkupTemplate("widget/vcard.tpl"); + $tpl = Renderer::getMarkupTemplate('widget/vcard.tpl'); $vcard_widget = Renderer::replaceMacros($tpl, [ - '$name' => $profile['name'], - '$photo' => $profile['photo'], - '$addr' => (($profile['addr'] != "") ? $profile['addr'] : ""), + '$name' => $a->profile['name'], + '$photo' => $a->profile['photo'], + '$addr' => $a->profile['addr'] ?: '', '$account_type' => $account_type, - '$pdesc' => (($profile['pdesc'] != "") ? $profile['pdesc'] : ""), + '$about' => BBCode::convert($a->profile['about']), ]); - $cal_widget = Widget\CalendarExport::getHTML(); + $cal_widget = Widget\CalendarExport::getHTML($user['uid']); if (empty(DI::page()['aside'])) { DI::page()['aside'] = ''; @@ -83,6 +103,11 @@ function cal_content(App $a) // get the translation strings for the callendar $i18n = Event::getStrings(); + DI::page()->registerStylesheet('view/asset/fullcalendar/dist/fullcalendar.min.css'); + DI::page()->registerStylesheet('view/asset/fullcalendar/dist/fullcalendar.print.min.css', 'print'); + DI::page()->registerFooterScript('view/asset/moment/min/moment-with-locales.min.js'); + DI::page()->registerFooterScript('view/asset/fullcalendar/dist/fullcalendar.min.js'); + $htpl = Renderer::getMarkupTemplate('event_head.tpl'); DI::page()['htmlhead'] .= Renderer::replaceMacros($htpl, [ '$module_url' => '/cal/' . $a->data['user']['nickname'], @@ -102,30 +127,20 @@ function cal_content(App $a) } // Setup permissions structures - $remote_contact = false; - $contact_id = 0; - $owner_uid = intval($a->data['user']['uid']); $nick = $a->data['user']['nickname']; - - if (!empty(Session::getRemoteContactID($a->profile['profile_uid']))) { - $contact_id = Session::getRemoteContactID($a->profile['profile_uid']); + if (empty($a->profile)) { + throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.')); } - if ($contact_id) { - $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($contact_id), - intval($a->profile['profile_uid']) - ); - if (DBA::isResult($r)) { - $remote_contact = true; - } - } + $contact_id = Session::getRemoteContactID($a->profile['uid']); - $is_owner = local_user() == $a->profile['profile_uid']; + $remote_contact = $contact_id && DBA::exists('contact', ['id' => $contact_id, 'uid' => $a->profile['uid']]); + + $is_owner = local_user() == $a->profile['uid']; if ($a->profile['hidewall'] && !$is_owner && !$remote_contact) { - notice(DI::l10n()->t('Access to this profile has been restricted.') . EOL); + notice(DI::l10n()->t('Access to this profile has been restricted.')); return; } @@ -135,7 +150,7 @@ function cal_content(App $a) $sql_extra = " AND `event`.`cid` = 0 " . $sql_perms; // get the tab navigation bar - $tabs = Profile::getTabs($a, 'cal', false, $a->data['user']['nickname']); + $tabs = BaseProfile::getTabsHTML($a, 'cal', false, $a->data['user']['nickname']); // The view mode part is similiar to /mod/events.php if ($mode == 'view') { @@ -237,7 +252,7 @@ function cal_content(App $a) if (!empty($_GET['id'])) { $tpl = Renderer::getMarkupTemplate("event.tpl"); } else { -// if (Config::get('experimentals','new_calendar')==1){ +// if (DI::config()->get('experimentals','new_calendar')==1){ $tpl = Renderer::getMarkupTemplate("events_js.tpl"); // } else { // $tpl = Renderer::getMarkupTemplate("events.tpl"); @@ -283,13 +298,6 @@ function cal_content(App $a) return; } - // Test permissions - // Respect the export feature setting for all other /cal pages if it's not the own profile - if ((local_user() !== $owner_uid) && !Feature::isEnabled($owner_uid, "export_calendar")) { - notice(DI::l10n()->t('Permission denied.') . EOL); - DI::baseUrl()->redirect('cal/' . $nick); - } - // Get the export data by uid $evexport = Event::exportListByUserId($owner_uid, $format);