diff --git a/app/Http/Resources/CommentResource.php b/app/Http/Resources/CommentResource.php index b29e5886..9d02e0b7 100644 --- a/app/Http/Resources/CommentResource.php +++ b/app/Http/Resources/CommentResource.php @@ -17,7 +17,7 @@ class CommentResource extends JsonResource { return [ 'id' => $this->id, - 'text' => $this->text, + 'text' => bbcode_attach_to_img($this->text), 'updated_at' => format_datetime($this->editdate), 'created_at' => format_datetime($this->added), 'create_user' => new UserResource($this->whenLoaded('create_user')), diff --git a/config/sanctum.php b/config/sanctum.php index 0fff0453..82eaa2b1 100644 --- a/config/sanctum.php +++ b/config/sanctum.php @@ -29,7 +29,7 @@ return [ | */ - 'expiration' => 129600, + 'expiration' => 5256000, /* |-------------------------------------------------------------------------- diff --git a/include/functions.php b/include/functions.php index 667c4ebf..6bc03326 100644 --- a/include/functions.php +++ b/include/functions.php @@ -6552,16 +6552,32 @@ function hide_text($text) { function bbcode_attach_to_img(string $text) { $pattern = "/\[attach\]([0-9a-zA-z][0-9a-zA-z]*)\[\/attach\]/is"; - preg_match_all($pattern, $text, $matches); - if (empty($matches)) { - return $text; - } - $attachments = \App\Models\Attachment::query()->whereIn("dlkey", $matches[1])->get(); - if ($attachments->isEmpty()) { - return $text; - } - $httpdirectory_attachment = get_setting('attachment.httpdirectory'); - + return preg_replace_callback($pattern, function ($matches) { + $dlkey = $matches[1]; + $httpdirectory_attachment = get_setting('attachment.httpdirectory'); + $row = \Nexus\Database\NexusDB::remember('attachment_'.$dlkey.'_content', 86400, function() use ($dlkey) { + $record = \App\Models\Attachment::query()->where("dlkey", $dlkey)->first(); + if ($record) { + return $record->toArray(); + } + return []; + }); + if (empty($row) || $row['isimage'] != 1) { + do_log(sprintf("dlkey: %s get attachment %s not exists or not image", $dlkey, json_encode($row))); + return $matches[0]; + } + $driver = $row['driver'] ?? 'local'; + if ($driver == "local") { + if ($row['thumb'] == 1){ + $url = $httpdirectory_attachment."/".$row['location'].".thumb.jpg"; + } else { + $url = $httpdirectory_attachment."/".$row['location']; + } + } else { + $url = \Nexus\Attachment\Storage::getDriver($driver)->getImageUrl($row['location']); + } + return "[img]" . $url . "[/img]"; + }, $text, 20); } ?>