PHPackages                             digitalcloud/advanced-notifications - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. digitalcloud/advanced-notifications

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

digitalcloud/advanced-notifications
===================================

v0.1(7y ago)141MITPHPPHP &gt;=7.1.0

Since Jan 13Pushed 7y ago4 watchersCompare

[ Source](https://github.com/DigitalCloud/advanced-notifications)[ Packagist](https://packagist.org/packages/digitalcloud/advanced-notifications)[ RSS](/packages/digitalcloud-advanced-notifications/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)DependenciesVersions (2)Used By (0)

Laravel Advanced Notifications
==============================

[](#laravel-advanced-notifications)

This package allows you to manage system notifications in a database.

Description
-----------

[](#description)

When working with systems which dealing with large number of customers, notification management become kind of complex issue, and a notifications management tool will be appreciated. Here we introduce a powerful tool which allow you to manage notifications for your system. we offer api for enable and disable notifications on many levels as the following

- you can disable notification globally, so the system will no longer send notifications of this type.
- you can disable a notification channel globally, so the system will no longer send notification on this channel.
- you can disable notification for a specific notifiable object on a specific notifications and/or channels.

Installation
------------

[](#installation)

You can install the package via composer:

```
composer require digitalcloud/advanced-notifications
```

In Laravel 5.5 the service provider will automatically get registered. In older versions of the framework just add the service provider in config/app.php file:

```
    'providers' => [
        DigitalCloud\AdvancedNotifications\AdvancedNotificationsServiceProvider::class,
    ];

```

You can publish the migration with:

```
php artisan vendor:publish --provider="DigitalCloud\AdvancedNotifications\AdvancedNotificationsServiceProvider" --tag="migrations"
```

After the migration has been published you can create advanced notification tables by running the migrations:

```
php artisan migrate
```

After install, you can do stuff like this:

```
    // disable/enable all notifications for specific channel
    AdvancedNotifications::setChannelStatus('database', false); // true to enable

    // get specific channel status
    $channelStatus = AdvancedNotifications::getChannelStatus('database');

    //  disable/enable a specific notification globally- for all users.
    AdvancedNotifications::setNotificationStatus(InvoicePaid::class, false); // true to enable

    // get a specific notification status
    $notificationStatus = AdvancedNotifications::getNotificationStatus(InvoicePaid::class);

    // disable/enable a specific notification for a specific notifiable.
    $notifiable = \App\User::find(1);
    AdvancedNotifications::setNotificationStatusForNotifiable(InvoicePaid::class, $notifiable, false); // true to enable

    // get a specific notification status for a specific notifiable.
    $notificationStatusForNotifiable = AdvancedNotifications::getNotificationStatusForNotifiable(InvoicePaid::class, $notifiable);

    // disable/enable a specific channel for a specific notifiable.
    AdvancedNotifications::setChannelStatusForNotifiable('database', $notifiable, false); // true to enable

    // get a specific channel status for a specific notifiable.
    $channelStatusForNotifiable = AdvancedNotifications::getChannelStatusForNotifiable('database', $notifiable);
```

This package will respect the status of each channel, notification and notifiable, it will test the status of those types before actually sending the notification.

Usage
-----

[](#usage)

##### Example 1:

[](#example-1)

It is best practice to leave the job of preparing the notifiable objects to notification itself. so using `getNotifiables()` and `setNotifiables()` will make your code more tidy and clean. a nice example of this:

```
