[TAGS][ENTITY][Note] Properly store the note language, pass it along when rendering content. Add mechanism for stemming tags, with fallback to simply slug-ifying them
This commit is contained in:
@@ -53,7 +53,7 @@ class Note extends Entity
|
||||
private ?string $source;
|
||||
private int $scope = VisibilityScope::PUBLIC;
|
||||
private string $url;
|
||||
private string $language;
|
||||
private int $language_id;
|
||||
private DateTimeInterface $created;
|
||||
private DateTimeInterface $modified;
|
||||
|
||||
@@ -159,14 +159,14 @@ class Note extends Entity
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getLanguage(): string
|
||||
public function getLanguageId(): int
|
||||
{
|
||||
return $this->language;
|
||||
return $this->language_id;
|
||||
}
|
||||
|
||||
public function setLanguage(string $language): self
|
||||
public function setLanguageId(int $language_id): self
|
||||
{
|
||||
$this->language = $language;
|
||||
$this->language_id = $language_id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -284,18 +284,18 @@ class Note extends Entity
|
||||
$scope = VisibilityScope::create($this->scope);
|
||||
return $scope->public
|
||||
|| (!\is_null($a) && (
|
||||
($scope->subscriber && 0 != DB::count('subscription', ['subscriber' => $a->getId(), 'subscribed' => $this->actor_id]))
|
||||
($scope->subscriber && 0 != DB::count('subscription', ['subscriber' => $a->getId(), 'subscribed' => $this->actor_id]))
|
||||
|| ($scope->addressee && 0 != DB::count('notification', ['activity_id' => $this->id, 'actor_id' => $a->getId()]))
|
||||
|| ($scope->group && [] != DB::dql(
|
||||
<<<'EOF'
|
||||
select m from group_member m
|
||||
join group_inbox i with m.group_id = i.group_id
|
||||
join note n with i.activity_id = n.id
|
||||
where n.id = :note_id and m.actor_id = :actor_id
|
||||
EOF,
|
||||
['note_id' => $this->id, 'actor_id' => $a->getId()],
|
||||
))
|
||||
));
|
||||
<<<'EOF'
|
||||
select m from group_member m
|
||||
join group_inbox i with m.group_id = i.group_id
|
||||
join note n with i.activity_id = n.id
|
||||
where n.id = :note_id and m.actor_id = :actor_id
|
||||
EOF,
|
||||
['note_id' => $this->id, 'actor_id' => $a->getId()],
|
||||
))
|
||||
));
|
||||
}
|
||||
|
||||
public static function schemaDef(): array
|
||||
@@ -310,11 +310,11 @@ class Note extends Entity
|
||||
'rendered' => ['type' => 'text', 'description' => 'rendered note content, so we can keep the microtags (if not local)'],
|
||||
'is_local' => ['type' => 'bool', 'not null' => true, 'description' => 'was this note generated by a local actor'],
|
||||
'source' => ['type' => 'varchar', 'foreign key' => true, 'length' => 32, 'target' => 'NoteSource.code', 'multiplicity' => 'many to one', 'description' => 'fkey to source of note, like "web", "im", or "clientname"'],
|
||||
'scope' => ['type' => 'int', 'not null' => true, 'default' => VisibilityScope::PUBLIC, 'description' => 'bit map for distribution scope; 0 = everywhere; 1 = this server only; 2 = addressees; 4 = groups; 8 = subscribers; 16 = messages; null = default'],
|
||||
'url' => ['type' => 'text', 'description' => 'Permalink to Note'],
|
||||
'language' => ['type' => 'int', 'foreign key' => true, 'target' => 'Language.id', 'multiplicity' => 'one to many', 'description' => 'The language for this note'],
|
||||
'created' => ['type' => 'datetime', 'not null' => true, 'default' => 'CURRENT_TIMESTAMP', 'description' => 'date this record was created'],
|
||||
'modified' => ['type' => 'timestamp', 'not null' => true, 'default' => 'CURRENT_TIMESTAMP', 'description' => 'date this record was modified'],
|
||||
'scope' => ['type' => 'int', 'not null' => true, 'default' => VisibilityScope::PUBLIC, 'description' => 'bit map for distribution scope; 0 = everywhere; 1 = this server only; 2 = addressees; 4 = groups; 8 = subscribers; 16 = messages; null = default'],
|
||||
'url' => ['type' => 'text', 'description' => 'Permalink to Note'],
|
||||
'language_id' => ['type' => 'int', 'foreign key' => true, 'target' => 'Language.id', 'multiplicity' => 'one to many', 'description' => 'The language for this note'],
|
||||
'created' => ['type' => 'datetime', 'not null' => true, 'default' => 'CURRENT_TIMESTAMP', 'description' => 'date this record was created'],
|
||||
'modified' => ['type' => 'timestamp', 'not null' => true, 'default' => 'CURRENT_TIMESTAMP', 'description' => 'date this record was modified'],
|
||||
],
|
||||
'primary key' => ['id'],
|
||||
'indexes' => [
|
||||
|
Reference in New Issue
Block a user