diff --git a/database.sql b/database.sql index 2971c0af15..78fd9620e2 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2022.05-dev (Siberian Iris) --- DB_UPDATE_VERSION 1456 +-- DB_UPDATE_VERSION 1457 -- ------------------------------------------ @@ -1284,7 +1284,7 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` ( `changed` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT 'Date that something in the conversation changed, indicating clients should fetch the conversation again', `commented` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '', `uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'Owner id which owns this copy of the item', - `pinned` boolean NOT NULL DEFAULT '0' COMMENT 'The thread is pinned on the profile page', + `pinned` boolean NOT NULL DEFAULT '0' COMMENT 'deprecated', `starred` boolean NOT NULL DEFAULT '0' COMMENT '', `ignored` boolean NOT NULL DEFAULT '0' COMMENT 'Ignore updates for this thread', `wall` boolean NOT NULL DEFAULT '0' COMMENT 'This item was posted to the wall of uid', @@ -1309,7 +1309,6 @@ CREATE TABLE IF NOT EXISTS `post-thread-user` ( INDEX `commented` (`commented`), INDEX `uid_received` (`uid`,`received`), INDEX `uid_wall_received` (`uid`,`wall`,`received`), - INDEX `uid_pinned` (`uid`,`pinned`), INDEX `uid_commented` (`uid`,`commented`), INDEX `uid_starred` (`uid`,`starred`), INDEX `uid_mention` (`uid`,`mention`), @@ -1621,7 +1620,6 @@ CREATE VIEW `post-user-view` AS SELECT `post-thread-user`.`pubmail` AS `pubmail`, `post-user`.`visible` AS `visible`, `post-thread-user`.`starred` AS `starred`, - `post-thread-user`.`pinned` AS `pinned`, `post-user`.`unseen` AS `unseen`, `post-user`.`deleted` AS `deleted`, `post-user`.`origin` AS `origin`, @@ -1783,7 +1781,6 @@ CREATE VIEW `post-thread-user-view` AS SELECT `post-thread-user`.`ignored` AS `ignored`, `post-user`.`visible` AS `visible`, `post-thread-user`.`starred` AS `starred`, - `post-thread-user`.`pinned` AS `pinned`, `post-thread-user`.`unseen` AS `unseen`, `post-user`.`deleted` AS `deleted`, `post-thread-user`.`origin` AS `origin`, @@ -2169,6 +2166,19 @@ CREATE VIEW `category-view` AS SELECT FROM `post-category` LEFT JOIN `tag` ON `post-category`.`tid` = `tag`.`id`; +-- +-- VIEW collection-view +-- +DROP VIEW IF EXISTS `collection-view`; +CREATE VIEW `collection-view` AS SELECT + `post-collection`.`uri-id` AS `uri-id`, + `post-collection`.`type` AS `type`, + `post`.`author-id` AS `cid`, + `post`.`received` AS `received`, + `post`.`created` AS `created` + FROM `post-collection` + INNER JOIN `post` ON `post-collection`.`uri-id` = `post`.`uri-id`; + -- -- VIEW tag-view -- diff --git a/doc/database/db_post-thread-user.md b/doc/database/db_post-thread-user.md index 0b74837411..7c6eac868c 100644 --- a/doc/database/db_post-thread-user.md +++ b/doc/database/db_post-thread-user.md @@ -18,7 +18,7 @@ Fields | changed | Date that something in the conversation changed, indicating clients should fetch the conversation again | datetime | NO | | 0001-01-01 00:00:00 | | | commented | | datetime | NO | | 0001-01-01 00:00:00 | | | uid | Owner id which owns this copy of the item | mediumint unsigned | NO | PRI | 0 | | -| pinned | The thread is pinned on the profile page | boolean | NO | | 0 | | +| pinned | deprecated | boolean | NO | | 0 | | | starred | | boolean | NO | | 0 | | | ignored | Ignore updates for this thread | boolean | NO | | 0 | | | wall | This item was posted to the wall of uid | boolean | NO | | 0 | | @@ -49,7 +49,6 @@ Indexes | commented | commented | | uid_received | uid, received | | uid_wall_received | uid, wall, received | -| uid_pinned | uid, pinned | | uid_commented | uid, commented | | uid_starred | uid, starred | | uid_mention | uid, mention | diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index 0c3a6c988d..0d1804981c 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -639,6 +639,12 @@ class Conversation $title = ''; } + if (!empty($item['featured'])) { + $pinned = $this->l10n->t('Pinned item'); + } else { + $pinned = ''; + } + $tmp_item = [ 'template' => $tpl, 'id' => ($preview ? 'P0' : $item['id']), @@ -680,6 +686,7 @@ class Conversation 'owner_photo' => $this->baseURL->remove(Contact::getAvatarUrlForUrl($item['owner-link'], $item['uid'], Proxy::SIZE_THUMB)), 'plink' => ItemModel::getPlink($item), 'edpost' => false, + 'pinned' => $pinned, 'isstarred' => 'unstarred', 'star' => false, 'drop' => $drop, @@ -931,7 +938,7 @@ class Conversation $condition = DBA::mergeConditions($condition, ["`uid` IN (0, ?) AND (`vid` != ? OR `vid` IS NULL)", $uid, Verb::getID(Activity::FOLLOW)]); - $thread_items = Post::selectForUser($uid, array_merge(ItemModel::DISPLAY_FIELDLIST, ['pinned', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params); + $thread_items = Post::selectForUser($uid, array_merge(ItemModel::DISPLAY_FIELDLIST, ['featured', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params); $items = []; @@ -1135,7 +1142,9 @@ class Conversation } if (stristr($order, 'pinned_received')) { - usort($parents, [$this, 'sortThrPinnedReceived']); + usort($parents, [$this, 'sortThrFeaturedReceived']); + } elseif (stristr($order, 'pinned_commented')) { + usort($parents, [$this, 'sortThrFeaturedCommented']); } elseif (stristr($order, 'received')) { usort($parents, [$this, 'sortThrReceived']); } elseif (stristr($order, 'commented')) { @@ -1174,23 +1183,41 @@ class Conversation } /** - * usort() callback to sort item arrays by pinned and the received key + * usort() callback to sort item arrays by featured and the received key * * @param array $a * @param array $b * @return int */ - private function sortThrPinnedReceived(array $a, array $b) + private function sortThrFeaturedReceived(array $a, array $b) { - if ($b['pinned'] && !$a['pinned']) { + if ($b['featured'] && !$a['featured']) { return 1; - } elseif (!$b['pinned'] && $a['pinned']) { + } elseif (!$b['featured'] && $a['featured']) { return -1; } return strcmp($b['received'], $a['received']); } + /** + * usort() callback to sort item arrays by featured and the received key + * + * @param array $a + * @param array $b + * @return int + */ + private function sortThrFeaturedCommented(array $a, array $b) + { + if ($b['featured'] && !$a['featured']) { + return 1; + } elseif (!$b['featured'] && $a['featured']) { + return -1; + } + + return strcmp($b['commented'], $a['commented']); + } + /** * usort() callback to sort item arrays by the received key * diff --git a/src/Factory/Api/Mastodon/Status.php b/src/Factory/Api/Mastodon/Status.php index ee74c257df..9148140335 100644 --- a/src/Factory/Api/Mastodon/Status.php +++ b/src/Factory/Api/Mastodon/Status.php @@ -78,7 +78,7 @@ class Status extends BaseFactory public function createFromUriId(int $uriId, $uid = 0): \Friendica\Object\Api\Mastodon\Status { $fields = ['uri-id', 'uid', 'author-id', 'author-link', 'starred', 'app', 'title', 'body', 'raw-body', 'content-warning', - 'created', 'network', 'thr-parent-id', 'parent-author-id', 'language', 'uri', 'plink', 'private', 'vid', 'gravity']; + 'created', 'network', 'thr-parent-id', 'parent-author-id', 'language', 'uri', 'plink', 'private', 'vid', 'gravity', 'featured']; $item = Post::selectFirst($fields, ['uri-id' => $uriId, 'uid' => [0, $uid]], ['order' => ['uid' => true]]); if (!$item) { $mail = DBA::selectFirst('mail', ['id'], ['uri-id' => $uriId, 'uid' => $uid]); @@ -125,7 +125,7 @@ class Status extends BaseFactory ]), Post\ThreadUser::getIgnored($uriId, $uid), (bool)($item['starred'] && ($item['gravity'] == GRAVITY_PARENT)), - Post\ThreadUser::getPinned($uriId, $uid) + $item['featured'] ); $sensitive = $this->dba->exists('tag-view', ['uri-id' => $uriId, 'name' => 'nsfw', 'type' => TagModel::HASHTAG]); diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 2c88e798de..e23fa31699 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -38,6 +38,7 @@ use Friendica\DI; use Friendica\Network\HTTPException; use Friendica\Network\Probe; use Friendica\Protocol\Activity; +use Friendica\Protocol\ActivityPub; use Friendica\Util\DateTimeFormat; use Friendica\Util\Images; use Friendica\Util\Network; @@ -1455,11 +1456,29 @@ class Contact } if ($thread_mode) { - $items = Post::toArray(Post::selectForUser(local_user(), ['uri-id', 'gravity', 'parent-uri-id', 'thr-parent-id', 'author-id'], $condition, $params)); + $items = Post::toArray(Post::selectForUser(local_user(), ['uri-id'], $condition, $params)); - $o .= DI::conversation()->create($items, 'contacts', $update, false, 'commented', local_user()); + if ($pager->getStart() == 0) { + $cdata = Contact::getPublicAndUserContactID($cid, local_user()); + if (!empty($cdata['public'])) { + $pinned = Post\Collection::selectToArrayForContact($cdata['public'], Post\Collection::FEATURED, ['uri-id']); + $items = array_merge($items, $pinned); + } + } + + $o .= DI::conversation()->create($items, 'contacts', $update, false, 'pinned_commented', local_user()); } else { - $items = Post::toArray(Post::selectForUser(local_user(), Item::DISPLAY_FIELDLIST, $condition, $params)); + $fields = array_merge(Item::DISPLAY_FIELDLIST, ['featured']); + $items = Post::toArray(Post::selectForUser(local_user(), $fields, $condition, $params)); + + if ($pager->getStart() == 0) { + $cdata = Contact::getPublicAndUserContactID($cid, local_user()); + if (!empty($cdata['public'])) { + $condition = ["`uri-id` IN (SELECT `uri-id` FROM `collection-view` WHERE `cid` = ?)", $cdata['public']]; + $pinned = Post::toArray(Post::selectForUser(local_user(), $fields, $condition, $params)); + $items = array_merge($pinned, $items); + } + } $o .= DI::conversation()->create($items, 'contact-posts', $update); } @@ -2252,6 +2271,10 @@ class Contact $new_pubkey = $ret['pubkey'] ?? ''; if ($uid == 0) { + if ($ret['network'] == Protocol::ACTIVITYPUB) { + ActivityPub\Processor::fetchFeaturedPosts($ret['url']); + } + $ret['last-item'] = Probe::getLastUpdate($ret); Logger::info('Fetched last item', ['id' => $id, 'probed_url' => $ret['url'], 'last-item' => $ret['last-item'], 'callstack' => System::callstack(20)]); } diff --git a/src/Model/Post.php b/src/Model/Post.php index c5309b5bd4..93a990a37e 100644 --- a/src/Model/Post.php +++ b/src/Model/Post.php @@ -488,39 +488,6 @@ class Post } } - /** - * Select pinned rows from the post-thread-user table for a given user - * - * @param integer $uid User ID - * @param array $selected Array of selected fields, empty for all - * @param array $condition Array of fields for condition - * @param array $params Array of several parameters - * - * @return boolean|object - * @throws \Exception - */ - public static function selectPinned(int $uid, array $selected = [], array $condition = [], $params = []) - { - $postthreaduser = DBA::select('post-thread-user', ['uri-id'], ['uid' => $uid, 'pinned' => true]); - if (!DBA::isResult($postthreaduser)) { - return $postthreaduser; - } - - $pinned = []; - while ($useritem = DBA::fetch($postthreaduser)) { - $pinned[] = $useritem['uri-id']; - } - DBA::close($postthreaduser); - - if (empty($pinned)) { - return []; - } - - $condition = DBA::mergeConditions(['uri-id' => $pinned, 'uid' => $uid, 'gravity' => GRAVITY_PARENT], $condition); - - return self::selectForUser($uid, $selected, $condition, $params); - } - /** * Update existing post entries * diff --git a/src/Model/Post/Collection.php b/src/Model/Post/Collection.php index f7a1a996bb..476e9d3b33 100644 --- a/src/Model/Post/Collection.php +++ b/src/Model/Post/Collection.php @@ -58,4 +58,17 @@ class Collection DBA::delete('post-collection', ['uri-id' => $uri_id, 'type' => $type]); } + + /** + * Fetch collections for a given contact + * + * @param integer $cid + * @param [type] $type + * @param array $fields + * @return array + */ + public static function selectToArrayForContact(int $cid, int $type = self::FEATURED, array $fields = []) + { + return DBA::selectToArray('collection-view', $fields, ['cid' => $cid, 'type' => $type]); + } } diff --git a/src/Model/Post/ThreadUser.php b/src/Model/Post/ThreadUser.php index e599e3dee7..0de26abc58 100644 --- a/src/Model/Post/ThreadUser.php +++ b/src/Model/Post/ThreadUser.php @@ -123,31 +123,4 @@ class ThreadUser { DBA::update('post-thread-user', ['ignored' => $ignored], ['uri-id' => $uri_id, 'uid' => $uid], true); } - - /** - * @param int $uri_id - * @param int $uid - * @return bool - * @throws Exception - */ - public static function getPinned(int $uri_id, int $uid) - { - $threaduser = DBA::selectFirst('post-thread-user', ['pinned'], ['uri-id' => $uri_id, 'uid' => $uid]); - if (empty($threaduser)) { - return false; - } - return (bool)$threaduser['pinned']; - } - - /** - * @param int $uri_id - * @param int $uid - * @param int $pinned - * @return void - * @throws Exception - */ - public static function setPinned(int $uri_id, int $uid, int $pinned) - { - DBA::update('post-thread-user', ['pinned' => $pinned], ['uri-id' => $uri_id, 'uid' => $uid], true); - } } diff --git a/src/Module/Api/Mastodon/Accounts/Statuses.php b/src/Module/Api/Mastodon/Accounts/Statuses.php index db40b004f6..051269797e 100644 --- a/src/Module/Api/Mastodon/Accounts/Statuses.php +++ b/src/Module/Api/Mastodon/Accounts/Statuses.php @@ -96,7 +96,7 @@ class Statuses extends BaseApi } if ($request['pinned']) { - $condition = DBA::mergeConditions($condition, ['pinned' => true]); + $condition = DBA::mergeConditions($condition, ['featured' => true]); } if ($request['exclude_replies']) { diff --git a/src/Module/Api/Mastodon/Statuses/Pin.php b/src/Module/Api/Mastodon/Statuses/Pin.php index 4816eaebf8..61a675b612 100644 --- a/src/Module/Api/Mastodon/Statuses/Pin.php +++ b/src/Module/Api/Mastodon/Statuses/Pin.php @@ -46,11 +46,7 @@ class Pin extends BaseApi DI::mstdnError()->RecordNotFound(); } - if ($item['gravity'] != GRAVITY_PARENT) { - DI::mstdnError()->UnprocessableEntity(DI::l10n()->t('Only starting posts can be pinned')); - } - - Post\ThreadUser::setPinned($this->parameters['id'], $uid, true); + Post\Collection::add($this->parameters['id'], Post\Collection::FEATURED); System::jsonExit(DI::mstdnStatus()->createFromUriId($this->parameters['id'], $uid)->toArray()); } diff --git a/src/Module/Api/Mastodon/Statuses/Unpin.php b/src/Module/Api/Mastodon/Statuses/Unpin.php index b158e216fe..e54df31ebd 100644 --- a/src/Module/Api/Mastodon/Statuses/Unpin.php +++ b/src/Module/Api/Mastodon/Statuses/Unpin.php @@ -46,11 +46,7 @@ class Unpin extends BaseApi DI::mstdnError()->RecordNotFound(); } - if ($item['gravity'] != GRAVITY_PARENT) { - DI::mstdnError()->UnprocessableEntity(DI::l10n()->t('Only starting posts can be pinned')); - } - - Post\ThreadUser::setPinned($this->parameters['id'], $uid, false); + Post\Collection::remove($this->parameters['id'], Post\Collection::FEATURED); System::jsonExit(DI::mstdnStatus()->createFromUriId($this->parameters['id'], $uid)->toArray()); } diff --git a/src/Module/Item/Pin.php b/src/Module/Item/Pin.php index d002e8bff1..3fdd783c6d 100644 --- a/src/Module/Item/Pin.php +++ b/src/Module/Item/Pin.php @@ -48,7 +48,7 @@ class Pin extends BaseModule $itemId = intval($this->parameters['id']); - $item = Post::selectFirst(['uri-id', 'uid'], ['id' => $itemId]); + $item = Post::selectFirst(['uri-id', 'uid', 'featured'], ['id' => $itemId]); if (!DBA::isResult($item)) { throw new HTTPException\NotFoundException(); } @@ -57,9 +57,13 @@ class Pin extends BaseModule throw new HttpException\ForbiddenException($l10n->t('Access denied.')); } - $pinned = !Post\ThreadUser::getPinned($item['uri-id'], local_user()); + $pinned = !$item['featured']; - Post\ThreadUser::setPinned($item['uri-id'], local_user(), $pinned); + if ($pinned) { + Post\Collection::add($item['uri-id'], Post\Collection::FEATURED); + } else { + Post\Collection::remove($item['uri-id'], Post\Collection::FEATURED); + } // See if we've been passed a return path to redirect to $return_path = $_REQUEST['return'] ?? ''; diff --git a/src/Module/Profile/Status.php b/src/Module/Profile/Status.php index 8919267990..f3015692f3 100644 --- a/src/Module/Profile/Status.php +++ b/src/Module/Profile/Status.php @@ -29,6 +29,7 @@ use Friendica\Core\Protocol; use Friendica\Core\Session; use Friendica\Database\DBA; use Friendica\DI; +use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\Post; use Friendica\Model\Post\Category; @@ -207,20 +208,8 @@ class Status extends BaseProfile $items = Post::toArray($items_stmt); if ($pager->getStart() == 0 && !empty($profile['uid'])) { - $condition = ['private' => [Item::PUBLIC, Item::UNLISTED]]; - $remote_user = Session::getRemoteContactID($profile['uid']); - if (!empty($remote_user)) { - $permissionSets = DI::permissionSet()->selectByContactId($remote_user, $profile['uid']); - if (!empty($permissionSets)) { - $condition = ['psid' => array_merge($permissionSets->column('id'), - [DI::permissionSet()->selectPublicForUser($profile['uid'])->id])]; - } - } elseif ($profile['uid'] == local_user()) { - $condition = []; - } - - $pinned_items = Post::selectPinned($profile['uid'], ['uri-id', 'pinned'], $condition); - $pinned = Post::toArray($pinned_items); + $pcid = Contact::getPublicIdByUserId($profile['uid']); + $pinned = Post\Collection::selectToArrayForContact($pcid, Post\Collection::FEATURED); $items = array_merge($items, $pinned); } diff --git a/src/Object/Post.php b/src/Object/Post.php index 4e0d8d2389..4510413008 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -231,7 +231,7 @@ class Post $origin = $item['origin'] || $item['parent-origin']; - if ($item['pinned']) { + if (!empty($item['featured'])) { $pinned = DI::l10n()->t('Pinned item'); } @@ -343,14 +343,14 @@ class Post if ($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) { if ($origin) { - $ispinned = ($item['pinned'] ? 'pinned' : 'unpinned'); + $ispinned = ($item['featured'] ? 'pinned' : 'unpinned'); $pin = [ 'do' => DI::l10n()->t('Pin'), 'undo' => DI::l10n()->t('Unpin'), 'toggle' => DI::l10n()->t('Toggle pin status'), - 'classdo' => $item['pinned'] ? 'hidden' : '', - 'classundo' => $item['pinned'] ? '' : 'hidden', + 'classdo' => $item['featured'] ? 'hidden' : '', + 'classundo' => $item['featured'] ? '' : 'hidden', 'pinned' => DI::l10n()->t('Pinned'), ]; } diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index b8758a0c82..e5653a554f 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -977,6 +977,80 @@ class Processor return Mail::insert($msg); } + /** + * Fetch featured posts from a contact with the given url + * + * @param string $url + * @return void + */ + public static function fetchFeaturedPosts(string $url) + { + Logger::info('Fetch featured posts', ['contact' => $url]); + + $apcontact = APContact::getByURL($url); + if (empty($apcontact['featured'])) { + Logger::info('Contact does not have a featured collection', ['contact' => $url]); + return; + } + + $pcid = Contact::getIdForURL($url, 0, false); + if (empty($pcid)) { + Logger::info('Contact not found', ['contact' => $url]); + return; + } + + $posts = Post\Collection::selectToArrayForContact($pcid, Post\Collection::FEATURED); + if (!empty($posts)) { + $old_featured = array_column($posts, 'uri-id'); + } + + $featured = ActivityPub::fetchItems($apcontact['featured']); + if (empty($featured)) { + Logger::info('Contact does not have featured posts', ['contact' => $url]); + + foreach ($old_featured as $uri_id) { + Post\Collection::remove($uri_id, Post\Collection::FEATURED); + Logger::debug('Removed no longer featured post', ['uri-id' => $uri_id, 'contact' => $url]); + } + return; + } + + $new = 0; + $old = 0; + + foreach ($featured as $post) { + if (empty($post['id'])) { + continue; + } + $id = Item::fetchByLink($post['id']); + if (!empty($id)) { + $item = Post::selectFirst(['uri-id', 'featured'], ['id' => $id]); + if (!empty($item['uri-id'])) { + if (!$item['featured']) { + Post\Collection::add($item['uri-id'], Post\Collection::FEATURED); + Logger::debug('Added featured post', ['uri-id' => $item['uri-id'], 'contact' => $url]); + $new++; + } else { + Logger::debug('Post already had been featured', ['uri-id' => $item['uri-id'], 'contact' => $url]); + $old++; + } + + $index = array_search($item['uri-id'], $old_featured); + if (!($index === false)) { + unset($old_featured[$index]); + } + } + } + } + + foreach ($old_featured as $uri_id) { + Post\Collection::remove($uri_id, Post\Collection::FEATURED); + Logger::debug('Removed no longer featured post', ['uri-id' => $uri_id, 'contact' => $url]); + } + + Logger::info('Fetched featured posts', ['new' => $new, 'old' => $old, 'contact' => $url]); + } + /** * Fetches missing posts * diff --git a/src/Worker/ExpirePosts.php b/src/Worker/ExpirePosts.php index 4e06229ea9..b566976e9e 100644 --- a/src/Worker/ExpirePosts.php +++ b/src/Worker/ExpirePosts.php @@ -225,9 +225,11 @@ class ExpirePosts $uris = DBA::select('item-uri', ['id'], ["`id` IN (SELECT `uri-id` FROM `post-thread` WHERE `received` < ? AND NOT `uri-id` IN (SELECT `uri-id` FROM `post-thread-user` - WHERE (`mention` OR `starred` OR `wall` OR `pinned`) AND `uri-id` = `post-thread`.`uri-id`) + WHERE (`mention` OR `starred` OR `wall`) AND `uri-id` = `post-thread`.`uri-id`) AND NOT `uri-id` IN (SELECT `uri-id` FROM `post-category` WHERE `uri-id` = `post-thread`.`uri-id`) + AND NOT `uri-id` IN (SELECT `uri-id` FROM `post-collection` + WHERE `uri-id` = `post-thread`.`uri-id`) AND NOT `uri-id` IN (SELECT `uri-id` FROM `post-media` WHERE `uri-id` = `post-thread`.`uri-id`) AND NOT `uri-id` IN (SELECT `parent-uri-id` FROM `post-user` INNER JOIN `contact` ON `contact`.`id` = `contact-id` AND `notify_new_posts` diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index d7f2c1d00c..aea4837566 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1456); + define('DB_UPDATE_VERSION', 1457); } return [ @@ -1308,7 +1308,7 @@ return [ "changed" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => "Date that something in the conversation changed, indicating clients should fetch the conversation again"], "commented" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""], "uid" => ["type" => "mediumint unsigned", "not null" => "1", "default" => "0", "primary" => "1", "foreign" => ["user" => "uid"], "comment" => "Owner id which owns this copy of the item"], - "pinned" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "The thread is pinned on the profile page"], + "pinned" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "deprecated"], "starred" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "ignored" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "Ignore updates for this thread"], "wall" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "This item was posted to the wall of uid"], @@ -1335,7 +1335,6 @@ return [ "commented" => ["commented"], "uid_received" => ["uid", "received"], "uid_wall_received" => ["uid", "wall", "received"], - "uid_pinned" => ["uid", "pinned"], "uid_commented" => ["uid", "commented"], "uid_starred" => ["uid", "starred"], "uid_mention" => ["uid", "mention"], diff --git a/static/dbview.config.php b/static/dbview.config.php index f0a421484c..9083185d5a 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -86,7 +86,6 @@ "pubmail" => ["post-thread-user", "pubmail"], "visible" => ["post-user", "visible"], "starred" => ["post-thread-user", "starred"], - "pinned" => ["post-thread-user", "pinned"], "unseen" => ["post-user", "unseen"], "deleted" => ["post-user", "deleted"], "origin" => ["post-user", "origin"], @@ -246,7 +245,6 @@ "ignored" => ["post-thread-user", "ignored"], "visible" => ["post-user", "visible"], "starred" => ["post-thread-user", "starred"], - "pinned" => ["post-thread-user", "pinned"], "unseen" => ["post-thread-user", "unseen"], "deleted" => ["post-user", "deleted"], "origin" => ["post-thread-user", "origin"], @@ -627,6 +625,17 @@ "query" => "FROM `post-category` LEFT JOIN `tag` ON `post-category`.`tid` = `tag`.`id`" ], + "collection-view" => [ + "fields" => [ + "uri-id" => ["post-collection", "uri-id"], + "type" => ["post-collection", "type"], + "cid" => ["post", "author-id"], + "received" => ["post", "received"], + "created" => ["post", "created"], + ], + "query" => "FROM `post-collection` + INNER JOIN `post` ON `post-collection`.`uri-id` = `post`.`uri-id`" + ], "tag-view" => [ "fields" => [ "uri-id" => ["post-tag", "uri-id"], diff --git a/update.php b/update.php index 016fe8a2ec..6635bd813c 100644 --- a/update.php +++ b/update.php @@ -1097,3 +1097,14 @@ function update_1451() return Update::SUCCESS; } + +function update_1457() +{ + $pinned = DBA::select('post-thread-user', ['uri-id'], ['pinned' => true]); + while ($post = DBA::fetch($pinned)) { + Post\Collection::add($post['uri-id'], Post\Collection::FEATURED); + } + DBA::close($pinned); + + return Update::SUCCESS; +} diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 301d4cdc45..ec2e69f68f 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2022.05-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-20 20:21+0000\n" +"POT-Creation-Date: 2022-04-08 04:06+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,8 +18,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: mod/cal.php:44 mod/cal.php:48 mod/follow.php:39 mod/redir.php:34 -#: mod/redir.php:175 src/Module/Conversation/Community.php:181 +#: mod/cal.php:44 mod/cal.php:48 mod/follow.php:39 mod/redir.php:36 +#: mod/redir.php:177 src/Module/Conversation/Community.php:181 #: src/Module/Debug/ItemBody.php:37 src/Module/Diaspora/Receive.php:57 #: src/Module/Item/Follow.php:42 src/Module/Item/Ignore.php:41 #: src/Module/Item/Pin.php:42 src/Module/Item/Pin.php:57 @@ -28,16 +28,16 @@ msgid "Access denied." msgstr "" #: mod/cal.php:61 mod/cal.php:78 mod/photos.php:69 mod/photos.php:140 -#: mod/photos.php:804 src/Model/Profile.php:229 src/Module/HCard.php:52 +#: mod/photos.php:804 src/Model/Profile.php:231 src/Module/HCard.php:52 #: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52 #: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50 -#: src/Module/Profile/Media.php:38 src/Module/Profile/Status.php:58 +#: src/Module/Profile/Media.php:38 src/Module/Profile/Status.php:59 #: src/Module/Register.php:267 src/Module/RemoteFollow.php:58 msgid "User not found." msgstr "" #: mod/cal.php:120 mod/display.php:238 src/Module/Profile/Profile.php:94 -#: src/Module/Profile/Profile.php:109 src/Module/Profile/Status.php:109 +#: src/Module/Profile/Profile.php:109 src/Module/Profile/Status.php:110 #: src/Module/Update/Profile.php:56 msgid "Access to this profile has been restricted." msgstr "" @@ -84,7 +84,7 @@ msgstr "" msgid "list" msgstr "" -#: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:659 +#: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:661 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71 #: src/Module/Api/Twitter/ContactEndpoint.php:74 @@ -119,7 +119,7 @@ msgstr "" #: mod/editpost.php:38 mod/events.php:220 mod/follow.php:56 mod/follow.php:130 #: mod/item.php:184 mod/item.php:189 mod/item.php:877 mod/message.php:69 -#: mod/message.php:111 mod/notes.php:44 mod/ostatus_subscribe.php:32 +#: mod/message.php:111 mod/notes.php:44 mod/ostatus_subscribe.php:34 #: mod/photos.php:160 mod/photos.php:897 mod/repair_ostatus.php:31 #: mod/settings.php:49 mod/settings.php:59 mod/settings.php:430 #: mod/suggest.php:34 mod/uimport.php:33 mod/unfollow.php:35 @@ -163,7 +163,7 @@ msgid "Save" msgstr "" #: mod/editpost.php:92 mod/photos.php:1344 src/Content/Conversation.php:326 -#: src/Module/Contact/Poke.php:176 src/Object/Post.php:986 +#: src/Module/Contact/Poke.php:176 src/Object/Post.php:988 msgid "Loading..." msgstr "" @@ -228,8 +228,8 @@ msgstr "" #: mod/editpost.php:107 mod/message.php:200 mod/message.php:358 #: mod/photos.php:1495 mod/wallmessage.php:142 src/Content/Conversation.php:355 -#: src/Content/Conversation.php:690 src/Module/Item/Compose.php:165 -#: src/Object/Post.php:520 +#: src/Content/Conversation.php:699 src/Module/Item/Compose.php:165 +#: src/Object/Post.php:522 msgid "Please wait" msgstr "" @@ -261,7 +261,7 @@ msgstr "" #: mod/editpost.php:128 mod/events.php:517 mod/photos.php:1343 #: mod/photos.php:1399 mod/photos.php:1473 src/Content/Conversation.php:370 -#: src/Module/Item/Compose.php:160 src/Object/Post.php:996 +#: src/Module/Item/Compose.php:160 src/Object/Post.php:998 msgid "Preview" msgstr "" @@ -273,42 +273,42 @@ msgid "Cancel" msgstr "" #: mod/editpost.php:134 src/Content/Conversation.php:331 -#: src/Module/Item/Compose.php:151 src/Object/Post.php:987 +#: src/Module/Item/Compose.php:151 src/Object/Post.php:989 msgid "Bold" msgstr "" #: mod/editpost.php:135 src/Content/Conversation.php:332 -#: src/Module/Item/Compose.php:152 src/Object/Post.php:988 +#: src/Module/Item/Compose.php:152 src/Object/Post.php:990 msgid "Italic" msgstr "" #: mod/editpost.php:136 src/Content/Conversation.php:333 -#: src/Module/Item/Compose.php:153 src/Object/Post.php:989 +#: src/Module/Item/Compose.php:153 src/Object/Post.php:991 msgid "Underline" msgstr "" #: mod/editpost.php:137 src/Content/Conversation.php:334 -#: src/Module/Item/Compose.php:154 src/Object/Post.php:990 +#: src/Module/Item/Compose.php:154 src/Object/Post.php:992 msgid "Quote" msgstr "" #: mod/editpost.php:138 src/Content/Conversation.php:335 -#: src/Module/Item/Compose.php:155 src/Object/Post.php:991 +#: src/Module/Item/Compose.php:155 src/Object/Post.php:993 msgid "Code" msgstr "" #: mod/editpost.php:139 src/Content/Conversation.php:337 -#: src/Module/Item/Compose.php:157 src/Object/Post.php:993 +#: src/Module/Item/Compose.php:157 src/Object/Post.php:995 msgid "Link" msgstr "" #: mod/editpost.php:140 src/Content/Conversation.php:338 -#: src/Module/Item/Compose.php:158 src/Object/Post.php:994 +#: src/Module/Item/Compose.php:158 src/Object/Post.php:996 msgid "Link or Media" msgstr "" #: mod/editpost.php:143 src/Content/Conversation.php:380 -#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:460 +#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:462 #: src/Module/Admin/Logs/View.php:93 msgid "Message" msgstr "" @@ -385,7 +385,7 @@ msgstr "" #: mod/events.php:508 src/Content/Widget/VCard.php:98 src/Model/Event.php:80 #: src/Model/Event.php:107 src/Model/Event.php:466 src/Model/Event.php:915 -#: src/Model/Profile.php:368 src/Module/Contact/Profile.php:369 +#: src/Model/Profile.php:370 src/Module/Contact/Profile.php:369 #: src/Module/Directory.php:147 src/Module/Notifications/Introductions.php:185 #: src/Module/Profile/Profile.php:194 msgid "Location:" @@ -411,7 +411,7 @@ msgstr "" #: src/Module/Install.php:252 src/Module/Install.php:294 #: src/Module/Install.php:331 src/Module/Invite.php:177 #: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:247 -#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:985 +#: src/Module/Settings/Profile/Index.php:222 src/Object/Post.php:987 #: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160 #: view/theme/quattro/config.php:71 view/theme/vier/config.php:119 msgid "Submit" @@ -465,7 +465,7 @@ msgid "OStatus support is disabled. Contact can't be added." msgstr "" #: mod/follow.php:138 src/Content/Item.php:455 src/Content/Widget.php:76 -#: src/Model/Contact.php:1083 src/Model/Contact.php:1095 +#: src/Model/Contact.php:1080 src/Model/Contact.php:1092 #: view/theme/vier/theme.php:172 msgid "Connect/Follow" msgstr "" @@ -809,51 +809,51 @@ msgstr "" msgid "Personal notes are visible only by yourself." msgstr "" -#: mod/ostatus_subscribe.php:37 +#: mod/ostatus_subscribe.php:39 msgid "Subscribing to contacts" msgstr "" -#: mod/ostatus_subscribe.php:47 +#: mod/ostatus_subscribe.php:49 msgid "No contact provided." msgstr "" -#: mod/ostatus_subscribe.php:53 +#: mod/ostatus_subscribe.php:55 msgid "Couldn't fetch information for contact." msgstr "" -#: mod/ostatus_subscribe.php:64 +#: mod/ostatus_subscribe.php:66 msgid "Couldn't fetch friends for contact." msgstr "" -#: mod/ostatus_subscribe.php:70 mod/ostatus_subscribe.php:81 +#: mod/ostatus_subscribe.php:72 mod/ostatus_subscribe.php:83 msgid "Couldn't fetch following contacts." msgstr "" -#: mod/ostatus_subscribe.php:76 +#: mod/ostatus_subscribe.php:78 msgid "Couldn't fetch remote profile." msgstr "" -#: mod/ostatus_subscribe.php:86 +#: mod/ostatus_subscribe.php:88 msgid "Unsupported network" msgstr "" -#: mod/ostatus_subscribe.php:102 mod/repair_ostatus.php:51 +#: mod/ostatus_subscribe.php:104 mod/repair_ostatus.php:51 msgid "Done" msgstr "" -#: mod/ostatus_subscribe.php:116 +#: mod/ostatus_subscribe.php:118 msgid "success" msgstr "" -#: mod/ostatus_subscribe.php:118 +#: mod/ostatus_subscribe.php:120 msgid "failed" msgstr "" -#: mod/ostatus_subscribe.php:121 +#: mod/ostatus_subscribe.php:123 msgid "ignored" msgstr "" -#: mod/ostatus_subscribe.php:126 mod/repair_ostatus.php:57 +#: mod/ostatus_subscribe.php:128 mod/repair_ostatus.php:57 msgid "Keep this window open until done." msgstr "" @@ -1066,12 +1066,12 @@ msgstr "" #: mod/photos.php:1339 mod/photos.php:1395 mod/photos.php:1469 #: src/Module/Contact.php:544 src/Module/Item/Compose.php:148 -#: src/Object/Post.php:982 +#: src/Object/Post.php:984 msgid "This is you" msgstr "" #: mod/photos.php:1341 mod/photos.php:1397 mod/photos.php:1471 -#: src/Object/Post.php:514 src/Object/Post.php:984 +#: src/Object/Post.php:516 src/Object/Post.php:986 msgid "Comment" msgstr "" @@ -1109,11 +1109,11 @@ msgstr "" msgid "View Album" msgstr "" -#: mod/redir.php:49 mod/redir.php:102 +#: mod/redir.php:51 mod/redir.php:104 msgid "Bad Request." msgstr "" -#: mod/redir.php:55 mod/redir.php:129 src/Module/Contact/Advanced.php:70 +#: mod/redir.php:57 mod/redir.php:131 src/Module/Contact/Advanced.php:70 #: src/Module/Contact/Advanced.php:109 src/Module/Contact/Contacts.php:55 #: src/Module/Contact/Conversations.php:78 #: src/Module/Contact/Conversations.php:83 @@ -2068,7 +2068,7 @@ msgstr "" msgid "File upload failed." msgstr "" -#: mod/wall_upload.php:221 src/Model/Photo.php:1049 +#: mod/wall_upload.php:221 src/Model/Photo.php:1053 msgid "Wall Photos" msgstr "" @@ -2391,7 +2391,7 @@ msgid "%s attends maybe." msgstr "" #: src/Content/Conversation.php:222 src/Content/Conversation.php:260 -#: src/Content/Conversation.php:849 +#: src/Content/Conversation.php:858 #, php-format msgid "%s reshared this." msgstr "" @@ -2465,7 +2465,7 @@ msgid "Visible to everybody" msgstr "" #: src/Content/Conversation.php:308 src/Module/Item/Compose.php:159 -#: src/Object/Post.php:995 +#: src/Object/Post.php:997 msgid "Please enter a image/video/audio/webpage URL:" msgstr "" @@ -2489,12 +2489,12 @@ msgstr "" msgid "New Post" msgstr "" -#: src/Content/Conversation.php:325 src/Object/Post.php:497 +#: src/Content/Conversation.php:325 src/Object/Post.php:499 msgid "Share" msgstr "" #: src/Content/Conversation.php:336 src/Module/Item/Compose.php:156 -#: src/Object/Post.php:992 +#: src/Object/Post.php:994 msgid "Image" msgstr "" @@ -2506,88 +2506,92 @@ msgstr "" msgid "Scheduled at" msgstr "" -#: src/Content/Conversation.php:651 src/Object/Post.php:468 -#: src/Object/Post.php:469 +#: src/Content/Conversation.php:643 src/Object/Post.php:235 +msgid "Pinned item" +msgstr "" + +#: src/Content/Conversation.php:659 src/Object/Post.php:470 +#: src/Object/Post.php:471 #, php-format msgid "View %s's profile @ %s" msgstr "" -#: src/Content/Conversation.php:664 src/Object/Post.php:456 +#: src/Content/Conversation.php:672 src/Object/Post.php:458 msgid "Categories:" msgstr "" -#: src/Content/Conversation.php:665 src/Object/Post.php:457 +#: src/Content/Conversation.php:673 src/Object/Post.php:459 msgid "Filed under:" msgstr "" -#: src/Content/Conversation.php:673 src/Object/Post.php:482 +#: src/Content/Conversation.php:681 src/Object/Post.php:484 #, php-format msgid "%s from %s" msgstr "" -#: src/Content/Conversation.php:688 +#: src/Content/Conversation.php:697 msgid "View in context" msgstr "" -#: src/Content/Conversation.php:753 +#: src/Content/Conversation.php:762 msgid "remove" msgstr "" -#: src/Content/Conversation.php:757 +#: src/Content/Conversation.php:766 msgid "Delete Selected Items" msgstr "" -#: src/Content/Conversation.php:821 src/Content/Conversation.php:824 -#: src/Content/Conversation.php:827 src/Content/Conversation.php:830 +#: src/Content/Conversation.php:830 src/Content/Conversation.php:833 +#: src/Content/Conversation.php:836 src/Content/Conversation.php:839 #, php-format msgid "You had been addressed (%s)." msgstr "" -#: src/Content/Conversation.php:833 +#: src/Content/Conversation.php:842 #, php-format msgid "You are following %s." msgstr "" -#: src/Content/Conversation.php:836 +#: src/Content/Conversation.php:845 msgid "Tagged" msgstr "" -#: src/Content/Conversation.php:851 +#: src/Content/Conversation.php:860 msgid "Reshared" msgstr "" -#: src/Content/Conversation.php:851 +#: src/Content/Conversation.php:860 #, php-format msgid "Reshared by %s <%s>" msgstr "" -#: src/Content/Conversation.php:854 +#: src/Content/Conversation.php:863 #, php-format msgid "%s is participating in this thread." msgstr "" -#: src/Content/Conversation.php:857 +#: src/Content/Conversation.php:866 msgid "Stored" msgstr "" -#: src/Content/Conversation.php:860 +#: src/Content/Conversation.php:869 msgid "Global" msgstr "" -#: src/Content/Conversation.php:863 +#: src/Content/Conversation.php:872 msgid "Relayed" msgstr "" -#: src/Content/Conversation.php:863 +#: src/Content/Conversation.php:872 #, php-format msgid "Relayed by %s <%s>" msgstr "" -#: src/Content/Conversation.php:866 +#: src/Content/Conversation.php:875 msgid "Fetched" msgstr "" -#: src/Content/Conversation.php:866 +#: src/Content/Conversation.php:875 #, php-format msgid "Fetched because of %s <%s>" msgstr "" @@ -2690,20 +2694,20 @@ msgstr "" msgid "Display membership date in profile" msgstr "" -#: src/Content/ForumManager.php:145 src/Content/Nav.php:239 +#: src/Content/ForumManager.php:151 src/Content/Nav.php:239 #: src/Content/Text/HTML.php:896 src/Content/Widget.php:520 msgid "Forums" msgstr "" -#: src/Content/ForumManager.php:147 +#: src/Content/ForumManager.php:153 msgid "External link to forum" msgstr "" -#: src/Content/ForumManager.php:150 src/Content/Widget.php:499 +#: src/Content/ForumManager.php:156 src/Content/Widget.php:499 msgid "show less" msgstr "" -#: src/Content/ForumManager.php:151 src/Content/Widget.php:401 +#: src/Content/ForumManager.php:157 src/Content/Widget.php:401 #: src/Content/Widget.php:500 msgid "show more" msgstr "" @@ -2721,31 +2725,31 @@ msgstr "" msgid "Follow Thread" msgstr "" -#: src/Content/Item.php:435 src/Model/Contact.php:1088 +#: src/Content/Item.php:435 src/Model/Contact.php:1085 msgid "View Status" msgstr "" -#: src/Content/Item.php:436 src/Content/Item.php:458 src/Model/Contact.php:1022 -#: src/Model/Contact.php:1080 src/Model/Contact.php:1089 +#: src/Content/Item.php:436 src/Content/Item.php:458 src/Model/Contact.php:1019 +#: src/Model/Contact.php:1077 src/Model/Contact.php:1086 #: src/Module/Directory.php:157 src/Module/Settings/Profile/Index.php:225 msgid "View Profile" msgstr "" -#: src/Content/Item.php:437 src/Model/Contact.php:1090 +#: src/Content/Item.php:437 src/Model/Contact.php:1087 msgid "View Photos" msgstr "" -#: src/Content/Item.php:438 src/Model/Contact.php:1081 -#: src/Model/Contact.php:1091 +#: src/Content/Item.php:438 src/Model/Contact.php:1078 +#: src/Model/Contact.php:1088 msgid "Network Posts" msgstr "" -#: src/Content/Item.php:439 src/Model/Contact.php:1082 -#: src/Model/Contact.php:1092 +#: src/Content/Item.php:439 src/Model/Contact.php:1079 +#: src/Model/Contact.php:1089 msgid "View Contact" msgstr "" -#: src/Content/Item.php:440 src/Model/Contact.php:1093 +#: src/Content/Item.php:440 src/Model/Contact.php:1090 msgid "Send PM" msgstr "" @@ -2764,11 +2768,11 @@ msgstr "" msgid "Ignore" msgstr "" -#: src/Content/Item.php:446 src/Object/Post.php:443 +#: src/Content/Item.php:446 src/Object/Post.php:445 msgid "Languages" msgstr "" -#: src/Content/Item.php:450 src/Model/Contact.php:1094 +#: src/Content/Item.php:450 src/Model/Contact.php:1091 msgid "Poke" msgstr "" @@ -3029,11 +3033,11 @@ msgstr "" msgid "Site map" msgstr "" -#: src/Content/OEmbed.php:298 +#: src/Content/OEmbed.php:299 msgid "Embedding disabled" msgstr "" -#: src/Content/OEmbed.php:416 +#: src/Content/OEmbed.php:417 msgid "Embedded content" msgstr "" @@ -3053,39 +3057,39 @@ msgstr "" msgid "last" msgstr "" -#: src/Content/Text/BBCode.php:987 src/Content/Text/BBCode.php:1781 -#: src/Content/Text/BBCode.php:1782 +#: src/Content/Text/BBCode.php:990 src/Content/Text/BBCode.php:1784 +#: src/Content/Text/BBCode.php:1785 msgid "Image/photo" msgstr "" -#: src/Content/Text/BBCode.php:1160 +#: src/Content/Text/BBCode.php:1163 #, php-format msgid "" "%2$s %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1185 src/Model/Item.php:3204 -#: src/Model/Item.php:3210 src/Model/Item.php:3211 +#: src/Content/Text/BBCode.php:1188 src/Model/Item.php:3210 +#: src/Model/Item.php:3216 src/Model/Item.php:3217 msgid "Link to source" msgstr "" -#: src/Content/Text/BBCode.php:1699 src/Content/Text/HTML.php:933 +#: src/Content/Text/BBCode.php:1702 src/Content/Text/HTML.php:933 msgid "Click to open/close" msgstr "" -#: src/Content/Text/BBCode.php:1730 +#: src/Content/Text/BBCode.php:1733 msgid "$1 wrote:" msgstr "" -#: src/Content/Text/BBCode.php:1786 src/Content/Text/BBCode.php:1787 +#: src/Content/Text/BBCode.php:1789 src/Content/Text/BBCode.php:1790 msgid "Encrypted content" msgstr "" -#: src/Content/Text/BBCode.php:2002 +#: src/Content/Text/BBCode.php:2005 msgid "Invalid source protocol" msgstr "" -#: src/Content/Text/BBCode.php:2017 +#: src/Content/Text/BBCode.php:2020 msgid "Invalid link protocol" msgstr "" @@ -3098,7 +3102,7 @@ msgid "The end" msgstr "" #: src/Content/Text/HTML.php:875 src/Content/Widget/VCard.php:103 -#: src/Model/Profile.php:454 +#: src/Model/Profile.php:456 msgid "Follow" msgstr "" @@ -3220,7 +3224,7 @@ msgstr "" msgid "Organisations" msgstr "" -#: src/Content/Widget.php:519 src/Model/Contact.php:1498 +#: src/Content/Widget.php:519 src/Model/Contact.php:1510 msgid "News" msgstr "" @@ -3274,22 +3278,22 @@ msgstr[1] "" msgid "More Trending Tags" msgstr "" -#: src/Content/Widget/VCard.php:96 src/Model/Profile.php:373 +#: src/Content/Widget/VCard.php:96 src/Model/Profile.php:375 #: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:176 msgid "XMPP:" msgstr "" -#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:374 +#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:376 #: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:180 msgid "Matrix:" msgstr "" -#: src/Content/Widget/VCard.php:101 src/Model/Profile.php:466 +#: src/Content/Widget/VCard.php:101 src/Model/Profile.php:468 #: src/Module/Notifications/Introductions.php:199 msgid "Network:" msgstr "" -#: src/Content/Widget/VCard.php:105 src/Model/Profile.php:456 +#: src/Content/Widget/VCard.php:105 src/Model/Profile.php:458 msgid "Unfollow" msgstr "" @@ -4044,81 +4048,81 @@ msgstr "" msgid "Legacy module file not found: %s" msgstr "" -#: src/Model/Contact.php:1084 src/Model/Contact.php:1096 +#: src/Model/Contact.php:1081 src/Model/Contact.php:1093 msgid "UnFollow" msgstr "" -#: src/Model/Contact.php:1102 src/Module/Admin/Users/Pending.php:107 +#: src/Model/Contact.php:1099 src/Module/Admin/Users/Pending.php:107 #: src/Module/Notifications/Introductions.php:130 #: src/Module/Notifications/Introductions.php:202 msgid "Approve" msgstr "" -#: src/Model/Contact.php:1494 +#: src/Model/Contact.php:1506 msgid "Organisation" msgstr "" -#: src/Model/Contact.php:1502 +#: src/Model/Contact.php:1514 msgid "Forum" msgstr "" -#: src/Model/Contact.php:2437 +#: src/Model/Contact.php:2453 msgid "Disallowed profile URL." msgstr "" -#: src/Model/Contact.php:2442 src/Module/Friendica.php:81 +#: src/Model/Contact.php:2458 src/Module/Friendica.php:81 msgid "Blocked domain" msgstr "" -#: src/Model/Contact.php:2447 +#: src/Model/Contact.php:2463 msgid "Connect URL missing." msgstr "" -#: src/Model/Contact.php:2456 +#: src/Model/Contact.php:2472 msgid "" "The contact could not be added. Please check the relevant network " "credentials in your Settings -> Social Networks page." msgstr "" -#: src/Model/Contact.php:2493 +#: src/Model/Contact.php:2509 msgid "The profile address specified does not provide adequate information." msgstr "" -#: src/Model/Contact.php:2495 +#: src/Model/Contact.php:2511 msgid "No compatible communication protocols or feeds were discovered." msgstr "" -#: src/Model/Contact.php:2498 +#: src/Model/Contact.php:2514 msgid "An author or name was not found." msgstr "" -#: src/Model/Contact.php:2501 +#: src/Model/Contact.php:2517 msgid "No browser URL could be matched to this address." msgstr "" -#: src/Model/Contact.php:2504 +#: src/Model/Contact.php:2520 msgid "" "Unable to match @-style Identity Address with a known protocol or email " "contact." msgstr "" -#: src/Model/Contact.php:2505 +#: src/Model/Contact.php:2521 msgid "Use mailto: in front of address to force email check." msgstr "" -#: src/Model/Contact.php:2511 +#: src/Model/Contact.php:2527 msgid "" "The profile address specified belongs to a network which has been disabled " "on this site." msgstr "" -#: src/Model/Contact.php:2516 +#: src/Model/Contact.php:2532 msgid "" "Limited profile. This person will be unable to receive direct/personal " "notifications from you." msgstr "" -#: src/Model/Contact.php:2575 +#: src/Model/Contact.php:2591 msgid "Unable to retrieve contact information." msgstr "" @@ -4264,7 +4268,7 @@ msgstr "" msgid "bytes" msgstr "" -#: src/Model/Item.php:3198 src/Model/Item.php:3199 +#: src/Model/Item.php:3204 src/Model/Item.php:3205 msgid "View on separate page" msgstr "" @@ -4272,282 +4276,282 @@ msgstr "" msgid "[no subject]" msgstr "" -#: src/Model/Profile.php:356 src/Module/Profile/Profile.php:256 +#: src/Model/Profile.php:358 src/Module/Profile/Profile.php:256 #: src/Module/Profile/Profile.php:258 msgid "Edit profile" msgstr "" -#: src/Model/Profile.php:358 +#: src/Model/Profile.php:360 msgid "Change profile photo" msgstr "" -#: src/Model/Profile.php:371 src/Module/Directory.php:152 +#: src/Model/Profile.php:373 src/Module/Directory.php:152 #: src/Module/Profile/Profile.php:184 msgid "Homepage:" msgstr "" -#: src/Model/Profile.php:372 src/Module/Contact/Profile.php:375 +#: src/Model/Profile.php:374 src/Module/Contact/Profile.php:375 #: src/Module/Notifications/Introductions.php:187 msgid "About:" msgstr "" -#: src/Model/Profile.php:458 +#: src/Model/Profile.php:460 msgid "Atom feed" msgstr "" -#: src/Model/Profile.php:502 +#: src/Model/Profile.php:504 msgid "F d" msgstr "" -#: src/Model/Profile.php:566 src/Model/Profile.php:650 +#: src/Model/Profile.php:568 src/Model/Profile.php:652 msgid "[today]" msgstr "" -#: src/Model/Profile.php:575 +#: src/Model/Profile.php:577 msgid "Birthday Reminders" msgstr "" -#: src/Model/Profile.php:576 +#: src/Model/Profile.php:578 msgid "Birthdays this week:" msgstr "" -#: src/Model/Profile.php:599 +#: src/Model/Profile.php:601 msgid "g A l F d" msgstr "" -#: src/Model/Profile.php:637 +#: src/Model/Profile.php:639 msgid "[No description]" msgstr "" -#: src/Model/Profile.php:663 +#: src/Model/Profile.php:665 msgid "Event Reminders" msgstr "" -#: src/Model/Profile.php:664 +#: src/Model/Profile.php:666 msgid "Upcoming events the next 7 days:" msgstr "" -#: src/Model/Profile.php:852 +#: src/Model/Profile.php:854 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" -#: src/Model/Profile.php:984 +#: src/Model/Profile.php:986 msgid "Hometown:" msgstr "" -#: src/Model/Profile.php:985 +#: src/Model/Profile.php:987 msgid "Marital Status:" msgstr "" -#: src/Model/Profile.php:986 +#: src/Model/Profile.php:988 msgid "With:" msgstr "" -#: src/Model/Profile.php:987 +#: src/Model/Profile.php:989 msgid "Since:" msgstr "" -#: src/Model/Profile.php:988 +#: src/Model/Profile.php:990 msgid "Sexual Preference:" msgstr "" -#: src/Model/Profile.php:989 +#: src/Model/Profile.php:991 msgid "Political Views:" msgstr "" -#: src/Model/Profile.php:990 +#: src/Model/Profile.php:992 msgid "Religious Views:" msgstr "" -#: src/Model/Profile.php:991 +#: src/Model/Profile.php:993 msgid "Likes:" msgstr "" -#: src/Model/Profile.php:992 +#: src/Model/Profile.php:994 msgid "Dislikes:" msgstr "" -#: src/Model/Profile.php:993 +#: src/Model/Profile.php:995 msgid "Title/Description:" msgstr "" -#: src/Model/Profile.php:994 src/Module/Admin/Summary.php:233 +#: src/Model/Profile.php:996 src/Module/Admin/Summary.php:235 msgid "Summary" msgstr "" -#: src/Model/Profile.php:995 +#: src/Model/Profile.php:997 msgid "Musical interests" msgstr "" -#: src/Model/Profile.php:996 +#: src/Model/Profile.php:998 msgid "Books, literature" msgstr "" -#: src/Model/Profile.php:997 +#: src/Model/Profile.php:999 msgid "Television" msgstr "" -#: src/Model/Profile.php:998 +#: src/Model/Profile.php:1000 msgid "Film/dance/culture/entertainment" msgstr "" -#: src/Model/Profile.php:999 +#: src/Model/Profile.php:1001 msgid "Hobbies/Interests" msgstr "" -#: src/Model/Profile.php:1000 +#: src/Model/Profile.php:1002 msgid "Love/romance" msgstr "" -#: src/Model/Profile.php:1001 +#: src/Model/Profile.php:1003 msgid "Work/employment" msgstr "" -#: src/Model/Profile.php:1002 +#: src/Model/Profile.php:1004 msgid "School/education" msgstr "" -#: src/Model/Profile.php:1003 +#: src/Model/Profile.php:1005 msgid "Contact information and Social Networks" msgstr "" -#: src/Model/User.php:208 src/Model/User.php:1056 +#: src/Model/User.php:210 src/Model/User.php:1058 msgid "SERIOUS ERROR: Generation of security keys failed." msgstr "" -#: src/Model/User.php:568 src/Model/User.php:601 +#: src/Model/User.php:570 src/Model/User.php:603 msgid "Login failed" msgstr "" -#: src/Model/User.php:633 +#: src/Model/User.php:635 msgid "Not enough information to authenticate" msgstr "" -#: src/Model/User.php:728 +#: src/Model/User.php:730 msgid "Password can't be empty" msgstr "" -#: src/Model/User.php:747 +#: src/Model/User.php:749 msgid "Empty passwords are not allowed." msgstr "" -#: src/Model/User.php:751 +#: src/Model/User.php:753 msgid "" "The new password has been exposed in a public data dump, please choose " "another." msgstr "" -#: src/Model/User.php:757 +#: src/Model/User.php:759 msgid "" "The password can't contain accentuated letters, white spaces or colons (:)" msgstr "" -#: src/Model/User.php:936 +#: src/Model/User.php:938 msgid "Passwords do not match. Password unchanged." msgstr "" -#: src/Model/User.php:943 +#: src/Model/User.php:945 msgid "An invitation is required." msgstr "" -#: src/Model/User.php:947 +#: src/Model/User.php:949 msgid "Invitation could not be verified." msgstr "" -#: src/Model/User.php:955 +#: src/Model/User.php:957 msgid "Invalid OpenID url" msgstr "" -#: src/Model/User.php:968 src/Security/Authentication.php:235 +#: src/Model/User.php:970 src/Security/Authentication.php:235 msgid "" "We encountered a problem while logging in with the OpenID you provided. " "Please check the correct spelling of the ID." msgstr "" -#: src/Model/User.php:968 src/Security/Authentication.php:235 +#: src/Model/User.php:970 src/Security/Authentication.php:235 msgid "The error message was:" msgstr "" -#: src/Model/User.php:974 +#: src/Model/User.php:976 msgid "Please enter the required information." msgstr "" -#: src/Model/User.php:988 +#: src/Model/User.php:990 #, php-format msgid "" "system.username_min_length (%s) and system.username_max_length (%s) are " "excluding each other, swapping values." msgstr "" -#: src/Model/User.php:995 +#: src/Model/User.php:997 #, php-format msgid "Username should be at least %s character." msgid_plural "Username should be at least %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:999 +#: src/Model/User.php:1001 #, php-format msgid "Username should be at most %s character." msgid_plural "Username should be at most %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:1007 +#: src/Model/User.php:1009 msgid "That doesn't appear to be your full (First Last) name." msgstr "" -#: src/Model/User.php:1012 +#: src/Model/User.php:1014 msgid "Your email domain is not among those allowed on this site." msgstr "" -#: src/Model/User.php:1016 +#: src/Model/User.php:1018 msgid "Not a valid email address." msgstr "" -#: src/Model/User.php:1019 +#: src/Model/User.php:1021 msgid "The nickname was blocked from registration by the nodes admin." msgstr "" -#: src/Model/User.php:1023 src/Model/User.php:1031 +#: src/Model/User.php:1025 src/Model/User.php:1033 msgid "Cannot use that email." msgstr "" -#: src/Model/User.php:1038 +#: src/Model/User.php:1040 msgid "Your nickname can only contain a-z, 0-9 and _." msgstr "" -#: src/Model/User.php:1046 src/Model/User.php:1103 +#: src/Model/User.php:1048 src/Model/User.php:1105 msgid "Nickname is already registered. Please choose another." msgstr "" -#: src/Model/User.php:1090 src/Model/User.php:1094 +#: src/Model/User.php:1092 src/Model/User.php:1096 msgid "An error occurred during registration. Please try again." msgstr "" -#: src/Model/User.php:1117 +#: src/Model/User.php:1119 msgid "An error occurred creating your default profile. Please try again." msgstr "" -#: src/Model/User.php:1124 +#: src/Model/User.php:1126 msgid "An error occurred creating your self contact. Please try again." msgstr "" -#: src/Model/User.php:1129 +#: src/Model/User.php:1131 msgid "Friends" msgstr "" -#: src/Model/User.php:1133 +#: src/Model/User.php:1135 msgid "" "An error occurred creating your default contact group. Please try again." msgstr "" -#: src/Model/User.php:1171 +#: src/Model/User.php:1174 msgid "Profile Photos" msgstr "" -#: src/Model/User.php:1365 +#: src/Model/User.php:1368 #, php-format msgid "" "\n" @@ -4555,7 +4559,7 @@ msgid "" "\t\t\tthe administrator of %2$s has set up an account for you." msgstr "" -#: src/Model/User.php:1368 +#: src/Model/User.php:1371 #, php-format msgid "" "\n" @@ -4592,12 +4596,12 @@ msgid "" "\t\tThank you and welcome to %4$s." msgstr "" -#: src/Model/User.php:1401 src/Model/User.php:1508 +#: src/Model/User.php:1404 src/Model/User.php:1511 #, php-format msgid "Registration details for %s" msgstr "" -#: src/Model/User.php:1421 +#: src/Model/User.php:1424 #, php-format msgid "" "\n" @@ -4613,12 +4617,12 @@ msgid "" "\t\t" msgstr "" -#: src/Model/User.php:1440 +#: src/Model/User.php:1443 #, php-format msgid "Registration at %s" msgstr "" -#: src/Model/User.php:1464 +#: src/Model/User.php:1467 #, php-format msgid "" "\n" @@ -4627,7 +4631,7 @@ msgid "" "\t\t\t" msgstr "" -#: src/Model/User.php:1472 +#: src/Model/User.php:1475 #, php-format msgid "" "\n" @@ -4697,7 +4701,7 @@ msgstr "" #: src/Module/Admin/Federation.php:194 src/Module/Admin/Item/Delete.php:64 #: src/Module/Admin/Logs/Settings.php:79 src/Module/Admin/Logs/View.php:84 #: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:498 -#: src/Module/Admin/Storage.php:138 src/Module/Admin/Summary.php:232 +#: src/Module/Admin/Storage.php:138 src/Module/Admin/Summary.php:234 #: src/Module/Admin/Themes/Details.php:90 src/Module/Admin/Themes/Index.php:111 #: src/Module/Admin/Tos.php:75 src/Module/Admin/Users/Active.php:136 #: src/Module/Admin/Users/Blocked.php:137 src/Module/Admin/Users/Create.php:61 @@ -6388,12 +6392,12 @@ msgstr "" msgid "Database (legacy)" msgstr "" -#: src/Module/Admin/Summary.php:53 +#: src/Module/Admin/Summary.php:55 #, php-format msgid "Template engine (%s) error: %s" msgstr "" -#: src/Module/Admin/Summary.php:57 +#: src/Module/Admin/Summary.php:59 #, php-format msgid "" "Your DB still runs with MyISAM tables. You should change the engine type to " @@ -6404,7 +6408,7 @@ msgid "" "automatic conversion.
" msgstr "" -#: src/Module/Admin/Summary.php:62 +#: src/Module/Admin/Summary.php:64 #, php-format msgid "" "Your DB still runs with InnoDB tables in the Antelope file format. You " @@ -6415,7 +6419,7 @@ msgid "" "installation for an automatic conversion.
" msgstr "" -#: src/Module/Admin/Summary.php:72 +#: src/Module/Admin/Summary.php:74 #, php-format msgid "" "Your table_definition_cache is too low (%d). This can lead to the database " @@ -6423,39 +6427,39 @@ msgid "" "to %d. See here for more information.
" msgstr "" -#: src/Module/Admin/Summary.php:82 +#: src/Module/Admin/Summary.php:84 #, php-format msgid "" "There is a new version of Friendica available for download. Your current " "version is %1$s, upstream version is %2$s" msgstr "" -#: src/Module/Admin/Summary.php:91 +#: src/Module/Admin/Summary.php:93 msgid "" "The database update failed. Please run \"php bin/console.php dbstructure " "update\" from the command line and have a look at the errors that might " "appear." msgstr "" -#: src/Module/Admin/Summary.php:95 +#: src/Module/Admin/Summary.php:97 msgid "" "The last update failed. Please run \"php bin/console.php dbstructure update" "\" from the command line and have a look at the errors that might appear. " "(Some of the errors are possibly inside the logfile.)" msgstr "" -#: src/Module/Admin/Summary.php:100 +#: src/Module/Admin/Summary.php:102 msgid "The worker was never executed. Please check your database structure!" msgstr "" -#: src/Module/Admin/Summary.php:102 +#: src/Module/Admin/Summary.php:104 #, php-format msgid "" "The last worker execution was on %s UTC. This is older than one hour. Please " "check your crontab settings." msgstr "" -#: src/Module/Admin/Summary.php:107 +#: src/Module/Admin/Summary.php:109 #, php-format msgid "" "Friendica's configuration now is stored in config/local.config.php, please " @@ -6464,7 +6468,7 @@ msgid "" "with the transition." msgstr "" -#: src/Module/Admin/Summary.php:111 +#: src/Module/Admin/Summary.php:113 #, php-format msgid "" "Friendica's configuration now is stored in config/local.config.php, please " @@ -6473,7 +6477,7 @@ msgid "" "with the transition." msgstr "" -#: src/Module/Admin/Summary.php:117 +#: src/Module/Admin/Summary.php:119 #, php-format msgid "" "%s is not reachable on your system. This is a severe " @@ -6481,82 +6485,82 @@ msgid "" "href=\"%s\">the installation page for help." msgstr "" -#: src/Module/Admin/Summary.php:135 +#: src/Module/Admin/Summary.php:137 #, php-format msgid "The logfile '%s' is not usable. No logging possible (error: '%s')" msgstr "" -#: src/Module/Admin/Summary.php:149 +#: src/Module/Admin/Summary.php:151 #, php-format msgid "The debug logfile '%s' is not usable. No logging possible (error: '%s')" msgstr "" -#: src/Module/Admin/Summary.php:165 +#: src/Module/Admin/Summary.php:167 #, php-format msgid "" "Friendica's system.basepath was updated from '%s' to '%s'. Please remove the " "system.basepath from your db to avoid differences." msgstr "" -#: src/Module/Admin/Summary.php:173 +#: src/Module/Admin/Summary.php:175 #, php-format msgid "" "Friendica's current system.basepath '%s' is wrong and the config file '%s' " "isn't used." msgstr "" -#: src/Module/Admin/Summary.php:181 +#: src/Module/Admin/Summary.php:183 #, php-format msgid "" "Friendica's current system.basepath '%s' is not equal to the config file " "'%s'. Please fix your configuration." msgstr "" -#: src/Module/Admin/Summary.php:188 +#: src/Module/Admin/Summary.php:190 msgid "Normal Account" msgstr "" -#: src/Module/Admin/Summary.php:189 +#: src/Module/Admin/Summary.php:191 msgid "Automatic Follower Account" msgstr "" -#: src/Module/Admin/Summary.php:190 +#: src/Module/Admin/Summary.php:192 msgid "Public Forum Account" msgstr "" -#: src/Module/Admin/Summary.php:191 +#: src/Module/Admin/Summary.php:193 msgid "Automatic Friend Account" msgstr "" -#: src/Module/Admin/Summary.php:192 +#: src/Module/Admin/Summary.php:194 msgid "Blog Account" msgstr "" -#: src/Module/Admin/Summary.php:193 +#: src/Module/Admin/Summary.php:195 msgid "Private Forum Account" msgstr "" -#: src/Module/Admin/Summary.php:213 +#: src/Module/Admin/Summary.php:215 msgid "Message queues" msgstr "" -#: src/Module/Admin/Summary.php:219 +#: src/Module/Admin/Summary.php:221 msgid "Server Settings" msgstr "" -#: src/Module/Admin/Summary.php:235 +#: src/Module/Admin/Summary.php:237 msgid "Registered users" msgstr "" -#: src/Module/Admin/Summary.php:237 +#: src/Module/Admin/Summary.php:239 msgid "Pending registrations" msgstr "" -#: src/Module/Admin/Summary.php:238 +#: src/Module/Admin/Summary.php:240 msgid "Version" msgstr "" -#: src/Module/Admin/Summary.php:242 +#: src/Module/Admin/Summary.php:244 msgid "Active addons" msgstr "" @@ -6853,11 +6857,6 @@ msgstr "" msgid "Only starting posts can be muted" msgstr "" -#: src/Module/Api/Mastodon/Statuses/Pin.php:50 -#: src/Module/Api/Mastodon/Statuses/Unpin.php:50 -msgid "Only starting posts can be pinned" -msgstr "" - #: src/Module/Api/Mastodon/Statuses/Reblog.php:53 #, php-format msgid "Posts from %s can't be shared" @@ -7844,12 +7843,12 @@ msgstr "" msgid "Twitter Source / Tweet URL (requires API key)" msgstr "" -#: src/Module/Debug/Feed.php:50 src/Module/Filer/SaveTag.php:46 +#: src/Module/Debug/Feed.php:51 src/Module/Filer/SaveTag.php:46 #: src/Module/Settings/Profile/Index.php:141 msgid "You must be logged in to use this module" msgstr "" -#: src/Module/Debug/Feed.php:75 +#: src/Module/Debug/Feed.php:76 msgid "Source URL" msgstr "" @@ -8597,21 +8596,21 @@ msgstr "" msgid "BCC: %s
" msgstr "" -#: src/Module/Photo.php:123 +#: src/Module/Photo.php:124 msgid "The Photo is not available." msgstr "" -#: src/Module/Photo.php:136 +#: src/Module/Photo.php:137 #, php-format msgid "The Photo with id %s is not available." msgstr "" -#: src/Module/Photo.php:169 +#: src/Module/Photo.php:170 #, php-format msgid "Invalid external resource with url %s." msgstr "" -#: src/Module/Photo.php:171 +#: src/Module/Photo.php:172 #, php-format msgid "Invalid photo with id %s." msgstr "" @@ -8673,20 +8672,20 @@ msgid "View as" msgstr "" #: src/Module/Profile/Profile.php:326 src/Module/Profile/Profile.php:329 -#: src/Module/Profile/Status.php:65 src/Module/Profile/Status.php:68 -#: src/Protocol/Feed.php:1017 src/Protocol/OStatus.php:1245 +#: src/Module/Profile/Status.php:66 src/Module/Profile/Status.php:69 +#: src/Protocol/Feed.php:1017 src/Protocol/OStatus.php:1246 #, php-format msgid "%s's timeline" msgstr "" -#: src/Module/Profile/Profile.php:327 src/Module/Profile/Status.php:66 -#: src/Protocol/Feed.php:1021 src/Protocol/OStatus.php:1249 +#: src/Module/Profile/Profile.php:327 src/Module/Profile/Status.php:67 +#: src/Protocol/Feed.php:1021 src/Protocol/OStatus.php:1250 #, php-format msgid "%s's posts" msgstr "" -#: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:67 -#: src/Protocol/Feed.php:1024 src/Protocol/OStatus.php:1252 +#: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:68 +#: src/Protocol/Feed.php:1024 src/Protocol/OStatus.php:1253 #, php-format msgid "%s's comments" msgstr "" @@ -10446,10 +10445,6 @@ msgstr "" msgid "Edit" msgstr "" -#: src/Object/Post.php:235 -msgid "Pinned item" -msgstr "" - #: src/Object/Post.php:239 msgid "Delete globally" msgstr "" @@ -10547,94 +10542,94 @@ msgstr "" msgid "Unshare" msgstr "" -#: src/Object/Post.php:421 +#: src/Object/Post.php:423 #, php-format msgid "%s (Received %s)" msgstr "" -#: src/Object/Post.php:426 +#: src/Object/Post.php:428 msgid "Comment this item on your system" msgstr "" -#: src/Object/Post.php:426 +#: src/Object/Post.php:428 msgid "Remote comment" msgstr "" -#: src/Object/Post.php:470 +#: src/Object/Post.php:472 msgid "to" msgstr "" -#: src/Object/Post.php:471 +#: src/Object/Post.php:473 msgid "via" msgstr "" -#: src/Object/Post.php:472 +#: src/Object/Post.php:474 msgid "Wall-to-Wall" msgstr "" -#: src/Object/Post.php:473 +#: src/Object/Post.php:475 msgid "via Wall-To-Wall:" msgstr "" -#: src/Object/Post.php:515 +#: src/Object/Post.php:517 #, php-format msgid "Reply to %s" msgstr "" -#: src/Object/Post.php:518 +#: src/Object/Post.php:520 msgid "More" msgstr "" -#: src/Object/Post.php:536 +#: src/Object/Post.php:538 msgid "Notifier task is pending" msgstr "" -#: src/Object/Post.php:537 +#: src/Object/Post.php:539 msgid "Delivery to remote servers is pending" msgstr "" -#: src/Object/Post.php:538 +#: src/Object/Post.php:540 msgid "Delivery to remote servers is underway" msgstr "" -#: src/Object/Post.php:539 +#: src/Object/Post.php:541 msgid "Delivery to remote servers is mostly done" msgstr "" -#: src/Object/Post.php:540 +#: src/Object/Post.php:542 msgid "Delivery to remote servers is done" msgstr "" -#: src/Object/Post.php:560 +#: src/Object/Post.php:562 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "" msgstr[1] "" -#: src/Object/Post.php:561 +#: src/Object/Post.php:563 msgid "Show more" msgstr "" -#: src/Object/Post.php:562 +#: src/Object/Post.php:564 msgid "Show fewer" msgstr "" -#: src/Protocol/OStatus.php:1648 +#: src/Protocol/OStatus.php:1649 #, php-format msgid "%s is now following %s." msgstr "" -#: src/Protocol/OStatus.php:1649 +#: src/Protocol/OStatus.php:1650 msgid "following" msgstr "" -#: src/Protocol/OStatus.php:1652 +#: src/Protocol/OStatus.php:1653 #, php-format msgid "%s stopped following %s." msgstr "" -#: src/Protocol/OStatus.php:1653 +#: src/Protocol/OStatus.php:1654 msgid "stopped following" msgstr "" diff --git a/view/templates/search_item.tpl b/view/templates/search_item.tpl index 0c1d635034..fc322be95e 100644 --- a/view/templates/search_item.tpl +++ b/view/templates/search_item.tpl @@ -28,8 +28,7 @@
{{$item.name}} -
{{$item.ago}}
- +
{{$item.pinned}}
{{$item.title}}
diff --git a/view/theme/frio/templates/search_item.tpl b/view/theme/frio/templates/search_item.tpl index 39e66751f8..2889e71903 100644 --- a/view/theme/frio/templates/search_item.tpl +++ b/view/theme/frio/templates/search_item.tpl @@ -72,6 +72,10 @@ + {{if $item.pinned}} + • + {{$item.pinned}} + {{/if}}
diff --git a/view/theme/vier/templates/search_item.tpl b/view/theme/vier/templates/search_item.tpl index 2441c80fec..e556335a55 100644 --- a/view/theme/vier/templates/search_item.tpl +++ b/view/theme/vier/templates/search_item.tpl @@ -28,6 +28,7 @@ {{if $item.plink}}{{$item.ago}}{{else}} {{$item.ago}} {{/if}} {{if $item.lock}}{{$item.lock}} {{/if}} + {{$item.pinned}}