²é¿´/±à¼ ´úÂë
ÄÚÈÝ
<?php namespace App\Http\Controllers; use App\Biker; use App\Testimonial; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Intervention\Image\Facades\Image; class TestimonialController extends Controller { public $ref_no, $testimonial_images_path; public function __construct() { $this->testimonial_images_path = public_path('/testimonial_images'); $this->ref_no = rand(1000, 99999999); } public function index(Request $request) { $bikers = Biker::orderBy('id', 'DESC')->get(); $testimonials = Testimonial::orderBy('id', 'desc')->get(); return view('testimonials.index')->with([ 'testimonials' => $testimonials, 'bikers' => $bikers ]); } // create testimonial public function store(Request $request) { $rules = [ // "title" => 'required', // "featured_image" => 'required', // "dates" => 'required', ]; $messages = [ // 'title.required' => 'Title is required!', // 'featured_image.featured_image' => 'Please add a featured image!', // 'dates.required' => 'Required!', ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return back() ->withErrors($validator) ->withInput(); } $test = new Testimonial(); if ($request->hasFile('featured_image')) { $test->featured_image = $this->uploadImage($request->file('featured_image'), 'single'); } if ($request->hasFile('other_images')) { $photos = $request->file('other_images'); $imgs = []; for ($i = 0; $i < count($photos); $i++) { $photo = $photos[$i]; array_push($imgs, $this->uploadImage($photo, 'multi')); } $test->other_images = json_encode($imgs); } $test->dates = $request->dates[0]; $test->ref_id = $this->ref_no; $test->description = $request->description; $test->bikers = $request->bikers; if ($request->title) { $test->title = $request->title; } else { $test->title = 'untitled'; } $test->user_id = auth()->user()->id; if ($test->save()) { return back()->with([ 'success' => true, 'message' => "Testimonial was added successfully" ]); } return back()->with([ 'error' => true, 'message' => "Sorry! something went wrong" ]); // $test->title=$request->title; } public function edit(Request $request) { $test = Testimonial::where('slug', $request->slug)->firstOrFail(); $bikers = Biker::orderBy('id', 'DESC')->get(); return view('testimonials.edit')->with([ 'testimonial' => $test, 'bikers' => $bikers ]); } public function show(Request $request) { $test = Testimonial::where('slug', $request->slug)->firstOrFail(); // $bikers = Biker::whereIn('id', json_decode($test->bikers))->get(); return view('testimonials.view')->with([ 'testimonial' => $test, ]); } public function update(Request $request) { $test = Testimonial::where('slug', $request->slug)->firstOrFail(); $rules = [ // "title" => 'required', // "dates" => 'required', ]; $messages = [ // 'title.required' => 'Title is required!', // 'dates.required' => 'Required!', ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return back() ->withErrors($validator) ->withInput(); } if ($test->featured_image == "noimage.jpg") { return back()->with([ 'error' => 'please provide a featured image' ]); } if ($request->hasFile('featured_image')) { // remove current image // unlink('testimonial_images/' . $test->featured_image); // unlink('testimonial_images/thumbs/' . $test->featured_image); $test->featured_image = $this->uploadImage($request->file('featured_image'), 'single'); } if ($request->hasFile('other_images')) { $photos = $request->file('other_images'); $imgs = []; if ($test->other_images) { //get the old images $old_imgs = json_decode($test->other_images); for ($k = 0; $k < count($old_imgs); $k++) { array_push($imgs, $old_imgs[$k]); } } for ($i = 0; $i < count($photos); $i++) { $photo = $photos[$i]; array_push($imgs, $this->uploadImage($photo, 'multi')); } $test->other_images = json_encode($imgs); } $test->dates = $request->dates[0]; $test->description = $request->description; $cur_bikers = []; // if ($test->bikers) { // $cur_bikers = json_decode($test->bikers); // } if ($request->bikers) { // for ($b = 0; $b < count($request->bikers); $b++) { // $bkr = $request->bikers[$b]; // if (!in_array($bkr, $cur_bikers)) { // array_push($cur_bikers, $bkr); // } // } // $test->bikers = json_encode($cur_bikers); $test->bikers = $request->bikers; } $test->title = $request->title; $test->user_id = auth()->user()->id; if ($test->save()) { return redirect('/testimonial/edit/' . $test->slug)->with([ 'success' => true, 'message' => "Testimonial was updated successfully" ]); } return back()->with([ 'error' => true, 'message' => "Sorry something went wrong" ]); } public function removeImg(Request $request) { $id = $request->get('id'); $test = Testimonial::find($id); $imgR = $request->img; //image to remove $imgArr = []; if ($test) { if ($test->other_images) { $imgs = json_decode($test->other_images); for ($i = 0; $i < count($imgs); $i++) { $img = $imgs[$i]; if ($img != $imgR) { array_push($imgArr, $img); } } } } if (count($imgArr) > 0) { $test->other_images = json_encode($imgArr); } else { $test->other_images = null; } if ($test->save()) { //remove img unlink('testimonial_images/' . $imgR); unlink('testimonial_images/thumbs/' . $imgR); return response()->json([ 'success' => true ]); } } public function delete(Request $request) { $test = Testimonial::where('id', $request->id)->first(); if ($test) { $imgs = $test->other_images; $fImg = $test->featured_image; // unlink('testimonial_images/' . $fImg); // unlink('testimonial_images/thumbs/' . $fImg); // if ($imgs) { // for ($i = 0; $i < json_decode($imgs); $i++) { // $images = json_decode($imgs); // // unlink('testimonial_images/' . $images[$i]); // // unlink('testimonial_images/thumbs/' . $images[$i]); // } // } if ($test->delete()) { return response()->json([ 'success' => true ]); } return response()->json([ 'success' => false ]); } } public function uploadImage($image, $type) { // if (!is_dir($this->testimonial_images_path)) { // mkdir($this->testimonial_images_path, 0777); // } $oname = basename($image->getClientOriginalName()); $new_name = time() . '_' . $oname; $img = Image::make($image) //thumbs ->fit(300, 300, function ($constraints) { // $constraints->aspectRatio(); $constraints->upsize(); }); $img2 = Image::make($image); $img2->save('testimonial_images/' . $new_name); $img->save('testimonial_images/thumbs/' . $new_name); return $new_name; } }