PHP 8.3.30
Preview: BlogController.php Size: 6.83 KB
/home/getspomw/royalsquad.us/app/Http/Controllers/BlogController.php

<?php
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use App\Models\Blog;
use App\Models\BlogCategory;
use Carbon\Carbon;
use Illuminate\Http\Request;
 
class BlogController extends Controller
{
    public function index()
    {
        $blogs = Blog::orderBy('created_at', 'desc')->get();
        return view('admin.blog.list', compact('blogs'));
    }
 
    // create new blogs
    public function create()
    {
        $blog_categories = BlogCategory::all();
        return view('admin.blog.create', compact('blog_categories'));
    }
    // store blogs
    public function store(Request $request)
    {
 
        $request->validate([
            'category_id'      => 'required',
            'title'            => 'required|max:255',
            'description'      => 'required',
            'meta_description' => 'required',
            'meta_keywords'    => 'required',
            'meta_title'       => 'required',
            'banner_alt'       => 'required',
            'slug'             => 'required|unique:blogs,slug',
            'banner'           => 'required|image|mimes:jpeg,png,jpg',
            'meta_img'         => 'required|image|mimes:jpeg,png,jpg',
        ]);
 
        $blog = new Blog;
 
        if ($request->hasFile('banner')) {
            $file     = $request->file('banner');
            $filename = time() . '_banner.' . $file->getClientOriginalExtension();
            $path     = public_path('uploads');
            $file->move($path, $filename);
            $blog->banner = 'uploads/' . $filename;
        } elseif ($request->has('banner') && isset($blog->banner)) {
            $blog->banner = $blog->banner;
        }
 
        if ($request->hasFile('meta_img')) {
            $file     = $request->file('meta_img');
            $filename = time() . '_meta.' . $file->getClientOriginalExtension();
            $path     = public_path('uploads');
            $file->move($path, $filename);
            $blog->meta_img = 'uploads/' . $filename;
        } elseif ($request->has('meta_img') && isset($blog->meta_img)) {
            $blog->meta_img = $blog->meta_img;
        }
        $slug                    = preg_replace('/[^A-Za-z0-9\-]/', '', str_replace(' ', '-', $request->slug));
        $blog->category_id       = $request->category_id;
        $blog->title             = $request->title;
        $blog->slug              = strtolower(trim($slug, '-'));
        $blog->short_description = $request->short_description;
        $blog->description       = $request->description;
        $blog->banner_alt        = $request->banner_alt;
        $blog->meta_title        = $request->meta_title;
        $blog->meta_description  = $request->meta_description;
        $blog->meta_keywords     = $request->meta_keywords;
 
        $blog->save();
 
        // ===== Update sitemap.xml =====
        $sitemapPath = base_path('sitemap.xml');
 
        if (! file_exists($sitemapPath)) {
            $sitemap = '<?xml version="1.0" encoding="UTF-8"?>
            <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
            </urlset>';
            file_put_contents($sitemapPath, $sitemap);
        }
 
        $xml = simplexml_load_file($sitemapPath);
 
        $url = $xml->addChild('url');
        $url->addChild('loc', url('blogs/' . $blog->slug));
        $url->addChild('lastmod', Carbon::now()->toAtomString());
        $url->addChild('priority', '0.64');
 
        $xml->asXML($sitemapPath);
 
        return redirect()->route('admin.blog')->with('success', 'Blog post has been created successfully');
    }
 
    // edit blogs in admin
    public function edit($id)
    {
        $blog            = Blog::find($id);
        $blog_categories = BlogCategory::all();
        return view('admin.blog.edit', compact('blog', 'blog_categories'));
    }
 
    public function destroy($id)
    {
        $blog = Blog::find($id);
 
        if ($blog) {
 
            $blog->delete();
 
            $sitemapPath = base_path('sitemap.xml');
 
            if (file_exists($sitemapPath)) {
                $xml = simplexml_load_file($sitemapPath);
 
                foreach ($xml->url as $url) {
                    if ((string) $url->loc === url('blogs/' . $blog->slug)) {
                        $dom = dom_import_simplexml($url);
                        $dom->parentNode->removeChild($dom);
                        break;
                    }
                }
 
                $xml->asXML($sitemapPath);
            }
 
            return redirect()->route('admin.blog')->with('success', 'Blog post has been deleted successfully');
        }
 
        return redirect()->route('admin.blog')->with('error', 'Blog post not found');
    }
 
    // update blogs in admin
    public function update(Request $request, $id)
    {
        $request->validate([
            'category_id' => 'required',
            'title'       => 'required|max:255',
        ]);
 
        $blog    = Blog::find($id);
        $oldSlug = $blog->slug;
        $slug    = preg_replace('/[^A-Za-z0-9\-]/', '', str_replace(' ', '-', $request->slug));
        $newSlug = strtolower(trim($slug, '-'));
 
        if ($request->hasFile('banner')) {
 
            $file     = $request->file('banner');
            $filename = time() . '_banner.' . $file->getClientOriginalExtension();
            $path     = public_path('uploads');
            $file->move($path, $filename);
            $blog->banner = 'uploads/' . $filename;
        }
 
        if ($request->hasFile('meta_img')) {
 
            $file     = $request->file('meta_img');
            $filename = time() . '_meta.' . $file->getClientOriginalExtension();
            $path     = public_path('uploads');
            $file->move($path, $filename);
            $blog->meta_img = 'uploads/' . $filename;
        }
        $blog->category_id       = $request->category_id;
        $blog->title             = $request->title;
        $blog->slug              = strtolower(trim($slug, '-'));
        $blog->short_description = $request->short_description;
        $blog->description       = $request->description;
        $blog->banner_alt        = $request->banner_alt;
        $blog->meta_title        = $request->meta_title;
        $blog->meta_description  = $request->meta_description;
        $blog->meta_keywords     = $request->meta_keywords;
        $blog->save();
 
 
        $sitemapPath = base_path('sitemap.xml');
        if (file_exists($sitemapPath)) {
            $xml = simplexml_load_file($sitemapPath);
 
            foreach ($xml->url as $url) {
                if ((string) $url->loc === url('blogs/' . $oldSlug)) {
                    $url->loc     = url('blogs/' . $newSlug);
                    $url->lastmod = Carbon::now()->toAtomString();
                    break;
                }
            }
 
            $xml->asXML($sitemapPath);
        }
        return redirect()->route('admin.blog')->with('success', 'Blog post has been updated successfully');
    }
 
}
 
 

Directory Contents

Dirs: 0 × Files: 12

Name Size Perms Modified Actions
2.85 KB lrw-rw-rw- 2025-09-18 05:50:45
Edit Download
315 B lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
2.74 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
6.83 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
4.65 KB lrw-rw-rw- 2026-02-09 06:01:39
Edit Download
77 B lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
2.80 KB lrw-rw-rw- 2025-09-18 05:51:38
Edit Download
616 B lrw-r--r-- 2026-04-19 15:59:24
Edit Download
3.58 KB lrw-rw-rw- 2025-09-18 05:56:23
Edit Download
1.48 KB lrw-rw-rw- 2025-09-17 06:52:53
Edit Download
8.60 KB lrw-rw-rw- 2025-09-18 05:56:47
Edit Download
8.22 KB lrw-rw-rw- 2026-02-09 07:03:26
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).