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/www/mpl.imenso.co/app/Repositories/NotificationRepository.php
<?php

namespace App\Repositories;

use App\Models\Notification;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Support\Collection;

class NotificationRepository extends Repository
{
    public $user;

    public static function forUser(User $user)
    {
        $repo = new self;
        $repo->user = $user;

        return $repo;
    }

    public function get()
    {
        $notification = Notification::where('user_id', $this->user->id)
            ->orderBy('created_at', 'DESC')
            ->take($this->take)
            ->get();

        foreach ($notification as $note) {
            $this->items->push($note);
        }

        return $this->items;
    }

    public function prepareForExternalUse()
    {
        $flattened = new Collection;

        foreach ($this->items as $item) {
            $data = $item->toArray();

            $data['content'] = str_replace(["\r\n", "\r", "\n", "\t"], '', $data['content']);
            // $data['content'] = str_replace("url('/images", "url('https://www.musicplanetlive.com/images", $data['content']);
            $data['content'] = str_replace("url('///www.musicplanetlive.com", "url('https://www.musicplanetlive.com", $data['content']);
            $data['content'] = str_replace("url('/https://www.musicplanetlive.com", "url('https://www.musicplanetlive.com", $data['content']);
            $data['image'] = '';
            preg_match("/\(\'(.*?)\'\)/", $data['content'], $matches);
            if (isset($matches[1])) {
                $data['image'] = $matches[1];
            }

            $data['readable_time'] = Carbon::parse($data['created_at'])->diffForHumans();

            $flattened->push($data);
        }

        return $flattened;
    }

    public function dismiss()
    {
        $notification = Notification::where('user_id', $this->user->id)
            ->get();

        foreach ($notification as $note) {
            $note->markAsDismissed();
        }

        return true;
    }
}