[COMPONENT][Conversation] Minor corrections and don't store URI in DB
This commit is contained in:
parent
e04d927fe9
commit
b05106e7f9
|
@ -30,16 +30,11 @@ use App\Core\Modules\Component;
|
||||||
use App\Core\Router\RouteLoader;
|
use App\Core\Router\RouteLoader;
|
||||||
use App\Core\Router\Router;
|
use App\Core\Router\Router;
|
||||||
use App\Entity\Actor;
|
use App\Entity\Actor;
|
||||||
use App\Entity\Feed;
|
|
||||||
use App\Entity\LocalUser;
|
|
||||||
use App\Entity\Note;
|
use App\Entity\Note;
|
||||||
use App\Util\Common;
|
use App\Util\Common;
|
||||||
use App\Util\Exception\ServerException;
|
|
||||||
use App\Util\Formatting;
|
use App\Util\Formatting;
|
||||||
use App\Util\Nickname;
|
|
||||||
use Component\Conversation\Controller\Reply as ReplyController;
|
use Component\Conversation\Controller\Reply as ReplyController;
|
||||||
use Component\Conversation\Entity\Conversation as ConversationEntity;
|
use Component\Conversation\Entity\Conversation as ConversationEntity;
|
||||||
use const SORT_REGULAR;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
class Conversation extends Component
|
class Conversation extends Component
|
||||||
|
@ -64,8 +59,7 @@ class Conversation extends Component
|
||||||
// We need the Conversation id itself, so a persist is in order
|
// We need the Conversation id itself, so a persist is in order
|
||||||
DB::persist($conversation);
|
DB::persist($conversation);
|
||||||
|
|
||||||
// Set the Uri and current_note's own conversation_id
|
// Set current_note's own conversation_id
|
||||||
$conversation->setUri(Router::url('conversation', ['conversation_id' => $conversation->getId()], Router::ABSOLUTE_URL));
|
|
||||||
$current_note->setConversationId($conversation->getId());
|
$current_note->setConversationId($conversation->getId());
|
||||||
} else {
|
} else {
|
||||||
// It's a reply for sure
|
// It's a reply for sure
|
||||||
|
@ -103,7 +97,7 @@ class Conversation extends Component
|
||||||
|
|
||||||
$reply_action = [
|
$reply_action = [
|
||||||
'url' => $reply_action_url,
|
'url' => $reply_action_url,
|
||||||
'title' => 'Reply to this note!',
|
'title' => _m('Reply to this note!'),
|
||||||
'classes' => 'button-container reply-button-container note-actions-unset',
|
'classes' => 'button-container reply-button-container note-actions-unset',
|
||||||
'id' => 'reply-button-container-' . $note->getId(),
|
'id' => 'reply-button-container-' . $note->getId(),
|
||||||
];
|
];
|
||||||
|
@ -143,7 +137,7 @@ class Conversation extends Component
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filter out multiple replies from the same actor
|
// Filter out multiple replies from the same actor
|
||||||
$reply_actor = array_unique($reply_actor, SORT_REGULAR);
|
$reply_actor = array_unique($reply_actor, \SORT_REGULAR);
|
||||||
|
|
||||||
// Add to complementary info
|
// Add to complementary info
|
||||||
foreach ($reply_actor as $actor) {
|
foreach ($reply_actor as $actor) {
|
||||||
|
@ -152,12 +146,7 @@ class Conversation extends Component
|
||||||
|
|
||||||
if ($check_user && $actor->getId() === (Common::actor())->getId()) {
|
if ($check_user && $actor->getId() === (Common::actor())->getId()) {
|
||||||
// If the reply is yours
|
// If the reply is yours
|
||||||
try {
|
|
||||||
$you_translation = _m('You');
|
$you_translation = _m('You');
|
||||||
} catch (ServerException $e) {
|
|
||||||
$you_translation = 'You';
|
|
||||||
}
|
|
||||||
|
|
||||||
$prepend = "<a href={$reply_actor_url}>{$you_translation}</a>, " . ($prepend = &$complementary_info);
|
$prepend = "<a href={$reply_actor_url}>{$you_translation}</a>, " . ($prepend = &$complementary_info);
|
||||||
$complementary_info = $prepend;
|
$complementary_info = $prepend;
|
||||||
} else {
|
} else {
|
||||||
|
@ -167,7 +156,7 @@ class Conversation extends Component
|
||||||
}
|
}
|
||||||
|
|
||||||
$complementary_info = rtrim(trim($complementary_info), ',');
|
$complementary_info = rtrim(trim($complementary_info), ',');
|
||||||
$complementary_info .= ' replied to this note.';
|
$complementary_info .= _m(' replied to this note.');
|
||||||
$result[] = Formatting::twigRenderString($complementary_info, []);
|
$result[] = Formatting::twigRenderString($complementary_info, []);
|
||||||
|
|
||||||
return Event::next;
|
return Event::next;
|
||||||
|
|
|
@ -24,6 +24,7 @@ declare(strict_types = 1);
|
||||||
namespace Component\Conversation\Entity;
|
namespace Component\Conversation\Entity;
|
||||||
|
|
||||||
use App\Core\Entity;
|
use App\Core\Entity;
|
||||||
|
use App\Core\Router\Router;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entity class for Conversations
|
* Entity class for Conversations
|
||||||
|
@ -59,17 +60,6 @@ class Conversation extends Entity
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setUri(string $uri): self
|
|
||||||
{
|
|
||||||
$this->uri = $uri;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getUri(): string
|
|
||||||
{
|
|
||||||
return $this->uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setInitialNoteId(int $initial_note_id): self
|
public function setInitialNoteId(int $initial_note_id): self
|
||||||
{
|
{
|
||||||
$this->initial_note_id = $initial_note_id;
|
$this->initial_note_id = $initial_note_id;
|
||||||
|
@ -84,19 +74,25 @@ class Conversation extends Entity
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
// }}} Autocode
|
// }}} Autocode
|
||||||
|
|
||||||
|
public function getUrl(int $type = Router::ABSOLUTE_URL): string
|
||||||
|
{
|
||||||
|
return Router::url('conversation', ['conversation_id' => $this->getId()], $type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUri(): string
|
||||||
|
{
|
||||||
|
return $this->getUrl(type: Router::ABSOLUTE_URL);
|
||||||
|
}
|
||||||
|
|
||||||
public static function schemaDef(): array
|
public static function schemaDef(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'name' => 'conversation',
|
'name' => 'conversation',
|
||||||
'fields' => [
|
'fields' => [
|
||||||
'id' => ['type' => 'serial', 'not null' => true, 'description' => 'Serial identifier, since any additional meaning would require updating its value for every reply upon receiving a new aparent root'],
|
'id' => ['type' => 'serial', 'not null' => true, 'description' => 'Serial identifier, since any additional meaning would require updating its value for every reply upon receiving a new aparent root'],
|
||||||
'uri' => ['type' => 'varchar', 'not null' => true, 'length' => 191, 'description' => 'URI of the conversation'],
|
|
||||||
'initial_note_id' => ['type' => 'int', 'foreign key' => true, 'target' => 'Note.id', 'multiplicity' => 'one to one', 'not null' => true, 'description' => 'Initial note seen on this host for this conversation'],
|
'initial_note_id' => ['type' => 'int', 'foreign key' => true, 'target' => 'Note.id', 'multiplicity' => 'one to one', 'not null' => true, 'description' => 'Initial note seen on this host for this conversation'],
|
||||||
],
|
],
|
||||||
'primary key' => ['id'],
|
'primary key' => ['id'],
|
||||||
'unique keys' => [
|
|
||||||
'conversation_uri_uniq' => ['uri'],
|
|
||||||
],
|
|
||||||
'foreign keys' => [
|
'foreign keys' => [
|
||||||
'initial_note_id_to_id_fkey' => ['note', ['initial_note_id' => 'id']],
|
'initial_note_id_to_id_fkey' => ['note', ['initial_note_id' => 'id']],
|
||||||
],
|
],
|
||||||
|
|
|
@ -224,17 +224,17 @@ class Posting extends Component
|
||||||
|
|
||||||
DB::persist($note);
|
DB::persist($note);
|
||||||
|
|
||||||
|
// Assign conversation to this note
|
||||||
|
// AddExtraArgsToNoteContent already added the info we need
|
||||||
|
$reply_to = $process_note_content_extra_args['reply_to'];
|
||||||
|
Conversation::assignLocalConversation($note, $reply_to);
|
||||||
|
|
||||||
// Need file and note ids for the next step
|
// Need file and note ids for the next step
|
||||||
$note->setUrl(Router::url('note_view', ['id' => $note->getId()], Router::ABSOLUTE_URL));
|
$note->setUrl(Router::url('note_view', ['id' => $note->getId()], Router::ABSOLUTE_URL));
|
||||||
if (!empty($content)) {
|
if (!empty($content)) {
|
||||||
Event::handle('ProcessNoteContent', [$note, $content, $content_type, $process_note_content_extra_args]);
|
Event::handle('ProcessNoteContent', [$note, $content, $content_type, $process_note_content_extra_args]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assign conversation to this note
|
|
||||||
// AddExtraArgsToNoteContent already added the info we need
|
|
||||||
$reply_to = $process_note_content_extra_args['reply_to'];
|
|
||||||
Conversation::assignLocalConversation($note, $reply_to);
|
|
||||||
|
|
||||||
if ($processed_attachments !== []) {
|
if ($processed_attachments !== []) {
|
||||||
foreach ($processed_attachments as [$a, $fname]) {
|
foreach ($processed_attachments as [$a, $fname]) {
|
||||||
if (DB::count('actor_to_attachment', $args = ['attachment_id' => $a->getId(), 'actor_id' => $actor->getId()]) === 0) {
|
if (DB::count('actor_to_attachment', $args = ['attachment_id' => $a->getId(), 'actor_id' => $actor->getId()]) === 0) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user