From 8d8f5429080e2b9fad3d00a5d2ce04625c856be5 Mon Sep 17 00:00:00 2001 From: maxpozdeev Date: Sun, 13 Nov 2022 14:56:56 +0300 Subject: [PATCH] add simple callbacks to MTTNotificationCenter --- src/includes/notifications.php | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/includes/notifications.php b/src/includes/notifications.php index 7c86eb6..efbd3d7 100644 --- a/src/includes/notifications.php +++ b/src/includes/notifications.php @@ -9,7 +9,7 @@ class MTTNotificationCenter { /** - * @var array + * @var array */ private static $observers = []; @@ -41,6 +41,20 @@ class MTTNotificationCenter } } + /** + * + * @param string $notification + * @param callable $callback + * @return void + */ + public static function addCallbackForNotification(string $notification, callable $callback) + { + if (!isset(self::$observers[$notification])) { + self::$observers[$notification] = []; + } + self::$observers[$notification][] = $callback; + } + public static function postNotification(string $notification, $object) { @@ -48,7 +62,12 @@ class MTTNotificationCenter return; // No observers for this notification } foreach (self::$observers[$notification] as $observer) { - $observer->notification($notification, $object); + if ($observer instanceof MTTNotificationObserverInterface) { + $observer->notification($notification, $object); + } + else { + $observer($object); + } } } @@ -84,3 +103,12 @@ abstract class MTTNotification const didCreateList = 'didCreateList'; } +function add_action(string $notification, callable $callback) +{ + MTTNotificationCenter::addCallbackForNotification($notification, $callback); +} + +function do_action(string $notification, $object = null) +{ + MTTNotificationCenter::postNotification($notification, $object); +}