This commit is contained in:
F4ilji
2026-03-20 23:35:09 +05:00
parent c80a52ab86
commit 836452add6
9 changed files with 88 additions and 17 deletions
@@ -21,9 +21,10 @@ class PublishPostAction
* Публикует черновик поста
*
* @param Post $post Пост для публикации
* @param bool $publishToVk Публиковать ли в VK
* @return Post Опубликованный пост
*/
public function run(Post $post): Post
public function run(Post $post, bool $publishToVk = true): Post
{
// Обновляем данные поста
$updatedData = $this->postDataProcessor->processUpdate([
@@ -40,8 +41,10 @@ class PublishPostAction
// Отправляем уведомления
$this->sendNotifications($post);
// Публикуем в VK
$this->publishToVk($post);
// Публикуем в VK, если указано
if ($publishToVk) {
$this->publishToVk($post);
}
// Обновляем слайд, если есть
$this->updateSlide($post);
@@ -95,9 +95,12 @@ class CreatePostFromAiDataTask
*/
private function preparePostData(array $newsData, array $content, ?string $previewPath, array $imagesPaths): array
{
$baseSlug = Str::slug($newsData['title'] ?? '');
$slug = $this->generateUniqueSlug($baseSlug);
return [
'title' => $newsData['title'] ?? 'Без названия',
'slug' => Str::slug($newsData['title'] ?? '') . '-' . time(),
'slug' => $slug,
'content' => $content,
'authors' => $newsData['authors'] ?? [],
'category_id' => $newsData['category_id'] ?? null,
@@ -113,6 +116,22 @@ class CreatePostFromAiDataTask
];
}
/**
* Генерирует уникальный slug
*/
private function generateUniqueSlug(string $baseSlug): string
{
$slug = $baseSlug;
$count = 1;
while (Post::where('slug', $slug)->exists()) {
$slug = $baseSlug . '-' . $count;
$count++;
}
return $slug;
}
/**
* Сохраняет теги поста
*/
@@ -27,7 +27,7 @@ class PublishPostController extends Controller
}
try {
$publishedPost = $this->publishPostAction->run($post);
$publishedPost = $this->publishPostAction->run($post, $request->input('publish_to_vk', true));
return back()->with([
'success' => 'Новость успешно опубликована: ' . $publishedPost->title,