merge-requests/5/head
Terence Eden 2024-02-17 20:48:03 +00:00
rodzic f95a23af9e
commit 838c071cee
2 zmienionych plików z 33 dodań i 4 usunięć

Wyświetl plik

@ -20,6 +20,7 @@ Optionally, upload an `icon.png` to make the user look nice.
* The `index.php` file performs a specific action depending on the path requested. * The `index.php` file performs a specific action depending on the path requested.
* Log files are saved as .txt in the `/logs` directory. * Log files are saved as .txt in the `/logs` directory.
* Post files are saved as .json in the `/posts` directory. * Post files are saved as .json in the `/posts` directory.
* This has sloppy support for linking #hashtags, https:// URls, and @ mentions.
## Requirements ## Requirements

Wyświetl plik

@ -485,8 +485,8 @@ HTML;
// Get any hashtags // Get any hashtags
$hashtags = []; $hashtags = [];
$hashtag_pattern = '/(?:^|\s)\#(\w+)/'; // Beginning of string, or whitespace, followed by # $hashtag_pattern = '/(?:^|\s)\#(\w+)/'; // Beginning of string, or whitespace, followed by #
preg_match_all( $hashtag_pattern, $content, $matches ); preg_match_all( $hashtag_pattern, $content, $hashtag_matches );
foreach ($matches[1] as $match) { foreach ($hashtag_matches[1] as $match) {
$hashtags[] = $match; $hashtags[] = $match;
} }
@ -501,15 +501,43 @@ HTML;
// Add HTML links for hashtags into the text // Add HTML links for hashtags into the text
$content = preg_replace( $content = preg_replace(
'/(?<!\S)#([0-9\p{L}]+)/u', $hashtag_pattern,
"<a href='https://{$server}/tag/$1'>#$1</a>", "<a href='https://{$server}/tag/$1'>#$1</a>",
$content $content
); );
// Detect user mentions
$usernames = [];
$usernames_pattern = '/@(\S+)@(\S+)/'; // This is a *very* sloppy regex
preg_match_all( $usernames_pattern, $content, $usernames_matches );
foreach ( $usernames_matches[0] as $match ) {
$usernames[] = $match;
}
// Construct the mentions value for the note object
// This goes in the generic "tag" property
// TODO: Add this to the CC field
foreach ( $usernames as $username ) {
list( $null, $user, $domain ) = explode( "@", $username );
$tags[] = array(
"type" => "Mention",
"href" => "https://{$domain}/@{$user}",
"name" => "{$username}"
);
// Add HTML links to usernames
$username_link = "<a href=\"https://{$domain}/@{$user}\">$username</a>";
$content = str_replace( $username, $username_link, $content );
}
// Construct the content // Construct the content
$content = "<p>{$content}</p>"; $content = "<p>{$content}</p>";
return ["HTML" => $content, "TagArray" => $tags]; return [
"HTML" => $content,
"TagArray" => $tags
];
} }
// "One to stun, two to kill, three to make sure" // "One to stun, two to kill, three to make sure"