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;
}
}