HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/PodcastController.php
<?php

namespace App\Http\Controllers;

use App\ClubParameter;
use App\Publication;
use App\PublicationContent;
use App\PublicationTag;
use App\Tag;
use Illuminate\Http\Request;
use Datatables;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Auth;

class PodcastController extends Controller
{
    private $util;
    public function __construct()
    {
        $this->util = new UtilController();
    }

    public function index()
    {
        return view('podcast_club.list');
    }

    public function indexAdd($id = null)
    {
        $multiselectItems = Tag::select('id', 'name')->where('active', true)->get();
        $parameters = ClubParameter::first();

        $view = view('podcast_club.create', compact('multiselectItems', 'parameters'));
        if ($id) {
            $publication = Publication::find($id);
            $view->with('publication', $publication);
        }
        return $view;
    }

    public function indexEdit($id)
    {
        $publication = Publication::find($id);
        $publicationContent = PublicationContent::where('publication_id', $id)->get();
        $publicationContentLink = '';
        $linkString = '';
        $linkString .= $publication->image;
        foreach ($publicationContent as $index => $content) {
            $publicationContentLink .= $content->link;
            if ($index < count($publicationContent) - 1) {
                $publicationContentLink .= ",\n";
            }
        }
        $multiselectItems = Tag::select('id', 'name')->where('active', true)->get();
        $multiselectValues = PublicationTag::select('tag_id')->where('publication_id', $id)->get();
        $parameters = ClubParameter::first();
        return view('podcast_club.edit', compact('publication', 'linkString', 'publicationContentLink', 'multiselectItems', 'multiselectValues', 'parameters'));
    }

