Merge pull request #8792 from MrPetovan/task/share-block-guid

[frio] Add local post link to share block when guid attribute is present
This commit is contained in:
Michael Vogel 2020-06-23 21:26:07 +02:00 committed by GitHub
commit 7fd2c00171
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 42 additions and 23 deletions

View file

@ -2046,7 +2046,7 @@ function api_statuses_repeat($type)
$pos = strpos($item['body'], "[share"); $pos = strpos($item['body'], "[share");
$post = substr($item['body'], $pos); $post = substr($item['body'], $pos);
} else { } else {
$post = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'], $item['guid'], $item['created'], $item['plink']); $post = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'], $item['plink'], $item['created'], $item['guid']);
if (!empty($item['title'])) { if (!empty($item['title'])) {
$post .= '[h3]' . $item['title'] . "[/h3]\n"; $post .= '[h3]' . $item['title'] . "[/h3]\n";

View file

@ -43,7 +43,7 @@ function share_init(App $a) {
$pos = strpos($item['body'], "[share"); $pos = strpos($item['body'], "[share");
$o = substr($item['body'], $pos); $o = substr($item['body'], $pos);
} else { } else {
$o = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'], $item['guid'], $item['created'], $item['plink']); $o = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'], $item['plink'], $item['created'], $item['guid']);
if ($item['title']) { if ($item['title']) {
$o .= '[h3]'.$item['title'].'[/h3]'."\n"; $o .= '[h3]'.$item['title'].'[/h3]'."\n";

View file

@ -978,7 +978,7 @@ class BBCode
function ($match) use ($callback) { function ($match) use ($callback) {
$attribute_string = $match[2]; $attribute_string = $match[2];
$attributes = []; $attributes = [];
foreach (['author', 'profile', 'avatar', 'link', 'posted'] as $field) { foreach (['author', 'profile', 'avatar', 'link', 'posted', 'guid'] as $field) {
preg_match("/$field=(['\"])(.+?)\\1/ism", $attribute_string, $matches); preg_match("/$field=(['\"])(.+?)\\1/ism", $attribute_string, $matches);
$attributes[$field] = html_entity_decode($matches[2] ?? '', ENT_QUOTES, 'UTF-8'); $attributes[$field] = html_entity_decode($matches[2] ?? '', ENT_QUOTES, 'UTF-8');
} }
@ -1088,6 +1088,7 @@ class BBCode
'$link' => $attributes['link'], '$link' => $attributes['link'],
'$link_title' => DI::l10n()->t('link to source'), '$link_title' => DI::l10n()->t('link to source'),
'$posted' => $attributes['posted'], '$posted' => $attributes['posted'],
'$guid' => $attributes['guid'],
'$network_name' => ContactSelector::networkToName($contact['network'], $attributes['profile']), '$network_name' => ContactSelector::networkToName($contact['network'], $attributes['profile']),
'$network_icon' => ContactSelector::networkToIcon($contact['network'], $attributes['profile']), '$network_icon' => ContactSelector::networkToIcon($contact['network'], $attributes['profile']),
'$content' => self::setMentions(trim($content), 0, $contact['network']), '$content' => self::setMentions(trim($content), 0, $contact['network']),
@ -2229,30 +2230,28 @@ class BBCode
} }
/** /**
* @param $author * @param string $author Author display name
* @param $profile * @param string $profile Author profile URL
* @param $avatar * @param string $avatar Author profile picture URL
* @param $guid * @param string $link Post source URL
* @param $posted * @param string $posted Post created date
* @param $link * @param string|null $guid Post guid (if any)
* @return string * @return string
* @TODO Rewrite to handle over whole record array * @TODO Rewrite to handle over whole record array
*/ */
public static function getShareOpeningTag($author, $profile, $avatar, $guid, $posted, $link) public static function getShareOpeningTag(string $author, string $profile, string $avatar, string $link, string $posted, string $guid = null)
{ {
$header = "[share author='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $author). $header = "[share author='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $author) .
"' profile='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $profile). "' profile='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $profile) .
"' avatar='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $avatar); "' avatar='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $avatar) .
"' link='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $link) .
"' posted='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $posted);
if ($guid) { if ($guid) {
$header .= "' guid='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $guid); $header .= "' guid='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $guid);
} }
if ($posted) { $header .= "']";
$header .= "' posted='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $posted);
}
$header .= "' link='" . str_replace(["'", "[", "]"], ["'", "[", "]"], $link)."']";
return $header; return $header;
} }

View file

@ -864,7 +864,7 @@ class Transmitter
// Disguise forum posts as reshares. Will later be converted to a real announce // Disguise forum posts as reshares. Will later be converted to a real announce
$item['body'] = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'], $item['body'] = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'],
$item['guid'], $item['created'], $item['plink']) . $item['body'] . '[/share]'; $item['plink'], $item['created'], $item['guid']) . $item['body'] . '[/share]';
} }
} }

