Allow access to the menu item in menu page handler
authorMarcel Werk <burntime@woltlab.com>
Thu, 18 Jan 2024 16:39:22 +0000 (17:39 +0100)
committerMarcel Werk <burntime@woltlab.com>
Thu, 18 Jan 2024 16:39:22 +0000 (17:39 +0100)
wcfsetup/install/files/lib/data/menu/item/MenuItem.class.php
wcfsetup/install/files/lib/system/page/handler/AbstractMenuPageHandler.class.php
wcfsetup/install/files/lib/system/page/handler/IMenuPageHandler.class.php

index 2d5bbf432bcc0b8b5b045a5125dda75cd75c4564..c845af84e6d2f5d4515902fdc824bfd2a9af9015 100644 (file)
@@ -185,6 +185,8 @@ class MenuItem extends DatabaseObject implements ITitledObject
                 if (!($this->handler instanceof IMenuPageHandler)) {
                     throw new ImplementationException(\get_class($this->handler), IMenuPageHandler::class);
                 }
+
+                $this->handler->setMenuItem($this);
             }
         }
 
index b0682e4e05227277bb3b8043c7716e1a07a53dde..c674dd38c264c77e50d170dfcf1bacf9524d3a15 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace wcf\system\page\handler;
 
+use wcf\data\menu\item\MenuItem;
+
 /**
  * Default implementation for pages supporting visibility and outstanding items.
  *
@@ -15,6 +17,11 @@ namespace wcf\system\page\handler;
  */
 abstract class AbstractMenuPageHandler implements IMenuPageHandler
 {
+    /**
+     * @since 6.1
+     */
+    private MenuItem $menuItem;
+
     /**
      * @inheritDoc
      */
@@ -37,4 +44,20 @@ abstract class AbstractMenuPageHandler implements IMenuPageHandler
     public function cacheObject(int $objectID): void
     {
     }
+
+    /**
+     * @inheritDoc
+     */
+    public function setMenuItem(MenuItem $menuItem): void
+    {
+        $this->menuItem = $menuItem;
+    }
+
+    /**
+     * @inheritDoc
+     */
+    public function getMenuItem(): MenuItem
+    {
+        return $this->menuItem;
+    }
 }
index 3a1d9becf1f3ccc9ac20262f6d8bcadb075db988..46d2da7b9208a80e12de00dbcde537d57328060b 100644 (file)
@@ -2,6 +2,8 @@
 
 namespace wcf\system\page\handler;
 
+use wcf\data\menu\item\MenuItem;
+
 /**
  * Default interface for pages supporting visibility and outstanding items.
  *
@@ -36,4 +38,17 @@ interface IMenuPageHandler
      * @since 6.0
      */
     public function cacheObject(int $objectID): void;
+
+    /**
+     * Sets the menu item of this handler.
+     * This is intended to allow the handler to react to information from the MenuItem.
+     *
+     * @since 6.1
+     */
+    public function setMenuItem(MenuItem $menuItem): void;
+
+    /**
+     * @since 6.1
+     */
+    public function getMenuItem(): MenuItem;
 }