OwlCyberSecurity - MANAGER
Edit File: BlogController.php
<?php namespace App\Http\Controllers; use App\Http\Requests\BlogAddRequest; use App\Http\Requests\BlogUpdateRequest; use App\Models\Blog; use App\Models\Categories; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; use Throwable; class BlogController extends Controller { public $data = []; public function __construct() { // parent::__construct(); $this->data['categories'] = Categories::pluck('name', 'id'); } public function index() { return view('blog.index', ['title' => 'Blogs']); } public function listing(Request $request) { // Get required data $draw = $request->get('draw'); $start = $request->get('start'); $length = $request->get('length'); $orderArray = $request->get('order'); $orderBy = $orderArray[0]['column']; $orderDir = $orderArray[0]['dir']; $searchArray = $request->get('search'); $searchValue = $searchArray['value']; // preparing select query $q = Blog::selectRaw(' id, title, IF(show_in_slider = 1 , "Active" , "Inactive") as show_in_slider, IF(show_in_sidebar = 1 , "Active" , "Inactive") as show_in_sidebar, IF(status = 1 , "Active" , "Inactive") as status, DATE_FORMAT(created_at,"%d/%m/%Y") as created_at_formatted, DATE_FORMAT(updated_at,"%d/%m/%Y") as updated_at_formatted '); $total = $q->count(); // search functionality if (isset($searchValue) && !empty($searchValue)) { $formated_search = preg_replace('/[^\sA-Za-z0-9@.\/\-]/', '', strtolower($searchValue)); $q->whereRaw('( title LIKE "%' . $formated_search . '%" OR DATE_FORMAT(created_at_formatted,"%d/%m/%Y") LIKE "%' . $formated_search . '%" OR DATE_FORMAT(updated_at_formatted,"%d/%m/%Y") LIKE "%' . $formated_search . '%" )'); } // column ordering if (isset($orderBy) && isset($orderDir)) { $columns = [ 1 => 'title', 2 => 'show_in_slider', 3 => 'show_in_sidebar', 4 => 'status', 5 => 'created_at_formatted', 6 => 'updated_at_formatted', ]; if (array_key_exists($orderBy, $columns)) { $q->orderBy($columns[$orderBy], $orderDir); } } // filtered cound $filtered = $q->count(); // requested data size $records = $q->skip($start)->take($length)->get(); // formating data $data = []; foreach ($records as $r) { $data[] = [ 'checkbox' => '<input type="checkbox" name="checkbox' . $r->id . '" id="checkbox' . $r->id . '" class="checkboxes" value="' . $r->id . '">', 'title' => $r->title, 'show_in_slider' => $r->show_in_slider, 'show_in_sidebar' => $r->show_in_sidebar, 'status' => $r->status, 'created_at' => $r->created_at_formatted, 'updated_at' => $r->updated_at_formatted, 'action' => '<a href="' . route('edit_blog.edit_blogs', ['id' => $r->id]) . '"><button class="custom-blue-btn w-100">Edit</button></a>', ]; } // returning response return response()->json([ "draw" => intval($draw), "iTotalRecords" => $total, "iTotalDisplayRecords" => $filtered, "aaData" => $data ], 200); } public function add() { $this->data['title'] = 'Add Blog'; return view('blog.add', $this->data); } public function store(BlogAddRequest $request) { try { // new blog object $blog = new Blog(); // add data $blog->title = $request->get('title'); $blog->slug = $request->get('slug'); $blog->category_id = $request->get('category_id'); $blog->content = $request->get('content'); $blog->short_description = $request->get('short_description'); $blog->meta_title = $request->get('meta_title'); $blog->meta_description = $request->get('meta_description'); $blog->meta_keywords = $request->get('meta_keywords'); $blog->is_featured = ($request->has('is_featured') && $request->get('is_featured') == 1 ? 1 : 0); $blog->show_in_slider = ($request->has('show_in_slider') && $request->get('show_in_slider') == 1 ? 1 : 0); $blog->show_in_sidebar = ($request->has('show_in_sidebar') && $request->get('show_in_sidebar') == 1 ? 1 : 0); $blog->external_link = $request->get('external_link'); $blog->link_target = $request->get('link_target'); $blog->status = $request->get('status'); if ($request->has('image')) { $image = $request->file('image'); $image_name = 'blog_' . now()->format('Y_m_d_H_i_s') . '.' . $image->getClientOriginalExtension(); $saved = Storage::disk('blogs')->put($image_name, file_get_contents($image)); if ($saved) { $blog->header_image = $image_name; } } $blog->updated_at = new \DateTime(); $blog->created_at = new \DateTime(); // creating new blog $blog->save(); return redirect('admin/blogs')->with('success', 'Blog added.'); } catch (Throwable $th) { return redirect()->back()->with('message', $th->getMessage())->withInput($request->except('image')); } } public function edit($id) { // requested Blog data if ($id > 0) { $blog = Blog::where('id', $id)->first(); if (!empty($blog)) { // dd($blog->toArray()); $this->data['title'] = 'Add Blog'; $this->data['blog'] = $blog; return view('blog.edit', $this->data); } else { return redirect('admin/blogs')->with('message', 'Blog not found'); } } return redirect('login'); } public function update(BlogUpdateRequest $request, $id) { if ((int)$id > 0) { $blog = Blog::where('id', $id)->first(); if (!empty($blog)) { DB::beginTransaction(); try { // add data $blog->title = $request->get('title'); $blog->slug = $request->get('slug'); $blog->category_id = $request->get('category_id'); $blog->content = $request->get('content'); $blog->short_description = $request->get('short_description'); $blog->meta_title = $request->get('meta_title'); $blog->meta_description = $request->get('meta_description'); $blog->meta_keywords = $request->get('meta_keywords'); $blog->is_featured = ($request->has('is_featured') && $request->get('is_featured') == 1 ? 1 : 0); $blog->show_in_slider = ($request->has('show_in_slider') && $request->get('show_in_slider') == 1 ? 1 : 0); $blog->show_in_sidebar = ($request->has('show_in_sidebar') && $request->get('show_in_sidebar') == 1 ? 1 : 0); $blog->external_link = $request->get('external_link'); $blog->link_target = $request->get('link_target'); $blog->status = $request->get('status'); if ($request->has('image')) { if (isset($blog->image) && !empty($blog->image)) { if (Storage::disk('blogs')->exists($blog->image)) { Storage::disk('blogs')->delete($blog->image); } } $image = $request->file('image'); $image_name = 'blog_' . now()->format('Y_m_d_H_i_s') . '.' . $image->getClientOriginalExtension(); $saved = Storage::disk('blogs')->put($image_name, file_get_contents($image)); if ($saved) { $blog->header_image = $image_name; } } $blog->updated_at = new \DateTime(); // update blog $blog->update(); DB::commit(); return redirect('admin/blogs')->with('success', 'Blog updated.'); } catch (Throwable $th) { DB::rollBack(); return redirect()->back()->with('message', $th->getMessage())->withInput($request->except('image')); } } } return route('login'); } public function delete(Request $request) { DB::beginTransaction(); try { $ids = is_array($request->get('ids')) ? $request->get('ids') : []; if (count($ids)) { $all_image_name = Blog::whereIn('id', $ids)->pluck('header_image')->toArray(); foreach ($all_image_name as $i) { if (isset($i) && !empty($i)) { if (Storage::disk('blogs')->exists($i)) { Storage::disk('blogs')->delete($i); } } } Blog::whereIn('id', $ids)->delete(); DB::commit(); return response()->json(['success' => true, 'message' => 'Blog' . (count($ids) > 1 ? "s" : "") . ' deleted successfully.'], 200); } return response()->json(['message' => 'No blog selected'], 422); } catch (Throwable $th) { DB::rollBack(); return response()->json(['message' => $th->getMessage()], 422); } } function deleteImage($id) { if ($id > 0) { $blog = Blog::where('id', $id)->first(); try { if (!empty($blog)) { if (isset($blog->header_image) && !empty($blog->header_image)) { if (Storage::disk('blogs')->exists($blog->header_image)) { Storage::disk('blogs')->delete($blog->header_image); $blog->header_image = null; $blog->update(); } return response()->json(['message' => 'Blog image deleted'], 200); } } return response()->json(['message' => 'Blog not found'], 422); } catch (Throwable $th) { return response()->json(['message' => $th->getMessage()], 422); } } return response()->json(['message' => 'Blog not found'], 422); } }