Path : /var/www/html/phkaynews-v2/app/Http/Livewire/Admin/ |
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
Current File : /var/www/html/phkaynews-v2/app/Http/Livewire/Admin/PostManage.php |
<?php namespace App\Http\Livewire\Admin; use App\Models\Category; use App\Models\Post; use Carbon\Carbon; use Livewire\Component; use Jantinnerezo\LivewireAlert\LivewireAlert; use Livewire\WithPagination; use Livewire\WithFileUploads; class PostManage extends Component { use LivewireAlert; use WithFileUploads; use WithPagination; protected $paginationTheme = 'bootstrap'; public $title, $keyword, $description, $feature_image, $category_ids, $public = true; public $no_image = 'backend/images/no-thumbnail.jpg', $old_image, $update_image; public $s, $frm = false, $edit = false, $item, $per_page, $trashes = false, $total_trash, $trash_all = false, $restore = false; public $readyToLoadPost = false; public $sortField = 'created_at', $sortDirection = 'DESC'; public $limited = 10, $show_limit = [10, 25, 50, 100]; public $s_date, $e_date, $date, $_title, $user_name, $filter = false, $post; protected $queryString = [ 'sortField' => ['except' => 'created_at'], 'sortDirection' => ['except' => 'DESC', 'as' => 'direction'], 'limited' => ['except' => 10], 'date' => ['except' => ''], '_title' => ['except' => ''], 'user_name' => ['except' => ''], 'trashes' => ['except' => false], 'post' => ['except' => ''], ]; protected $listeners = [ 'confirmed', 'cancelled', "startDate" => 'getSelectedStartDate', "endDate" => 'getSelectedEndDate', ]; public function mount() { $this->total_trash = Post::onlyTrashed()->count(); if (!empty($this->post)) { $this->editItem($this->post); } if (!empty($this->date)) { $this->_filter(); } } public function updatingS(): void { $this->gotoPage(1); } public function updatingTrashes(): void { $this->gotoPage(1); $this->filter = false; if (!empty($this->date)) { if (is_array($this->date)) { $this->date = []; $this->reset([ 's_date', 'e_date', '_title', 'user_name' ]); } else { $this->date = null; } } } public function getSelectedStartDate($d) { $this->s_date = $d; } public function getSelectedEndDate($d) { $this->e_date = $d; } public function loadingPost() { $this->readyToLoadPost = true; } public function render() { if ($this->trashes) { $posts = Post::search('title', $this->s)->onlyTrashed()->orderBy($this->sortField, $this->sortDirection)->paginate($this->limited); } else { if ($this->s_date != null) { $this->date = [$this->s_date, $this->e_date]; } if ($this->s != null) { $posts = Post::search('title', $this->s)->orderBy($this->sortField, $this->sortDirection)->paginate($this->limited); } else { $posts = Post::filterDate($this->date, $this->_title, $this->user_name)->orderBy($this->sortField, $this->sortDirection)->paginate($this->limited); } } if (count($posts) > $this->limited) { $this->per_page = $posts->perPage(); } return view('livewire.admin.post-manage', [ 'posts' => $this->readyToLoadPost ? $posts : [], 'categories' => Category::all() ])->layout('layouts.admin'); } public function sortBy($field) { if ($this->sortField === $field) { $this->sortDirection = $this->sortDirection === 'ASC' ? 'DESC' : 'ASC'; } else { $this->sortDirection = 'ASC'; } $this->sortField = $field; } public function _filter() { $this->s = ''; $this->filter = !$this->filter; if ($this->filter == false) { if (is_array($this->date)) { $this->date = []; } else { $this->date = null; } } } public function pkmDate($date = null) { if (!empty($this->s_date) || !empty($this->e_date)) { $this->reset([ 's_date', 'e_date', '_title', 'user_name' ]); } switch ($date) { case 'today': $this->date = Carbon::now()->format('Y-m-d'); break; case 'yesterday': $this->date = Carbon::yesterday()->format('Y-m-d'); $this->gotoPage(1); break; case 'thisweek': $this->date = [Carbon::now()->subWeek()->format('Y-m-d'), Carbon::now()->format('Y-m-d')]; $this->gotoPage(1); break; case 'lastweek': $this->date = [Carbon::now()->subWeek()->subWeeks(1)->format('Y-m-d'), Carbon::now()->subWeek()->format('Y-m-d')]; $this->gotoPage(1); break; case 'thismonth': $this->date = [Carbon::now()->subMonth()->format('Y-m-d'), Carbon::now()->format('Y-m-d')]; $this->gotoPage(1); break; case 'lastmonth': $this->date = [Carbon::now()->subMonth()->subMonths(1)->format('Y-m-d'), Carbon::now()->subMonth()->format('Y-m-d')]; $this->gotoPage(1); break; default: $this->date = null; $this->gotoPage(1); break; } } public function submit() { if ($this->edit) { $this->validate([ 'title' => 'required', 'keyword' => 'required' ]); if (!empty($this->update_image)) { $this->validate([ 'update_image' => 'image|max:1024' ]); $old_img = public_path($this->old_image); //is get path old image if (file_exists($old_img)) { unlink($old_img); } $this->old_image = ''; $update_image = $this->update_image->store('thumbnails'); } if (!empty($this->feature_image)) { $update_image = $this->feature_image->store('thumbnails'); } $this->item->update([ 'title' => $this->title, 'keyword' => $this->keyword, 'description' => $this->description, 'public' => $this->public, 'feature_image' => empty($this->old_image) ? $update_image : $this->old_image ]); $this->item->categories()->sync($this->category_ids); $action = 'update'; } else { $this->validate([ 'title' => 'required|min:15', 'keyword' => 'required', 'feature_image' => 'image|max:1024' ]); if (empty($this->category_ids)) { return $this->alert('error', 'Your item require categories', [ 'position' => 'center', 'toast' => true, 'showCancelButton' => false, 'showConfirmButton' => false, 'timerProgressBar' => true, ]); } $file = $this->feature_image->store('thumbnails'); $post = Post::create([ 'title' => $this->title, 'keyword' => $this->keyword, 'description' => $this->description, 'feature_image' => $file, 'public' => $this->public, 'user_id' => auth()->user()->id ]); $post->categories()->attach($this->category_ids); $action = 'create'; $this->gotoPage(1); } $this->formOpen(); $this->alert('success', 'Your item has been ' . $action . ' successfully.', [ 'position' => 'top', 'toast' => true, 'showCancelButton' => false, 'showConfirmButton' => false, 'timerProgressBar' => true, ]); } public function formOpen() { $this->frm = !$this->frm; if ($this->frm == false) { $this->reset([ 'title', 'keyword', 'public', ]); if (!empty($this->old_image)) { $this->old_image = $this->no_image; } $this->resetValidation(); $this->dispatchBrowserEvent('descriptionEvent', ['description' => '']); $this->dispatchBrowserEvent('categoryEvent', ['category_ids' => null]); $this->post = null; $this->loadingPost(); } if ($this->edit) { $this->edit = false; } } public function editItem($id) { $this->formOpen(); $post = Post::findOrFail($id); $this->post = $post->id; $this->edit = !$this->edit; $this->item = $post; $this->old_image = $post->feature_image; $this->title = $post->title; $this->keyword = $post->keyword; $this->public = $post->public; $this->description = $post->description; $this->category_ids = $post->post_categories->pluck('category_id')->toArray(); $this->dispatchBrowserEvent('descriptionEvent', ['description' => $this->description]); $this->dispatchBrowserEvent('categoryEvent', ['category_ids' => $this->category_ids]); } public function changePublish($id) { $post = Post::findOrFail($id); $post->update([ 'public' => !$post->public ]); if ($post->public) { $status = 'On'; } else { $status = 'Off'; } $this->alert('success', 'Your Post has been publish ' . $status . ' successfully.', [ 'position' => 'top', 'toast' => true, 'showCancelButton' => false, 'showConfirmButton' => false, 'timerProgressBar' => true, ]); } public function cancelled() { $this->alert('info', 'Cancel'); } public function confirmed() { if ($this->trashes) { if ($this->restore) { Post::onlyTrashed()->restore(); $this->total_trash = 0; $this->trashes = false; $action = 'restore all'; } else { if ($this->trash_all) { $thumb_images = Post::onlyTrashed()->get()->pluck('feature_image'); foreach ($thumb_images as $image) { $d_image = public_path($image); if (file_exists($d_image)) { unlink($d_image); } } Post::onlyTrashed()->forceDelete(); $this->total_trash = 0; $this->trashes = false; $action = "Empty trashes"; } else { if ($this->item->forceDelete()) { $old_img = public_path($this->item->feature_image); //is get path old image if (file_exists($old_img)) { unlink($old_img); } $this->item->categories()->detach(); $this->total_trash -= 1; } $action = "delete"; } } } else { $this->item->delete(); $this->total_trash += 1; $action = "move to trash"; } $this->alert('success', 'Your item has been ' . $action . ' successfully.', [ 'position' => 'top', 'toast' => true, 'showCancelButton' => false, 'showConfirmButton' => false, 'timerProgressBar' => true, ]); } public function pkmRestore($id) { $post = Post::onlyTrashed()->findOrFail($id); $post->restore(); $this->total_trash -= 1; if ($this->trash_all == 0) { $this->trashes = false; } $this->alert('success', 'Your item has been restore successfully.', [ 'position' => 'top', 'toast' => true, 'showCancelButton' => false, 'showConfirmButton' => false, 'timerProgressBar' => true, ]); } public function restoreAll() { $this->restore = true; $this->confirm("You won't be able to revert this!", [ 'toast' => false, 'position' => 'center', 'showConfirmButton' => true, 'onConfirmed' => 'confirmed', 'onCancelled' => 'cancelled', 'confirmButtonText' => 'Yes, restore it!', 'showCancelButton' => !0, 'cancelButtonText' => "No, cancel!", 'customClass' => [ 'confirmButton' => 'btn btn-info mt-2', 'cancelButton' => 'btn btn-danger ml-2 mt-2' ], 'buttonsStyling' => false, ]); } public function emptyTrash() { $this->trash_all = !$this->trash_all; $this->confirm("You won't be able to revert this!", [ 'toast' => false, 'position' => 'center', 'showConfirmButton' => true, 'onConfirmed' => 'confirmed', 'onCancelled' => 'cancelled', 'confirmButtonText' => 'Yes, delete it!', 'showCancelButton' => !0, 'cancelButtonText' => "No, cancel!", 'customClass' => [ 'confirmButton' => 'btn btn-success mt-2', 'cancelButton' => 'btn btn-danger ml-2 mt-2' ], 'buttonsStyling' => false, ]); } public function deleted($id) { $this->item = Post::onlyTrashed()->findOrFail($id); $this->confirm("You won't be able to revert this!", [ 'toast' => false, 'position' => 'center', 'showConfirmButton' => true, 'onConfirmed' => 'confirmed', 'onCancelled' => 'cancelled', 'confirmButtonText' => 'Yes, delete it!', 'showCancelButton' => !0, 'cancelButtonText' => "No, cancel!", 'customClass' => [ 'confirmButton' => 'btn btn-success mt-2', 'cancelButton' => 'btn btn-danger ml-2 mt-2' ], 'buttonsStyling' => false, ]); } public function destroy(Post $post) { $this->item = $post; $this->confirm("You won't be able to revert this!", [ 'toast' => false, 'position' => 'center', 'showConfirmButton' => true, 'onConfirmed' => 'confirmed', 'onCancelled' => 'cancelled', 'confirmButtonText' => 'Yes, delete it!', 'showCancelButton' => !0, 'cancelButtonText' => "No, cancel!", 'customClass' => [ 'confirmButton' => 'btn btn-success mt-2', 'cancelButton' => 'btn btn-danger ml-2 mt-2' ], 'buttonsStyling' => false, ]); } }