['required'] 'title' => ['required'], //'page_id' => ['required'], ]; public function index(Request $request) { // Se stavo modificando una news metto a null il campo if ($request->session()->has('current_news')) { $news_id = session('current_news', 0); if ($news_id > 0) { $n = News::where('id', '=', $news_id)->take(1000)->get(); if ($n->count() > 0) { $n = $n->first(); if ($n->user_id == Auth::user()->id) { $n->user_id = null; $n->save(); } } $request->session()->forget('current_news'); } } $news = News::orderBy('date', 'DESC')->take(1000)->get(); //->paginate(50); return view('news.index', compact('news')) ->with('i', (request()->input('page', 1) - 1) * 5); } public function load_json() { $start = $_GET["start"]; $end = 50; //$_GET["length"]; $total = News::count(); $filtered = $total; $sort_by = ''; $sort = $_GET["order"][0]["column"]; switch ($sort) { case '0': $sort_by = 'date'; break; case '2': $sort_by = 'title'; break; case '3': $sort_by = 'name'; break; case '4': $sort_by = 'name'; break; case '5': $sort_by = 'name'; break; case '6': $sort_by = 'title'; break; case '7': $sort_by = 'online'; break; case '8': $sort_by = 'clicks'; break; default: $sort_by = 'date'; break; } $sort_by_dir = $_GET["order"][0]["dir"]; $search = $_GET["search"]["value"]; if ($sort == '3') { $news = News::with(['section' => function ($query) use ($sort_by, $sort_by_dir) { $query->orderBy($sort_by, $sort_by_dir); }]); } else if ($sort == '4') { $news = News::with(['region_1' => function ($query) use ($sort_by, $sort_by_dir) { $query->orderBy($sort_by, $sort_by_dir); }]); } else if ($sort == '5') { $news = News::with(['region_2' => function ($query) use ($sort_by, $sort_by_dir) { $query->orderBy($sort_by, $sort_by_dir); }]); } else if ($sort == '6') { $news = News::with(['event' => function ($query) use ($sort_by, $sort_by_dir) { $query->orderBy($sort_by, $sort_by_dir); }]); } else $news = News::orderBy($sort_by, $sort_by_dir); if ($search != '') { $news = $news->where('title', 'LIKE', '%' . $search . '%'); $filtered = $news->count(); } $news = $news->limit($end)->offset($start)->get(); //->paginate(50); $aData = array(); foreach ($news as $n) { $x = array(); $x[] = $n->date; if ($n->image != '') $x[] = ''; else $x[] = ''; $x[] = $n->title; $section = @$n->section->name; if ($n->section) $section .= '
' . isset($n->section) ? $n->section->position($n->id) : ''; $x[] = $section; $region_1 = @$n->region_1->name; if ($n->region_1) $region_1 .= '
' . isset($n->region_1) ? $n->region_1->position($n->id) : ''; $x[] = $region_1; $region_2 = @$n->region_2->name; if ($n->region_2) $region_2 .= '
' . isset($n->region_2) ? $n->region_2->position($n->id) : ''; $x[] = $region_2; //$x[] = @$n->event->title; $x[] = @$n->online ? ' Si ' : 'No'; $x[] = @$n->clicks; $x[] = ''; $x[] = ''; $form = '
'; $x[] = $form; $aData[] = $x; } $aRet = array('recordsTotal' => $total, 'recordsFiltered' => $filtered, 'data' => $aData); return json_encode($aRet); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $sections = Section::where('type', '=', 'section')->orderBy('position')->pluck('name', 'id')->toArray();; $regions = Section::where('type', '=', 'region')->orderBy('name')->pluck('name', 'id')->toArray();; $layouts = Section::pluck('layout', 'id')->toArray(); $events = Event::orderBy('title')->pluck('title', 'id')->toArray();; $pages = Page::where('online', '=', true)->orderBy('title')->pluck('title', 'id')->toArray();; $section_position = ''; $region_1_position = ''; $region_2_position = ''; $first = ''; $aFirst = array(); $home = Home::first(); if ($home != null) { $pos = ''; $home->loadData(); if (isset($home->slide1) && $home->slide1 != '') $aFirst[] = $home->slide1->title . " (immagine grande)"; for ($a = 1; $a <= 5; $a++) { if (isset($home["left" . $a]) && $home["left" . $a] != '') $aFirst[] = $home["left" . $a]["title"] . " (slide sinistra)"; } for ($a = 1; $a <= 5; $a++) { if (isset($home["right" . $a]) && $home["right" . $a] != '') $aFirst[] = $home["right" . $a]["title"] . " (slide destra)"; } $first = '
  • ' . implode("
  • ", $aFirst) . '
  • '; } return view('news.create', compact('sections', 'regions', 'events', 'pages', 'layouts', 'section_position', 'region_1_position', 'region_2_position', 'first')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { Log::info('=== NEWS STORE METHOD START ==='); Log::info('Request data:', $request->all()); Log::info('Request method:', [$request->method()]); try { $request->validate($this->rules); Log::info('Validation passed'); $input = $request->all(); Log::info('Input data:', $input); // Check which button was clicked if (isset($input['save'])) { Log::info('SAVE button clicked'); } if (isset($input['save_exit'])) { Log::info('SAVE_EXIT button clicked'); } if (isset($input['publish'])) { Log::info('PUBLISH button clicked'); } if (isset($input['unpublish'])) { Log::info('UNPUBLISH button clicked'); } // Image handling if (request()->image) { Log::info('Processing main image upload'); $file = request()->image; $filename = time() . '_' . $file->getClientOriginalName(); if (! File::exists(public_path() . "/files/news")) File::makeDirectory(public_path() . "/files/news"); $path = public_path('files/news'); request()->image->move($path, $filename); $input["image"] = $filename; Log::info('Main image uploaded:', [$filename]); } else { if (isset($input["filename"])) { $input["image"] = $input["filename"]; Log::info('Using existing filename:', [$input["filename"]]); } } // Handle additional images for ($i = 1; $i <= 5; $i++) { if (isset($input["image" . $i])) { Log::info("Processing image{$i} upload"); $file = $input["image" . $i]; $filename = time() . '_' . $file->getClientOriginalName(); if (! File::exists(public_path() . "/files/news")) File::makeDirectory(public_path() . "/files/news"); $path = public_path('files/news'); $input["image" . $i]->move($path, $filename); $input["image" . $i] = $filename; Log::info("Image{$i} uploaded:", [$filename]); } } // Handle PDF if (request()->pdf) { Log::info('Processing PDF upload'); $file = request()->pdf; $filename = time() . '_' . $file->getClientOriginalName(); if (! File::exists(public_path() . "/files/news")) File::makeDirectory(public_path() . "/files/news"); $path = public_path('files/news'); request()->pdf->move($path, $filename); $input["pdf"] = $filename; Log::info('PDF uploaded:', [$filename]); } // Date processing $final_date = null; if ($input["date"] != '') { list($dt, $time) = explode(" ", $input["date"]); list($day, $month, $year) = explode("/", $dt); $final_date = $year . "-" . $month . "-" . $day . " " . $time; Log::info('Date processed:', [$input["date"], $final_date]); } $input["date"] = $final_date; // Handle checkboxes $input["online"] = false; $input["homepage"] = isset($input["homepage"]) ? ($input["homepage"] == 'on' ? true : false) : false; $input["live"] = isset($input["live"]) ? ($input["live"] == 'on' ? true : false) : false; $input["breaking_news"] = isset($input["breaking_news"]) ? ($input["breaking_news"] == 'on' ? true : false) : false; $input["no_social"] = isset($input["no_social"]) ? ($input["no_social"] == 'on' ? true : false) : false; Log::info('Checkbox values:', [ 'homepage' => $input["homepage"], 'live' => $input["live"], 'breaking_news' => $input["breaking_news"], 'no_social' => $input["no_social"] ]); Log::info('About to create news record'); $news = News::create($input); Log::info('News created with ID:', [$news->id]); // Handle publish action if (isset($input['publish'])) { Log::info('Processing publish action'); $news->online = true; $news->save(); Log::info('News set to online'); // Position the news if date is not in future if ($final_date <= date("Y-m-d H:i:s")) { Log::info('Date is not in future, processing positions'); if ($input["section_position"] != '') { Log::info('Processing section position:', [$input["section_position"]]); $s = Section::findOrFail($input["section_id"]); $s[$input["section_position"]] = $news->id; $s->save(); $news->section_position = ''; } if ($input["region_1_position"] != '') { Log::info('Processing region_1 position:', [$input["region_1_position"]]); $s = Section::findOrFail($input["region_1_id"]); $s[$input["region_1_position"]] = $news->id; $s->save(); $news->region_1_position = ''; } if ($input["region_2_position"] != '') { Log::info('Processing region_2 position:', [$input["region_2_position"]]); $s = Section::findOrFail($input["region_2_id"]); $s[$input["region_2_position"]] = $news->id; $s->save(); $news->region_2_position = ''; } } // Handle social media posting if (!isset($input['no_social'])) { Log::info('Processing social media notifications'); try { @$news->notify(new FacebookPost()); $news->notify(new TwitterPost()); $news->published = true; $news->save(); Log::info('Social media notifications sent'); } catch (\Exception $e) { Log::error('Error sending social notifications:', [$e->getMessage()]); } } else { Log::info('Skipping social media (no_social flag set)'); } } if (isset($input['unpublish'])) { Log::info('Processing unpublish action'); $news->online = false; $news->save(); } // Handle homepage position if ($input["homepage_position"] != '' && $news->online) { Log::info('Processing homepage position:', [$input["homepage_position"]]); $home = Home::first(); if ($home != null) { $home->fill([ $input["homepage_position"] => $news->id ]); $home->save(); Log::info('Homepage position saved'); } } // Determine redirect based on action Log::info('=== DETERMINING REDIRECT ==='); if (isset($input['publish'])) { Log::info('Redirecting after publish to news.index'); return redirect()->route('news.index')->with('success', 'News published successfully'); } if (isset($input['unpublish'])) { Log::info('Redirecting after unpublish to news.index'); return redirect()->route('news.index')->with('success', 'News unpublished successfully'); } if (isset($input['save'])) { Log::info('Redirecting after save to news.edit'); return redirect()->route('news.edit', $news->id)->with('success', 'News saved successfully'); } if (isset($input['save_exit'])) { Log::info('Redirecting after save_exit to news.index'); return redirect()->route('news.index')->with('success', 'News saved successfully'); } Log::info('No specific action, redirecting to news.index'); return redirect()->route('news.index')->with('success', 'News created successfully'); } catch (\Exception $e) { Log::error('=== ERROR IN STORE METHOD ==='); Log::error('Error message:', [$e->getMessage()]); Log::error('Error file:', [$e->getFile()]); Log::error('Error line:', [$e->getLine()]); Log::error('Stack trace:', [$e->getTraceAsString()]); return redirect()->back() ->withInput() ->with('error', 'An error occurred while saving the news: ' . $e->getMessage()); } } /** * Display the specified resource. * * @param \App\News $news * @return \Illuminate\Http\Response */ public function show(News $news) { return view('news.show', compact('news')); } /** * Show the form for editing the specified resource. * * @param \App\News $news * @return \Illuminate\Http\Response */ public function edit(News $news) { // Aggiorno l'utente che sta guardando la news if ($news->user_id == null) { session(['current_news' => $news->id]); $news->user_id = Auth::user()->id; $news->save(); } $sections = Section::where('type', '=', 'section')->orderBy('position')->pluck('name', 'id')->toArray();; $regions = Section::where('type', '=', 'region')->orderBy('name')->pluck('name', 'id')->toArray();; $layouts = Section::pluck('layout', 'id')->toArray(); $events = Event::orderBy('title')->pluck('title', 'id')->toArray();; $pages = Page::where('online', '=', true)->orderBy('title')->pluck('title', 'id')->toArray();; $final_date = null; if ($news->date != null) { list($dt, $time) = explode(" ", $news->date); list($year, $month, $day) = explode("-", $dt); $final_date = $day . "/" . $month . "/" . $year . " " . $time; } $section_position = $news->section_position; $region_1_position = $news->region_1_position; $region_2_position = $news->region_2_position; $first = ''; $aFirst = array(); $home = Home::first(); if ($home != null) { $pos = ''; if ($home->slide1 == $news->id) $news->homepage_position = "slide1"; if ($home->left1 == $news->id) $news->homepage_position = "left1"; if ($home->left2 == $news->id) $news->homepage_position = "left2"; if ($home->left3 == $news->id) $news->homepage_position = "left3"; if ($home->right1 == $news->id) $news->homepage_position = "right1"; if ($home->right2 == $news->id) $news->homepage_position = "right2"; if ($home->right3 == $news->id) $news->homepage_position = "right3"; $home->loadData(); if (isset($home->slide1) && $home->slide1 != '') $aFirst[] = $home->slide1->title . " (immagine grande)"; for ($a = 1; $a <= 5; $a++) { if (isset($home["left" . $a]) && $home["left" . $a] != '') $aFirst[] = $home["left" . $a]["title"] . " (slide sinistra)"; } for ($a = 1; $a <= 5; $a++) { if (isset($home["right" . $a]) && $home["right" . $a] != '') $aFirst[] = $home["right" . $a]["title"] . " (slide destra)"; } $first = '
  • ' . implode("
  • ", $aFirst) . '
  • '; } $news->date = $final_date; return view('news.edit', compact('news', 'sections', 'regions', 'pages', 'events', 'layouts', 'section_position', 'region_1_position', 'region_2_position', 'first')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\News $news * @return \Illuminate\Http\Response */ public function update(Request $request, News $news) { Log::info('=== NEWS UPDATE METHOD START ==='); Log::info('News ID:', [$news->id]); Log::info('Request data:', $request->all()); $request->validate($this->rules); Log::info('Validation passed'); $input = $request->all(); $old_section_id = $news->section_id; $old_region_1_id = $news->region_1_id; $old_region_2_id = $news->region_2_id; $old_event_id = $news->event_id; $section_position = ''; if ($news->section_id > 0) { if ($news->section->big == $news->id) $section_position = 'big'; if ($news->section->small1 == $news->id) $section_position = 'small1'; if ($news->section->small2 == $news->id) $section_position = 'small2'; if ($news->section->small3 == $news->id) $section_position = 'small3'; if ($news->section->small4 == $news->id) $section_position = 'small4'; if ($news->section->small5 == $news->id) $section_position = 'small5'; if ($news->section->small6 == $news->id) $section_position = 'small6'; if ($section_position == null) $section_position = $news->section_position; } $region_1_position = ''; if ($news->region_1_id > 0) { if ($news->region_1->big == $news->id) $region_1_position = 'big'; if ($news->region_1->small1 == $news->id) $region_1_position = 'small1'; if ($news->region_1->small2 == $news->id) $region_1_position = 'small2'; if ($news->region_1->small3 == $news->id) $region_1_position = 'small3'; if ($news->region_1->small4 == $news->id) $region_1_position = 'small4'; if ($news->region_1->small5 == $news->id) $region_1_position = 'small5'; if ($news->region_1->small6 == $news->id) $region_1_position = 'small6'; if ($region_1_position == '') $region_1_position = $news->region_1_position; } $region_2_position = ''; if ($news->region_2_id > 0) { if ($news->region_2->big == $news->id) $region_2_position = 'big'; if ($news->region_2->small1 == $news->id) $region_2_position = 'small1'; if ($news->region_2->small2 == $news->id) $region_2_position = 'small2'; if ($news->region_2->small3 == $news->id) $region_2_position = 'small3'; if ($news->region_2->small4 == $news->id) $region_2_position = 'small4'; if ($news->region_2->small5 == $news->id) $region_2_position = 'small5'; if ($news->region_2->small6 == $news->id) $region_2_position = 'small6'; if ($region_2_position == '') $region_2_position = $news->region_2_position; } if ($old_section_id == $input["section_id"] && $section_position == $input["section_position"]) unset($input["section_position"]); if ($old_region_1_id == $input["region_1_id"] && $region_1_position == $input["region_1_position"]) unset($input["region_1_position"]); if ($old_region_2_id == $input["region_2_id"] && $region_2_position == $input["region_2_position"]) unset($input["region_2_position"]); if (request()->image) { Log::info('Processing image update'); $file = request()->image; $filename = time() . '_' . $file->getClientOriginalName(); if (! File::exists(public_path() . "/files/news")) File::makeDirectory(public_path() . "/files/news"); $path = public_path('files/news'); request()->image->move($path, $filename); $input["image"] = $filename; } for ($i = 1; $i <= 5; $i++) { if (isset($input["image" . $i])) { $file = $input["image" . $i]; $filename = time() . '_' . $file->getClientOriginalName(); if (! File::exists(public_path() . "/files/news")) File::makeDirectory(public_path() . "/files/news"); $path = public_path('files/news'); $input["image" . $i]->move($path, $filename); $input["image" . $i] = $filename; } } if (isset($input["remove_pdf"])) { $input["pdf"] = ''; } if (request()->pdf) { $file = request()->pdf; $filename = time() . '_' . $file->getClientOriginalName(); if (! File::exists(public_path() . "/files/news")) File::makeDirectory(public_path() . "/files/news"); $path = public_path('files/news'); request()->pdf->move($path, $filename); $input["pdf"] = $filename; } $final_date = null; if ($input["date"] != '') { list($dt, $time) = explode(" ", $input["date"]); list($day, $month, $year) = explode("/", $dt); $final_date = $year . "-" . $month . "-" . $day . " " . $time; Log::info('Date processed for update:', [$input["date"], $final_date]); } $input["date"] = $final_date; // $input["online"] = isset($input["online"]) ? ($input["online"] == 'on' ? true : false) : false; $input["homepage"] = isset($input["homepage"]) ? ($input["homepage"] == 'on' ? true : false) : false; $input["live"] = isset($input["live"]) ? ($input["live"] == 'on' ? true : false) : false; $input["breaking_news"] = isset($input["breaking_news"]) ? ($input["breaking_news"] == 'on' ? true : false) : false; Log::info('About to update news record'); $news->update($input); Log::info('News updated'); $news->user_id = null; $news->save(); $request->session()->forget('current_news'); if (isset($input['publish'])) { $news->online = true; $news->save(); if (isset($input['no_social'])) { // Non pubblico sui social } else { $news->published = true; $news->save(); } } if (isset($input['unpublish'])) { $news->online = false; $news->save(); } if ($_POST["homepage_position"] != '' && $news->online) { $home = Home::first(); if ($home != null) { $home->fill([ $_POST["homepage_position"] => $news->id ]); $home->save(); } } if ($news->event_id != $old_event_id) { $e = Event::where('id', '=', $old_event_id)->first(); if ($e) { if ($e->big == $news->id) $e->big = ''; if ($e->small1 == $news->id) $e->small1 = ''; if ($e->small2 == $news->id) $e->small2 = ''; if ($e->small3 == $news->id) $e->small3 = ''; if ($e->small4 == $news->id) $e->small4 = ''; $e->save(); } } Log::info('=== DETERMINING REDIRECT FOR UPDATE ==='); if (isset($input['publish'])) { Log::info('Redirecting after publish to news.index'); return redirect()->route('news.index')->with('success', 'News published successfully'); } if (isset($input['crop'])) { Log::info('Redirecting to crop page'); return redirect('/admin/news/crop?news_id=' . $news->id); } if (isset($input['unpublish'])) { Log::info('Redirecting after unpublish to news.index'); return redirect()->route('news.index')->with('success', 'News unpublished successfully'); } if (isset($input['save'])) { Log::info('Redirecting after save to news.edit'); return redirect()->route('news.edit', $news->id)->with('success', 'News updated successfully'); } if (isset($input['save_exit'])) { Log::info('Redirecting after save_exit to news.index'); return redirect()->route('news.index')->with('success', 'News updated successfully'); } Log::info('No specific action, redirecting to news.edit'); return redirect()->route('news.edit', $news->id)->with('success', 'News updated successfully'); } /** * Remove the specified resource from storage. * * @param \App\News $news * @return \Illuminate\Http\Response */ public function destroy(News $news) { $section = null; if (isset($news->section)) { $section = $news->section; } $region_1 = null; if (isset($news->region_1)) { $region_1 = $news->region_1; } $region_2 = null; if (isset($news->region_2)) { $region_2 = $news->region_2; } $news->delete(); return redirect()->route('news.index') ->with('success', 'News deleted successfully'); } }