]> git.mxchange.org Git - friendica.git/blobdiff - mod/cal.php
"Contact\User" class created
[friendica.git] / mod / cal.php
index cf0e498d56ea714ea8a0dccedcffc3b059f584b7..0e8e8a2af3328d1b73db78ed18c579a2f1cafac1 100644 (file)
@@ -1,6 +1,22 @@
 <?php
 /**
- * @file mod/cal.php
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  * The calendar module
  *
  * This calendar is for profile visitors and contains only the events
@@ -10,6 +26,7 @@
 use Friendica\App;
 use Friendica\Content\Feature;
 use Friendica\Content\Nav;
+use Friendica\Content\Text\BBCode;
 use Friendica\Content\Widget;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session;
@@ -19,17 +36,19 @@ use Friendica\Model\Contact;
 use Friendica\Model\Event;
 use Friendica\Model\Item;
 use Friendica\Model\Profile;
+use Friendica\Module\BaseProfile;
+use Friendica\Network\HTTPException;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Temporal;
 
 function cal_init(App $a)
 {
        if (DI::config()->get('system', 'block_public') && !Session::isAuthenticated()) {
-               throw new \Friendica\Network\HTTPException\ForbiddenException(DI::l10n()->t('Access denied.'));
+               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');
@@ -37,7 +56,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;
@@ -49,18 +68,22 @@ function cal_init(App $a)
                return;
        }
 
-       $profile = Profile::getByNickname($nick, $a->profile_uid);
+       $a->profile = Profile::getByNickname($nick, $a->profile_uid);
+
+       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();
@@ -101,30 +124,17 @@ 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']);
-       }
+       $contact_id = Session::getRemoteContactID($a->profile['uid']);
 
-       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;
-               }
-       }
+       $remote_contact = $contact_id && DBA::exists('contact', ['id' => $contact_id, 'uid' => $a->profile['uid']]);
 
-       $is_owner = local_user() == $a->profile['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;
        }
 
@@ -134,7 +144,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') {
@@ -282,13 +292,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);