    public function tableFilter()
    {
        DB::statement("SET sql_mode = ''");
        $obj = Publication::select(
            'publications.image',
            'publications.id',
            'publications.name',
            'publications.init_date',
            'publications.end_date',
            'publications.description',
            'publications.likes_enabled',
            'publications.comments_enabled',
            'publications.active',
            'publications.created_at',
            DB::raw('GROUP_CONCAT(DISTINCT(tags.name)) AS segmentation')
        )
            ->leftjoin('publication_tag', 'publication_tag.publication_id', '=', 'publications.id')
            ->leftjoin('tags', function ($join) {
                $join->on('tags.id', '=', 'publication_tag.tag_id')->where('tags.active', 1);
            })
            ->where('publications.type', 'podcast')
            ->where('publications.active', true)
            ->with('publicationContent')
            ->groupBy('publications.id');
        DB::statement("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'");

        return Datatables::of($obj)
            ->addColumn('link', function ($obj) {
                if (isset($obj->publicationContent[0])) {
                    return '
                    <div>
                        <iframe src="' . $obj->publicationContent[0]->link . '" frameborder="0" allowfullscreen></iframe>
                    </div>
                    ';
                } else {
                    return '<div>No content available</div>';
                }
            })
            ->addColumn('image', function ($obj) {
                $totalImages = $obj->image;
                if ($totalImages) {
                    $images = array();
                    $images[] = $obj->image;
                    $name = $obj->name;
                    $id = $obj->id;
                    return $this->util->generateCarouselImagesPhotosClub($images, $name, $id);
                } else {
                    return $this->util->generateEmptyImageColumn();
                }
            })
            ->addColumn('actions', function ($obj) {
                $actions = '
                <i class="fa fa-pencil iconMini" onClick="clickEdit(' . $obj->id . ')" data-id="' . $obj->id . '" title="Editar"></i>
                <i class="fa fa-trash iconMini" onClick="clickDelete(' . $obj->id . ')" data-id="' . $obj->id . '" title="Eliminar"></i>
                <i class="fa fa-copy iconMini" onClick="clickCopy(' . $obj->id . ')" data-id="' . $obj->id . '" title="Copiar"></i>
                ';
                return $actions;
            })
            ->editColumn('created_at', function ($obj) {
                return \Carbon\Carbon::parse($obj->created_at)->format('Y-m-d h:i:s A');
            })
            ->editColumn('active', function ($obj) {
                if ($obj->active == 0) {
                    return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" class="chk" onChange="chk(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" /> <span></span>Si </label></div> </label> </div>';
                } else {
                    return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label>   No <input type="checkbox" class="chk" onChange="chk(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" /><span></span> Si </label> </div>  </label> </div>';
                }
            })
            ->rawColumns(['active', 'actions', 'image', 'link'])
            ->make(true);
    }


    public function create(Request $request)
    {
        try {
            $request->request->remove('urls');
            $type = 'podcast';
            $publishertype = 'admin';
            $userId = Auth::user()->id;
            $request->merge(['publisher_type' => $publishertype]);
            $request->merge(['user_id' => $userId]);
            $request->merge(['type' => $type]);
            $request->request->remove('tags');
            $tags = $request["tags"];
            $request->request->remove('tags');
            $data = $request->except(['generalMultiselect', 'tags']);
            $link = $request["link"];
            $request->request->remove('link');

            $textNotification = $request["text_notification_push"];
            $request->request->remove('text_notification_push');
            $date = $request["date"];
            $request->request->remove('date');
            $time = $request["time"];
            $request->request->remove('time');

            if ($model = Publication::create($data)) {
                if ($tags != null) {
                    foreach ($tags as $tagId) {
                        PublicationTag::create([
                            'tag_id'        => $tagId,
                            'publication_id' => $model->id
                        ]);
                    }
                }
                if ($link) {
                    if (strpos($link, ',') !== false) {
                        $linksArray = explode(',', $link);
                        foreach ($linksArray as $individualLink) {
                            $publicationContent = PublicationContent::firstOrCreate(
                                ['publication_id' => $model->id, 'link' => $individualLink],
                                ['publication_id' => $model->id, 'link' => $individualLink]
                            );
                        }
                    } else {
                        $publicationContent = PublicationContent::firstOrCreate(
                            ['publication_id' => $model->id, 'link' => $link],
                            ['publication_id' => $model->id, 'link' => $link]
                        );
                    }
                }
                if ($request["enable_notification_push"]) {
                    NotificationPushConfigController::pushNotificationClub($tags, $textNotification, $date, $time, $model->id);
                }
                return response(array("r" => true, "type" => "success", "title" => "", "m" => __('messages.created_successfully'), "data" => $model->id));
            } else {
                return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_creating'), "data" => null));
            }
        } catch (\Exception $e) {
            return response(
                array(
                    "r" => false,
                    "type" => "error",
                    "title" => "Oops...",
                    "m" => __($e->getMessage()),
                    "data" => null
                )
            );
        }
    }

    public function update(Request $request, $id)
    {
        try {
            $deleteImageArray = $request["deleteFilesArray"];
            $request->request->remove('deleteFilesArray');
            Publication::whereIn('image', $deleteImageArray)->where('id', $id)->update(['image' => null]);
            $request->request->remove('urls');
            $request['id'] = $id;
            $tags = $request["tags"];
            $request->request->remove('tags');
            $link = $request["link"];
            $request->request->remove('link');
            $publicationContent = PublicationContent::where('publication_id', $id)->delete();

            $textNotification = $request["text_notification_push"];
            $request->request->remove('text_notification_push');
            $date = $request["date"];
            $request->request->remove('date');
            $time = $request["time"];
            $request->request->remove('time');

            $data = $request->except(['generalMultiselect', 'tags', 'enable_notification_push']);

            if (Publication::where('id', $id)->update($data)) {
                PublicationTag::where('publication_id', $id)->delete();
                if ($tags != null) {
                    foreach ($tags as $tagId) {
                        PublicationTag::create([
                            'tag_id'        => $tagId,
                            'publication_id' => $id
                        ]);
                    }
                }
                if ($link) {
                    if (strpos($link, ',') !== false) {
                        $linksArray = explode(',', $link);
                        foreach ($linksArray as $individualLink) {
                            $trimmedLink = trim($individualLink);

                            if (!empty($trimmedLink)) {
                                $publicationContent = PublicationContent::firstOrCreate(
                                    ['publication_id' => $id, 'link' => $trimmedLink],
                                    ['publication_id' => $id, 'link' => $trimmedLink]
                                );
                            }
                        }
                    } else {
                        $publicationContent = PublicationContent::firstOrCreate(
                            ['publication_id' => $id, 'link' => $link],
                            ['publication_id' => $id, 'link' => $link]
                        );
                    }
                }
                if ($request["enable_notification_push"]) {
                    NotificationPushConfigController::pushNotificationClub($tags, $textNotification, $date, $time, $id);
                }
                return response(array("r" => true, "type" => "success", "title" => "", "m" => __('messages.created_successfully'), "data" => $id));
            } else {
                return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_creating'), "data" => null));
            }
        } catch (\Exception $e) {
            return response(
                array(
                    "r" => false,
                    "type" => "error",
                    "title" => "Oops...",
                    "m" => __($e->getMessage()),
                    "data" => null
                )
            );
        }
    }

    public function delete($id)
    {
        try {
            if (Publication::where('id', $id)->delete()) {
                return response(array("r" => true, "type" => "success", "title" => "", "m" => __('messages.deleted_successfully'), "data" => null));
            } else {
                return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_removing'), "data" => null));
            }
        } catch (\Illuminate\Database\QueryException $e) {
            return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.delete_relation_data'), "data" => null));
        }
    }

    public function activate(Request $request)
    {
        try {
            $id = $request['id'];
            $state = $request['state'];

            $instagram = Publication::find($id);
            $instagram->active = $state;
            $instagram->update();

            return array('r' => true, 'd' => null, 'm' => __('messages.updated_successfully'));
        } catch (\Throwable $th) {
            return array('r' => false, 'd' => null, 'm' => __('messages.error_updating'));
        }
    }

    public function deleteProductImage(Request $request)
    {
        $publicationId = $request['id'];
        $link = $request['link'];
        $publication = Publication::find($publicationId);
        try {
            if ($publication) {
                $publication->image = null;
                $publication->save();
            }
            return array('r' => true, 'd' => $publicationId, 'm' => trans('messages.screen_products_tag66'));
        } catch (\Exception $e) {
            return array('r' => false, 'd' => null, 'm' => trans('messages.screen_products_tag68'));
        }
    }

    public function saveImages(Request $request)
    {
        try {
            $imageUrls = [];
            $publication =  Publication::where('id', $request->id)->first();
            $namePublication = $publication->name;

            $image = $request->file('file');

            $compressedImg = null; /* ImageCompressor::compress(
            $image,
            $image->getClientOriginalName()
        ); */

            if (!$compressedImg) {
                $compressedImg = $image;
            }

            $compressedSize = filesize($compressedImg);
            $compressedSizeMB = number_format($compressedSize / 1048576, 2);
            if ($compressedSizeMB > 3) {
                return response([
                    "r" => false,
                    "type" => "error",
                    "title" => "Oops...",
                    "m" => __('messages.photos_club.size_photos'),
                    "data" => null
                ]);
            }

            $extension = $image->getClientOriginalExtension();
            $filenametostore = $request->id . '_' . uniqid() . '.' . $extension;

            Storage::disk('s3')->put(config('s3.default') . '/fan_engagement/photos/' . $namePublication . '/' . $filenametostore, fopen($compressedImg, 'r+'), 'public');

            $url = config('filesystems.disks.s3.url') . '/fan_engagement/photos/' . $namePublication . '/' . $filenametostore;
            $publication->image = $url;
            $publication->save();
            $imageUrls[] = $url;

            return response([
                "r" => true,
                "type" => "success",
                "title" => "",
                "m" => __('messages.updated_successfully'),
                "data" => $imageUrls
            ]);
        } catch (\Throwable $th) {
            return response([
                "r" => false,
                "type" => "error",
                "title" => "Oops...",
                "m" => __('messages.error_updating'),
                "data" => $th->getMessage()
            ]);
        } finally {
            if (isset($compressedImg)) {
                if (file_exists($compressedImg)) {
                    unlink($compressedImg);
                }
            }
        }
    }
}