aboutsummaryrefslogtreecommitdiffhomepage
path: root/Digitigrade/Policy/RemoteInstanceInfoSubstitution.php
blob: cbcecfc7744406bfa1bdc5ce5f211acb90fc0be2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
    }
}