| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | <?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Models\Article;class ArticleController extends Controller{	function published() {		return view("published", ["rows" => Article::published()->get()]);	}	function index() {		$all = Article::all()->groupBy("status");		$args = [			"drafts" => $all[Article::STATUS_DRAFT] ?? null,			"pending" => $all[Article::STATUS_PENDING] ?? null,			"published" => $all[Article::STATUS_PUBLISHED] ?? null,			"archive" => $all[Article::STATUS_ARCHIVE] ?? null		];		return view("articles", $args);	}	function add() {		return view("add_article_form");	}	function view(Article $article) {		return view("article", [			"article" => $article->load([				"comments" => function($query) { $query->published()->recent(); }			])		]);	}	function edit(Article $article) {		return view("edit_article_form", ["article" => $article]);	}	function store(Request $request) {		$request->validate([			"id" => "nullable|exists:articles",			"title" => "required",			"description" => "nullable",			"content" => "required",			"status" => "required",			"publish_at" => "nullable",			"unpublish_at" => "nullable"		], [			"name" => "Публикация должна иметь название.",			"content" => "Публикация должна иметь текст."		]);		$arr = $request;		if ($arr->status == Article::STATUS_PENDING and !$arr->publish_at) {			return back()->withInput()->withErrors([				"publish_at" => "Должны быть указаны дата и время публикации."			]);		}		$article = Article::find($arr->id) ?? new Article;		$article->title = $arr->title;		$article->description = $arr->description ?? explode(".", $arr->content)[0];		$article->content = $arr->content;		$article->status = $arr->status;		$article->publish_at = $arr->publish_at ?? ($arr->status == Article::STATUS_PUBLISHED ? now() : null);		$article->unpublish_at = $arr->unpublish_at;		$article->save();		return view("success");	}	function comment(Article $article, Request $request) {		$request->validate([			"name" => "required",			"email" => "required|email",			"content" => "required"		], [			"name" => "Укажите ваше имя.",			"email" => "Укажите ваш email.",			"content" => "Введите комментарий."		]);		$arr = $request;		$article->comments()->create([			"name" => $arr->name,			"email" => $arr->email,			"content" => $arr->content		]);		return view("success");	}	function drop(Article $article) {		$article->delete();		return view("success");	}}
 |