diff options
| author | winter | 2025-02-24 18:29:51 +0000 |
|---|---|---|
| committer | winter | 2025-02-24 18:29:51 +0000 |
| commit | a88283c526a779389efa2b819201a2331de0f2b2 (patch) | |
| tree | 684e6aa432d6062373941e3018dfc744adc03ff5 /Digitigrade/Policy/RemoteInstanceInfoSubstitution.php | |
| parent | 261ab1364aa40384b0315be60e78cd89ea7fe661 (diff) | |
implement federation policies and instance info substitution policy
Diffstat (limited to 'Digitigrade/Policy/RemoteInstanceInfoSubstitution.php')
| -rw-r--r-- | Digitigrade/Policy/RemoteInstanceInfoSubstitution.php | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Digitigrade/Policy/RemoteInstanceInfoSubstitution.php b/Digitigrade/Policy/RemoteInstanceInfoSubstitution.php new file mode 100644 index 0000000..cbcecfc --- /dev/null +++ b/Digitigrade/Policy/RemoteInstanceInfoSubstitution.php @@ -0,0 +1,33 @@ +<?php +namespace Digitigrade\Policy; + +use Digitigrade\Model\Instance; +use Digitigrade\Model\Note; +use Digitigrade\Policy; + +class RemoteInstanceInfoSubstitution extends Policy { + public function checkNoteFederation(Note $note, ?Instance $instance): bool { + if ($instance == null) { + return true; + } + + $infos = [ + '%Instance.domain' => $instance->domain, + '%Instance.name' => $instance->name, + '%Instance.description' => $instance->description ?? '', + '%Instance.softwareName' => $instance->softwareName, + '%Instance.softwareDescription' => $instance->softwareDescription ?? '', + '%Instance.softwareHomepage' => $instance->softwareHomepage ?? '', + '%Instance.softwareVersion' => $instance->softwareVersion ?? '' + ]; + + foreach ($infos as $needle => $replacement) { + $note->plainContent = str_replace($needle, $replacement, $note->plainContent); + foreach ($note->formattedContent as $type => $content) { + $note->formattedContent[$type] = str_replace($needle, $replacement, $content); + } + } + + return true; + } +}
\ No newline at end of file |
