librenms/app/Models/AlertTransport.php
Tony Murray 0b8b97bb68
Push Notifications (Mobile and PC) (#13277)
* Update manifest and add service worker
cleanup icons a bit

* Push notifications WIP

* navigate working

* cleanup

* acknowledge wired up

* Set VAPID keys on composer install

* Component to control notification permissions.

* Allow all user option to validate

* Enable on browser load if transport exists.

* Check for transport before showing user permissions
translations

* Documentation

* style fixes

* access via the attribute model

* fix alerting test

* update schema

* cleanup subscription on disable

* non-configurable db and table for webpush subscriptions (respect system connection)

* revert AlertTransport change
hopefully phpstan can figure it out

* phpstan fixes

* Support custom details display

* Match transport names to brand's preferred display

* less duplicate id errors

* Tests are done in Laravel code now so
remove legacy function usage... could be better, but ok

* Style fixes

* Style fixes 2

* Fix alert test

* Doc updates requires HTTPS and GMP

* unregister subscription when permission is set to denied

* cleanup after user deletion

* delete the right thing

* fix whitespace

* update install docs to include php-gmp

* suggest ext-gmp

* update javascript

* Update functions.php

Co-authored-by: Jellyfrog <Jellyfrog@users.noreply.github.com>
2021-10-06 07:29:47 -05:00

46 lines
1.5 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use LibreNMS\Alert\Transport;
/**
* \App\Models\AlertTransport
*
* @property int $transport_id
* @property string $transport_name
* @property string $transport_type
* @property bool $is_default
* @property array|null $transport_config
*
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport query()
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport whereIsDefault($value)
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport whereTransportConfig($value)
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport whereTransportId($value)
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport whereTransportName($value)
* @method static \Illuminate\Database\Eloquent\Builder|AlertTransport whereTransportType($value)
* @mixin \Eloquent
*/
class AlertTransport extends Model
{
use HasFactory;
protected $primaryKey = 'transport_id';
public $timestamps = false;
protected $casts = [
'is_default' => 'boolean',
'transport_config' => 'array',
];
public function instance(): Transport
{
$class = Transport::getClass($this->transport_type);
return new $class($this);
}
}