/** * Get the validation rules that apply to the request. * * @return array */ public function rules() { $hash = $this->input('hash'); $id = !empty($hash) ? $this->post->byHash($hash)->id : 0; $protected_visibility = $this->visibility->whereName('Protected')->first()->hash; return ['title' => 'required|min:2|max:100', 'slug' => "required|unique:posts,slug,{$id}|min:2|max:120", 'reviewer' => 'exists:users,hash', 'post' => 'required', 'category' => 'required|exists:categories,hash', 'publishdate' => 'required|date_format: d-m-Y H:i', 'password' => "required_if:visibility,{$protected_visibility}"]; }
/** * @param \Illuminate\Http\Request $request * @return bool */ private function checkIfUserCanEditPost($request) { $post = $this->post->byHash($request->segment(3)); $user_id = $this->auth->user()->getAuthIdentifier(); if ($user_id != $post->user_id && $user_id != $post->reviewer_id && $this->auth->user()->role->name != 'Admin') { return false; } return true; }
/** * Check if a given slug already exists * and when it exists generate a new one * * @param string $slug * @return string */ public function checkIfSlugIsUnique($slug) { $i = 0; $this->base_slug = $slug; while ($this->post->whereSlug($slug)->get()->count() > 0) { $i++; $slug = "{$this->base_slug}-{$i}"; } return $slug; }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $post = $this->post->bySlug($request->segment(2)); if ($post->visibility_id == 2) { if (!$this->hash->check(Input::get('password'), $post->password)) { return redirect()->route('blog.askPassword', [$post->slug])->with('wrong_password', 'Please provide a valid password to view this post'); } } return $next($request); }
/** * @param \Illuminate\Http\Request $request * @return bool */ private function checkIfUserCanViewPost($request) { $post = $this->post->byHash($request->segment(3)); $user_id = $this->auth->user()->getAuthIdentifier(); if ($post->visibility_id == 'Private') { if (!$post->user_id == $user_id) { return false; } } return true; }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $hash = $request->segment(3); $post = $this->post->byHash($hash); if ($post->being_edited_by != null && $post->being_edited_by != $this->auth->user()->getAuthIdentifier()) { $user = $this->user->find($post->being_edited_by)->fullName; session()->flash('notify', ['danger', trans('blogify::posts.notify.being_edited', ['name' => $user])]); return redirect()->route('admin.posts.index'); } return $next($request); }
public function store(CommentRequest $request) { $comment = new Comment(); $comment->hash = blogify()->makeHash('comments', 'hash', true); $comment->content = $request->comment; $comment->user_id = $this->auth->user()->id; $comment->post_id = $this->post->byHash($request->post)->id; $comment->revised = $this->config->approve_comments_first ? 1 : 2; $comment->save(); tracert()->log('comments', $comment->id, $this->auth->user()->id, 'create'); session()->flash('notify', ['success', 'Your comment has been added']); return back(); }
/** * @return array */ private function getOverviewData() { $archive = $this->post->where('publish_date', '<=', date('Y-m-d H:i:s'))->orderBy('publish_date', 'DESC')->get()->groupBy(function ($query) { return Carbon::parse($query->publish_date)->format('F Y'); }); $data = ['categories' => $this->category->all(), 'tags' => $this->tag->all(), 'archives' => $archive]; return $data; }
/** * @return \jorenvanhocht\Blogify\Models\Post */ private function storeOrUpdatePost() { if (!empty($this->data->hash)) { $post = $this->post->byHash($this->data->hash); } else { $post = new Post(); $post->hash = $this->blogify->makeHash('posts', 'hash', true); } $post->slug = $this->data->slug; $post->title = $this->data->title; $post->content = $this->data->post; $post->status_id = $this->status->byHash($this->data->status)->id; $post->publish_date = $this->data->publishdate; $post->user_id = $this->user->byHash($this->auth_user->hash)->id; $post->reviewer_id = $this->user->byHash($this->data->reviewer)->id; $post->visibility_id = $this->visibility->byHash($this->data->visibility)->id; $post->category_id = $this->category->byHash($this->data->category)->id; $post->being_edited_by = null; if (!empty($this->data->password)) { $post->password = $this->hash->make($this->data->password); } $post->save(); $post->tag()->sync($this->tags); return $post; }
/** * @return void */ private function buildDataArrayForReviewer() { $this->data['pending_review_posts'] = $this->post->whereStatusId(2)->forReviewer()->count(); }