# `MishkaBlog.Notifiers.PostPublished`
[🔗](https://github.com/mishka-group/mishka_blog/blob/v0.0.1/lib/mishka_blog/notifiers/post_published.ex#L5)

A plain mishka_installer plugin: when a tenant publishes a blog post
(`blog:blog_post:after_publish`), notify the tenant's blog admins AND master admins — in one
`Notify.deliver/3` call — except the publisher themselves (the notifier's `meta.actor`, passed as
`except:`), so no one is told about their own post.

  * `{:permission, perms, site_id}` — tenant blog admins on the post's site (scoped reads).
  * `{:permission_masters, perms}` — master admins, who read unscoped and see every site's posts.

`perms` is the blog's post area on the dashboard, `admin:dashboard:blog:post`, so its holders are
told, and so is anyone holding a wildcard that covers it (`admin:dashboard:blog:*`, `admin:dashboard:*`, `admin:*`, `*`). A master publishes through
`:master_publish`, which fires its own event: `MishkaBlog.Notifiers.PostMasterPublished` listens
there and delivers through `call/2` here. Both are registered in `MishkaBlog.Application`; the
per-site on/off toggle is registered by `MishkaBlog.Notifiers.NotifySettings`.

# `error_return`

```elixir
@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}
```

# `okey_return`

```elixir
@type okey_return() :: {:ok, struct() | map() | module() | [any()]}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `config`

```elixir
@spec config() :: keyword()
```

# `config`

```elixir
@spec config(atom()) :: any()
```

# `enable`

```elixir
@spec enable() :: okey_return() | error_return()
```

# `get`

```elixir
@spec get() :: keyword()
```

# `health_check`

```elixir
@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}
```

Optional. See `c:MishkaInstaller.Event.Hook.health_check/0`. Override to report health.

# `on_dependency_error`

```elixir
@spec on_dependency_error(term()) :: term()
```

Optional. See `c:MishkaInstaller.Event.Hook.on_dependency_error/1`. Override to react.

# `register`

```elixir
@spec register() :: okey_return() | error_return()
```

# `restart`

```elixir
@spec restart() :: okey_return() | error_return()
```

# `start`

```elixir
@spec start() :: okey_return() | error_return()
```

# `start_link`

# `stop`

```elixir
@spec stop() :: okey_return() | error_return()
```

# `unregister`

```elixir
@spec unregister() :: okey_return() | error_return()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