View file

@ -2799,9 +2799,9 @@ class Diaspora
$original_item["author-name"], $original_item["author-name"],
$original_item["author-link"], $original_item["author-link"],
$original_item["author-avatar"], $original_item["author-avatar"],
$original_item["guid"], $orig_url,
$original_item["created"], $original_item["created"],
$orig_url $original_item["guid"]
); );
if (!empty($original_item['title'])) { if (!empty($original_item['title'])) {
@ -3677,7 +3677,7 @@ class Diaspora
if ($item['author-link'] != $item['owner-link']) { if ($item['author-link'] != $item['owner-link']) {
require_once 'mod/share.php'; require_once 'mod/share.php';
$body = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'], $body = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'],
"", $item['created'], $item['plink']) . $body . '[/share]'; $item['plink'], $item['created']) . $body . '[/share]';
} }
// convert to markdown // convert to markdown

View file

@ -192,6 +192,8 @@ return [
'allow_gid' => '', 'allow_gid' => '',
'deny_cid' => '', 'deny_cid' => '',
'deny_gid' => '', 'deny_gid' => '',
'guid' => '1',
'plink' => 'http://localhost/display/1',
], ],
[ [
'id' => 2, 'id' => 2,
@ -209,6 +211,8 @@ return [
'wall' => 1, 'wall' => 1,
'starred' => 0, 'starred' => 0,
'origin' => 1, 'origin' => 1,
'guid' => '2',
'plink' => 'http://localhost/display/2',
], ],
[ [
@ -227,6 +231,8 @@ return [
'wall' => 1, 'wall' => 1,
'starred' => 0, 'starred' => 0,
'origin' => 1, 'origin' => 1,
'guid' => '3',
'plink' => 'http://localhost/display/3',
], ],
[ [
'id' => 4, 'id' => 4,
@ -244,6 +250,8 @@ return [
'wall' => 1, 'wall' => 1,
'starred' => 0, 'starred' => 0,
'origin' => 1, 'origin' => 1,
'guid' => '4',
'plink' => 'http://localhost/display/4',
], ],
[ [
@ -266,6 +274,8 @@ return [
'allow_gid' => '', 'allow_gid' => '',
'deny_cid' => '', 'deny_cid' => '',
'deny_gid' => '', 'deny_gid' => '',
'guid' => '5',
'plink' => 'http://localhost/display/5',
], ],
[ [
'id' => 6, 'id' => 6,
@ -283,6 +293,8 @@ return [
'wall' => 1, 'wall' => 1,
'starred' => 0, 'starred' => 0,
'origin' => 1, 'origin' => 1,
'guid' => '6',
'plink' => 'http://localhost/display/6',
], ],
], ],
'notify' => [ 'notify' => [

View file

@ -18,7 +18,15 @@
</a> </a>
{{/if}} {{/if}}
</div> </div>
<div class="shared-wall-item-ago"><small><span class="shared-time">{{$posted}}</span></small></div> <div class="shared-wall-item-ago"><small>
{{if $guid}}
<a href="/display/{{$guid}}">
{{/if}}
<span class="shared-time">{{$posted}}</span>
{{if $guid}}
</a>
{{/if}}
</small></div>
</div> </div>
<blockquote class="shared_content">{{$content nofilter}}</blockquote> <blockquote class="shared_content">{{$content nofilter}}</blockquote>
</div> </div>