]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Profile.php
Merge pull request #13541 from MrPetovan/bug/13534-image-blurred
[friendica.git] / src / Model / Profile.php
index e6c8e4822d17d3df1d47f75579b0d98fabd70849..c2b21e904bcaccc173e7fae8b23d1b72a52c4584 100644 (file)
@@ -37,6 +37,7 @@ use Friendica\DI;
 use Friendica\Network\HTTPClient\Client\HttpClientAccept;
 use Friendica\Network\HTTPClient\Client\HttpClientOptions;
 use Friendica\Network\HTTPException;
+use Friendica\Network\HTTPException\InternalServerErrorException;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\Diaspora;
 use Friendica\Security\PermissionSet\Entity\PermissionSet;
@@ -93,10 +94,11 @@ class Profile
        /**
         * Update a profile entry and distribute the changes if needed
         *
-        * @param array $fields Profile fields to update
-        * @param integer $uid User id
+        * @param array   $fields Profile fields to update
+        * @param integer $uid    User id
         *
         * @return boolean Whether update was successful
+        * @throws \Exception
         */
        public static function update(array $fields, int $uid): bool
        {
@@ -116,10 +118,6 @@ class Profile
                        return false;
                }
 
-               if ($old_owner['name'] != $owner['name']) {
-                       User::update(['username' => $owner['name']], $uid);
-               }
-
                $profile_fields = ['postal-code', 'dob', 'prv_keywords', 'homepage'];
                foreach ($profile_fields as $field) {
                        if ($old_owner[$field] != $owner[$field]) {
@@ -455,6 +453,18 @@ class Profile
                        Logger::warning('Missing hidewall key in profile array', ['profile' => $profile, 'callstack' => System::callstack(10)]);
                }
 
+               if ($profile['account-type'] == Contact::TYPE_COMMUNITY) {
+                       $mention_label = DI::l10n()->t('Post to group');
+                       $mention_url   = 'compose/0?body=!' . $profile['addr'];
+                       $network_label = DI::l10n()->t('View group');
+                       $network_url   = 'network/group/' . $profile['id'];
+               } else {
+                       $mention_label = DI::l10n()->t('Mention');
+                       $mention_url   = 'compose/0?body=@' . $profile['addr'];
+                       $network_label = DI::l10n()->t('Network Posts');
+                       $network_url   = 'contact/' . $profile['id'] . '/conversations';
+               }
+
                $tpl = Renderer::getMarkupTemplate('profile/vcard.tpl');
                $o .= Renderer::replaceMacros($tpl, [
                        '$profile' => $p,
@@ -478,6 +488,10 @@ class Profile
                        '$updated' => $updated,
                        '$diaspora' => $diaspora,
                        '$contact_block' => $contact_block,
+                       '$mention_label' => $mention_label,
+                       '$mention_url' => $mention_url,
+                       '$network_label' => $network_label,
+                       '$network_url' => $network_url,
                ]);
 
                $arr = ['profile' => &$profile, 'entry' => &$o];
@@ -640,13 +654,13 @@ class Profile
                                        $istoday = true;
                                }
 
-                               $title = strip_tags(html_entity_decode(BBCode::convertForUriId($rr['uri-id'], $rr['summary']), ENT_QUOTES, 'UTF-8'));
+                               $title = BBCode::toPlaintext($rr['summary'], false);
 
                                if (strlen($title) > 35) {
                                        $title = substr($title, 0, 32) . '... ';
                                }
 
-                               $description = substr(strip_tags(BBCode::convertForUriId($rr['uri-id'], $rr['desc'])), 0, 32) . '... ';
+                               $description = BBCode::toPlaintext($rr['desc'], false) . '... ';
                                if (!$description) {
                                        $description = DI::l10n()->t('[No description]');
                                }
@@ -815,12 +829,14 @@ class Profile
 
        /**
         * Set the visitor cookies (see remote_user()) for signed HTTP requests
-        (
+        *
+        * @param array $server The content of the $_SERVER superglobal
         * @return array Visitor contact array
+        * @throws InternalServerErrorException
         */
-       public static function addVisitorCookieForHTTPSigner(): array
+       public static function addVisitorCookieForHTTPSigner(array $server): array
        {
-               $requester = HTTPSignature::getSigner('', $_SERVER);
+               $requester = HTTPSignature::getSigner('', $server);
                if (empty($requester)) {
                        return [];
                }
@@ -942,7 +958,7 @@ class Profile
                if (!empty($search)) {
                        $publish = (DI::config()->get('system', 'publish_all') ? '' : "AND `publish` ");
                        $searchTerm = '%' . $search . '%';
-                       $condition = ["NOT `blocked` AND NOT `account_removed`
+                       $condition = ["`verified` AND NOT `blocked` AND NOT `account_removed` AND NOT `account_expired`
                                $publish
                                AND ((`name` LIKE ?) OR
                                (`nickname` LIKE ?) OR
@@ -955,7 +971,7 @@ class Profile
                                $searchTerm, $searchTerm, $searchTerm, $searchTerm,
                                $searchTerm, $searchTerm, $searchTerm, $searchTerm];
                } else {
-                       $condition = ['blocked' => false, 'account_removed' => false];
+                       $condition = ['verified' => true, 'blocked' => false, 'account_removed' => false, 'account_expired' => false];
                        if (!DI::config()->get('system', 'publish_all')) {
                                $condition['publish'] = true;
                        }