MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/public_html/mpl.imenso.co/app/Http/Controllers/CMSController.php
<?php

namespace App\Http\Controllers;

use App\Events\ArtistPostsNews;
use App\Models\Gallery;
use App\Models\Image;
use App\Models\News;
use App\Models\NewsPostType;
use App\Models\User;
use App\Models\Video;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\MessageBag;

class CMSController extends Controller
{
    public function showGalleryList(Request $request)
    {
        return view('back-end/pages/cms/gallery')->with([
            'artist' => $request->user(),
        ]);
    }

    public function showAddGallery(Request $request)
    {
        return view('back-end/pages/cms/gallery-add')->with([
            'artist' => $request->user(),
        ]);
    }

    public function doAddGallery(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'image' => 'required|mimes:jpg,jpeg,png,gif',
        ]);

        if ($validator->fails()) {
            $request->session()->flash('register-errors', $validator->messages());

            return redirect()->back()->withErrors($validator);
        } else {
            $gallery = Gallery::addNew($request);

            $successes = new MessageBag;
            $successes->add(1, 'Gallery item added successfully.');

            session()->flash('successes', $successes);

            return redirect()->to('manage-gallery');
        }
    }

    public function doDeleteGallery(Request $request, $id)
    {
        $gallery = Gallery::where('id', $id)->firstOrFail();

        if ($gallery->galleryable_type == \App\Models\User::class && $gallery->galleryable_id == $request->user()->id) {
            $gallery->remove();
            $successes = new MessageBag;
            $successes->add(1, 'Image deleted successfully.');

            session()->flash('successes', $successes);

            return redirect()->back();
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to delete this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function showVideoList(Request $request)
    {
        return view('back-end/pages/cms/videos')->with([
            'artist' => $request->user(),
        ]);
    }

    public function doDeleteVideo(Request $request, $id)
    {
        $video = Video::where('id', $id)->first();

        if ($video->videoable_type == \App\Models\User::class && $video->videoable_id == $request->user()->id) {
            $video->remove();
            $successes = new MessageBag;
            $successes->add(1, 'Video deleted successfully.');

            session()->flash('successes', $successes);

            return redirect()->back();
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to delete this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function doEditVideo($id, Request $request)
    {
        $video = Video::findOrFail($id);

        if (get_class($video->videoable) == \App\Models\User::class && $video->videoable->id == $request->user()->id) {
            $video->edit($request);

            $successes = new MessageBag;
            $successes->add(1, 'Video edited successfully.');

            session()->flash('successes', $successes);

            return redirect()->to('manage-videos');
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to edit this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function showEditVideo(Request $request, $id)
    {
        $video = Video::findOrFail($id);

        if (get_class($video->videoable) == \App\Models\User::class && $video->videoable->id == $request->user()->id) {
            return view('back-end/pages/cms/video-edit')->with([
                'artist' => $request->user(),
                'video'  => $video,
            ]);
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to edit this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function showAddVideo(Request $request)
    {
        return view('back-end/pages/cms/video-add')->with([
            'artist' => $request->user(),
        ]);
    }

    public function doAddVideo(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name'       => 'required',
            'embed_code' => 'required',
        ]);

        if ($validator->fails()) {
            $request->session()->flash('register-errors', $validator->messages());

            return redirect()->back()->withErrors($validator)->withInput();
        } else {
            $video = Video::addNew($request);

            if ($request->user_id) {
                $user = User::findOrFail($request->user_id);
                $video->assignToUser($user);
            }

            $successes = new MessageBag;
            $successes->add(1, 'Video added successfully.');

            session()->flash('successes', $successes);

            return redirect()->to('manage-videos');
        }
    }

    public function showNewsList(Request $request)
    {
        return view('back-end/pages/cms/news')->with([
            'artist'   => $request->user(),
            'news'     => $request->user()->news()->orderByDesc('published_at')->paginate(10),
            'venue'    => $request->user(),
            'promoter' => $request->user(),
        ]);
    }

    public function showAddNews(Request $request)
    {
        return view('back-end/pages/cms/news-add')->with([
            'artist'     => $request->user(),
            'venue'      => $request->user(),
            'promoter'   => $request->user(),
            'post_types' => NewsPostType::all(),
        ]);
    }

    public function doAddNews(Request $request)
    {
        if ($request->post_type == '2') {
            $validator = Validator::make($request->all(), [
                'mp3_title' => 'required',
                'audio'     => 'required',
            ]);
        } elseif ($request->post_type == '3') {
            $validator = Validator::make($request->all(), [
                'video' => 'required',
            ]);
        } elseif ($request->post_type == '4') {
            $validator = Validator::make($request->all(), [
                'image' => 'required',
            ], [
                'image.required' => 'You must add at least 1 image',
            ]);
        } else {
            $validator = Validator::make($request->all(), [
                'post_title'   => 'required',
                'post_content' => 'required',
            ]);
        }

        $validator->sometimes(['location', 'radius'], 'required', function ($input) {
            return $input->geo_type == 1;
        });

        $validator->sometimes(['country_id'], 'required', function ($input) {
            return $input->geo_type == 2;
        });

        if ($validator->fails()) {
            $request->session()->flash('register-errors', $validator->messages());

            return redirect()->back()->withErrors($validator)->withInput();
        } else {
            $post = News::addNew($request);
            $post->assignToUser($request->user());

            if ($request->status_id == 2) {
                if ($request->user()->isArtist()) {
                    event(new ArtistPostsNews($post));
                }
            }

            $successes = new MessageBag;
            $successes->add(1, 'Article added successfully.');

            session()->flash('successes', $successes);

            return redirect()->to('manage-news/');
        }
    }

    public function doAddQuickNews(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'post_title' => 'required',
        ]);

        if ($validator->fails()) {
            $request->session()->flash('register-errors', $validator->messages());

            return redirect()->back()->withErrors($validator)->withInput();
        } else {
            $post = News::addNew($request);
            $post->assignToUser($request->user());

            if ($request->user()->isArtist()) {
                event(new ArtistPostsNews($post));
            }

            $successes = new MessageBag;
            $successes->add(1, 'Article added successfully.');

            session()->flash('successes', $successes);

            return redirect()->back();
        }
    }

    public function doEditNews($id, Request $request)
    {
        $post = News::where('id', $id)->first();

        if ($request->post_type == '2') {
            $validator = Validator::make($request->all(), [
                'mp3_title' => 'required',
            ]);
        } elseif ($request->post_type == '3') {
            $validator = Validator::make($request->all(), [
                'video' => 'required',
            ]);
        } elseif ($request->post_type == '4' && $post->galleryImages(8) == null) {
            $validator = Validator::make($request->all(), [
                'image' => 'required',
            ], [
                'image.required' => 'You must add at least 1 image',
            ]);
        } else {
            $validator = Validator::make($request->all(), [
                'post_title'   => 'required',
                'post_content' => 'required',
            ]);
        }

        if ($validator->fails()) {
            $request->session()->flash('register-errors', $validator->messages());

            return redirect()->back()->withErrors($validator)->withInput();
        } else {
            if ($post->user_id == $request->user()->id) {
                $post->edit($request);

                $successes = new MessageBag;
                $successes->add(1, 'Post updated successfully.');

                session()->flash('successes', $successes);

                return redirect()->back();
            } else {
                $errors = new MessageBag;
                $errors->add(1, 'You do not have permission to edit this.');

                return redirect()->back()->with('errors', $errors);
            }
        }
    }

    public function showEditNews(Request $request, $id)
    {
        $post = News::where('id', $id)->first();

        if ($post->user_id == $request->user()->id) {
            return view('back-end/pages/cms/news-edit')->with([
                'artist'     => $request->user(),
                'venue'      => $request->user(),
                'promoter'   => $request->user(),
                'post'       => $post,
                'post_types' => NewsPostType::all(),
            ]);
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to edit this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function doDeleteNews(Request $request, $id)
    {
        $post = News::where('id', $id)->first();

        if ($post->user_id == $request->user()->id) {
            $post->remove();
            $successes = new MessageBag;
            $successes->add(1, 'Post deleted successfully.');

            session()->flash('successes', $successes);

            return redirect()->back();
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to delete this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function doFeaturedNews(Request $request, $id)
    {
        $post = News::where('id', $id)->first();

        if ($post->user_id == $request->user()->id) {
            $post->updateFeatured();

            return redirect()->back();
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to edit this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function doDeleteFeaturedNews(Request $request, $id)
    {
        $post = News::where('id', $id)->first();

        if ($post->user_id == $request->user()->id) {
            $post->deleteImage(7);

            return redirect()->back();
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to delete this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function doNewsQuickSearch(Request $request)
    {
        $results = News::where([
            ['user_id', $request->user()->id],
            ['post_title', 'like', '%'.$request->search_term.'%'],
        ])->orWhere([
            ['user_id', $request->user()->id],
            ['post_content', 'like', '%'.$request->search_term.'%'],
        ])->get();

        return json_encode($results);
    }

    public function doDeleteNewsGalleryImage(Request $request, $id)
    {
        $image = Image::where('id', $id)->first();

        if ($image->news()->user_id == $request->user()->id) {
            $image->remove();

            return redirect()->back();
        } else {
            $errors = new MessageBag;
            $errors->add(1, 'You do not have permission to edit this.');

            return redirect()->back()->with('errors', $errors);
        }
    }

    public function doNewsBulkDelete(Request $request)
    {
        $ids = explode(',', $request->to_delete);
        foreach ($ids as $id) {
            $post = News::findOrFail($id);

            if ($post->user_id == $request->user()->id) {
                $post->remove();
            } else {
                $errors = new MessageBag;
                $errors->add(1, 'You do not have permission to delete this.');

                return redirect()->back()->with('errors', $errors);
            }

            $successes = new MessageBag;
            $successes->add(1, 'Posts deleted successfully.');

            session()->flash('successes', $successes);
        }

        return redirect()->back();
    }

    public function doAddYouTubeChannelID(Request $request)
    {
        $request->user()->setYouTubeChannelID($request->youtube_channel_id);

        return redirect()->back();
    }
}