<?php
/**
 * Notification file.
 *
 * @package Activitypub
 */

namespace Activitypub;

/**
 * Notification class.
 */
class Notification {
	/**
	 * The type of the notification.
	 *
	 * @var string
	 */
	public $type;

	/**
	 * The actor URL.
	 *
	 * @var string
	 */
	public $actor;

	/**
	 * The Activity object.
	 *
	 * @var array
	 */
	public $object;

	/**
	 * The WordPress User-Id.
	 *
	 * @var int
	 */
	public $target;

	/**
	 * Notification constructor.
	 *
	 * @param string $type     The type of the notification.
	 * @param string $actor    The actor URL.
	 * @param array  $activity The Activity object.
	 * @param int    $target   The WordPress User-Id.
	 */
	public function __construct( $type, $actor, $activity, $target ) {
		$this->type   = $type;
		$this->actor  = $actor;
		$this->object = $activity;
		$this->target = $target;
	}

	/**
	 * Send the notification.
	 */
	public function send() {
		$type = \strtolower( $this->type );

		do_action( 'activitypub_notification', $this );
		do_action( "activitypub_notification_{$type}", $this );
	}
}