| Server IP : 23.254.227.96 / Your IP : 216.73.216.21 Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64 User : viralblo ( 1001) PHP Version : 8.1.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/viralblo/instantblog/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use App\Models\Post;
use App\Models\Content;
use App\Models\Setting;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Gate;
use Image;
use Validator;
class HomeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
if (Gate::allows('moderator-post')) {
$posts = Post::orderBy('id', 'DESC')
->wherePostLive(0)
->simplePaginate(15);
} else {
$posts = Post::orderBy('id', 'DESC')
->whereUserId(auth()->user()->id)
->wherePostLive(0)
->simplePaginate(15);
}
return view('home', compact('posts'));
}
public function store(Request $request)
{
$attributes = request(['post_title', 'post_instant', 'post_color', 'post_slug', 'post_desc', 'post_media', 'post_video', 'media_alt']);
$validator = Validator::make($request->all(), [
'content.*' => 'required',
'post_title' => 'required',
]);
$attributes['post_slug'] = null;
$attributes['user_id'] = Auth::user()->id;
if(auth()->user()->can('publish-post')) {
$attributes['post_live'] = '1';
} else {
$attributes['post_live'] = Setting::first()->check_cont;
}
if (!empty($request->post_video)) {
$attributes['post_video'] = substr($request->post_video, strrpos($request->post_video, 'v=') + 2);
$attributes['video_url'] = $request->post_video;
}
if ($validator->passes()) {
if ($request->has('content')) {
$types = $request->input('type');
$contents = $request->input('content');
$extras = $request->input('extra');
$links = $request->input('link');
$blanks = $request->input('blank');
$social = array('tweet', 'facebook', 'instagram', 'pinterest', 'tiktok');
foreach ($contents as $key => $value) {
$collections[$key] = [
'type' => $types[$key],
'body' => $value
];
if ($types[$key] == 'image' OR 'header') {
$collections[$key]['extra'] = $extras[$key];
}
if ($types[$key] == 'image') {
$collections[$key]['link'] = current($links);
$collections[$key]['blank'] = current($blanks);
next($links);
next($blanks);
}
if ($types[$key] == 'youtube') {
$collections[$key]['body'] = substr($value, strrpos($value, 'v=') + 2);
}
if (in_array($types[$key], $social)) {
$collections[$key]['embed_id'] = $value;
} else {
$collections[$key]['embed_id'] = null;
}
}
}
$post = Post::create($attributes);
$postid = $post->id;
if (isset($request->tag_id)) {
$post->tags()->sync(request(['tag_id']));
} else {
$post->tags()->sync(array());
}
if ($request->has('content')) {
foreach ($collections as $collection) {
$collection['post_id'] = $postid;
Content::create($collection);
}
}
return response()->json(['success'=>__('messages.postcreated')]);
}
return response()->json(['error'=>$validator->errors()->all()]);
}
public function show($id)
{
//Show single post
$post = Post::findOrFail($id);
return view('member.show', compact('post'));
}
public function edit($id)
{
//Edit single post
$post = Post::findOrFail($id);
$postTag = Post::findOrFail($id)->tags()->withPivot('tag_id')->first();
return view('member.edit', compact('post', 'postTag'));
}
public function update(Request $request, $id)
{
//Update edited single post
$post = Post::findOrFail($id);
$attributes = request(['post_title', 'post_slug', 'post_instant', 'post_color', 'post_desc', 'post_media', 'post_video', 'post_live', 'edit_id', 'media_alt']);
$attributes['edit_id'] = Auth::user()->id;
if (!empty($request->post_video)) {
$attributes['post_video'] = substr($request->post_video, strrpos($request->post_video, 'v=') + 2);
$attributes['video_url'] = $request->post_video;
}
if (empty($request->post_color)) {
if (!empty($post->post_color)) {
$attributes['post_color'] = $post->post_color;
} else {
$attributes['post_color'] = 'bg-dark';
}
}
$validator = Validator::make($request->all(), [
'post_title' => [
'required',
],
'post_slug' => [
'required',
Rule::unique('posts')->ignore($post->id),
],
'content.*' => 'required'
]);
if ($validator->passes()) {
if ($request->has('content')) {
$types = $request->input('type');
$contents = $request->input('content');
$extras = $request->input('extra');
$links = $request->input('link');
$blanks = $request->input('blank');
$social = array('tweet', 'facebook', 'instagram', 'pinterest', 'tiktok');
foreach ($contents as $key => $value) {
$collections[$key] = [
'post_id' => $id,
'type' => $types[$key],
'body' => $value
];
if ($types[$key] == 'image' OR 'header') {
$collections[$key]['extra'] = $extras[$key];
}
if ($types[$key] == 'image') {
$collections[$key]['link'] = current($links);
$collections[$key]['blank'] = current($blanks);
next($links);
next($blanks);
}
if ($types[$key] == 'youtube') {
$collections[$key]['body'] = substr($value, strrpos($value, 'v=') + 2);
}
if (in_array($types[$key], $social)) {
$collections[$key]['embed_id'] = $value;
} else {
$collections[$key]['embed_id'] = null;
}
}
}
if ($request->has('post_instant')) {
$attributes['post_instant'] = '1';
} else {
$attributes['post_instant'] = '0';
}
if ($request->has('post_live')) {
$post->update($attributes);
} else {
$attributes['post_live'] = '0';
$post->update($attributes);
}
if (isset($request->tag_id)) {
$post->tags()->sync(request(['tag_id']));
} else {
$post->tags()->sync(array());
}
if ($post->contents) {
$post->contents()->delete();
}
if ($request->has('content')) {
foreach ($collections as $collection) {
Content::create($collection);
}
}
return response()->json(['success'=>__('messages.postedited')]);
}
return response()->json(['error'=>$validator->errors()->all()]);
}
public function destroy($id)
{
//Delete single post
$post = Post::findOrFail($id);
if(!empty($post->post_media)) {
$filename = public_path().'/uploads/'.$post->post_media;
$delete_success = \File::delete($filename);
}
$post->tags()->detach();
if ($post->contents) {
foreach ($post->contents as $item) {
if ($item->embed) {
$item->embed->delete();
}
if ($item->type == 'image') {
$filename = public_path().'/uploads/'.$item->body;
$delete_success = \File::delete($filename);
}
}
}
if ($post->allcomments) {
$post->allcomments()->delete();
}
$post->contents()->delete();
$post->delete();
session()->flash('message', __('messages.postdeleted'));
return redirect('/home');
}
public function addpost()
{
return view('member.add');
}
public function delcontent(Request $request)
{
//Delete single content
$delid = $request->id;
$content = Content::findOrFail($delid);
if(!empty($content->embed)) {
$content->embed->delete();
}
$success = $content->delete();
if ($success) {
return response()->json(['success'=> __('messages.contdeleted')]);
}
return response()->json(['error'=> __('messages.contnotdeleted')]);
}
}