Menu
in package
implements
ArrayAccess
uses
ArrayAccessHelper
Represents a menu, such as the admin menu or profile menu.
The $data parameter for the constructor is array of sections, which contain areas, which can contain subsections. The properties for each are as follows:
For Sections:
string title: Section title.
bool enabled: Should this section be accessible?
array areas: Array of areas within this section. (See below.)
array permission: Permission required to access the whole section.
For Areas:
string label: Optional text string for link. If this is not set,
Lang::$txt[$area_id] will be used.
string file: Name of source file required for this area.
string function: Function to call when area is selected.
string custom_url: URL to use for this menu item.
bool enabled: Should this area be accessible?
bool hidden: Should this area be visible? (Used when an area is
accessible but should not be shown.)
string select: If set this item will not be displayed. Instead the
item indexed here will be.
array subsections: Array of subsections from this area. (See below.)
array permission: Array of permissions to determine who can access
this area.
For Subsections:
string label: Text label for this subsection.
array permission: Array of permissions to check for this subsection.
bool enabled: Should this subsection be accessible?
bool is_default: Is this the default subaction? If no subsection is
set as the default, the first one will be used.
The $options parameter for the constructor is an array that can contain some some combination of the following:
string action: The action for this menu. If this is not set, it
will be determined automatically.
string current_area: The currently selected area. If this is not set, it
will be determined automatically.
string base_url: The base URL for items in this menu. If this is not
set, it will be determined automatically.
string template_name: The theme template to load for this menu.
string layer_name: The template layer to load for this menu.
bool do_big_icons: If true, get large icons for admin home page.
array extra_url_parameters:
Key-value pairs of extra parameters to append to
the menu item URLs.
bool disable_url_session_check:
If true, does not append the session parameter to
the menu item URLs.
bool disable_hook_call:
If true, skips the integrate_{action}_areas hook.
Table of Contents
Interfaces
- ArrayAccess
Properties
- $base_url : string
- $current_action : string
- $current_area : string
- $current_section : string
- $current_subsection : string
- $extra_parameters : string
- $id : int
- $include_data : array<string|int, mixed>
- $layer_name : string
- $loaded : array<string|int, mixed>
- $max_id : int
- $name : string
- $sections : array<string|int, mixed>
- $tab_data : array<string|int, mixed>
- $template_name : string
- $backup_area : string
- $data : array<string|int, mixed>
- $found_section : bool
- $options : array<string|int, mixed>
Methods
- __construct() : mixed
- Constructor.
- create() : array<string|int, mixed>|false
- Static wrapper for constructor.
- destroy() : void
- Delete a menu.
- offsetExists() : bool
- Checks whether a property has been set when object is accessed as an array.
- offsetGet() : mixed
- Gets properties when object is accessed as an array.
- offsetSet() : void
- Sets properties when object is accessed as an array.
- offsetUnset() : void
- Unsets properties when object is accessed as an array.
- buildArea() : void
- Build the data array for an area of the menu.
- buildExtraParameters() : void
- Build a list of additional parameters that should go in the URL.
- buildSection() : void
- Build the data array for a section of the menu.
- buildSubsection() : void
- Build the data array for a subsection of the menu.
- checkBaseUrl() : void
- Goes through all the sections to check if the base menu has an url.
- enabledAndAllowed() : bool
- Checks whether the given menu item is enabled and whether the current user has permission to access it.
- setAreaIcon() : void
- Sets the icon for an area.
- setCurrentSectionAndArea() : void
- Figures out which section and area the user is currently viewing.
- setSelected() : void
- Figures out which section, area, and subsection are currently selected.
Properties
$base_url
public
string
$base_url
Base URL for the menu's buttons.
$current_action
public
string
$current_action
= ''
The action that the user is currently viewing.
This corresponds to the 'action=...' URL parameter.
$current_area
public
string
$current_area
= ''
The area within the action that the user is currently viewing.
This corresponds to the 'area=...' URL parameter.
$current_section
public
string
$current_section
= ''
The section of the menu that the current area is in.
This does not correspond to an URL parameter. It is just a way of organizing the areas within the action.
$current_subsection
public
string
$current_subsection
= ''
The subsection within the area that the user is currently viewing.
This corresponds to the 'sa=...' URL parameter.
$extra_parameters
public
string
$extra_parameters
= ''
Extra URL parameters that should be appended to menu item links.
Typically this contains the session parameter, if anything.
$id
public
int
$id
ID number of this menu.
$include_data
public
array<string|int, mixed>
$include_data
= []
Data about files to include, functions to call, etc., in order to make the current area work.
$layer_name
public
string
$layer_name
The template layer to load for this menu.
$loaded
public
static array<string|int, mixed>
$loaded
= []
All loaded instances of this class. Keys are action names.
$max_id
public
static int
$max_id
= 0
The highest $id value that has been assigned to a menu thus far.
$name
public
string
$name
= ''
Generic name of this menu. Simply takes the form: 'menu_data_' . $id Used to provide a unique key in Utils::$context.
$sections
public
array<string|int, mixed>
$sections
= []
The constructed hierarchical menu data.
$tab_data
public
array<string|int, mixed>
$tab_data
= []
A set of tab buttons to show in a secondary menu below the main menu.
This is intended for more complex menus. The tab buttons typically (but not always) correspond to the menu items in the current subsection.
$template_name
public
string
$template_name
The theme template to load for this menu.
$backup_area
protected
string
$backup_area
Fallback area to show if $current_area can't be shown.
$data
protected
array<string|int, mixed>
$data
= []
Holds the $data parameter passed to the constructor.
$found_section
protected
bool
$found_section
= false
Whether we have found the current section yet.
Used while we are building the menu's sections.
$options
protected
array<string|int, mixed>
$options
= []
Holds the $options parameter passed to the constructor.
Methods
__construct()
Constructor.
public
__construct(array<string|int, mixed> $data[, array<string|int, mixed> $options = [] ]) : mixed
Parameters
- $data : array<string|int, mixed>
-
An array of menu data.
- $options : array<string|int, mixed> = []
-
An array of menu options.
create()
Static wrapper for constructor.
public
static create(array<string|int, mixed> $data[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>|false
Parameters
- $data : array<string|int, mixed>
-
An array of menu data.
- $options : array<string|int, mixed> = []
-
An array of menu options.
Return values
array<string|int, mixed>|false —Info about the selected menu item, or false if nothing to show.
destroy()
Delete a menu.
public
static destroy([int|string $id = 'last' ]) : void
Parameters
- $id : int|string = 'last'
-
The ID of a menu, or 'last' for the most recent one.
offsetExists()
Checks whether a property has been set when object is accessed as an array.
public
offsetExists(mixed $prop) : bool
Parameters
- $prop : mixed
-
The property name.
Return values
booloffsetGet()
Gets properties when object is accessed as an array.
public
& offsetGet(mixed $prop) : mixed
Parameters
- $prop : mixed
-
The property name.
Return values
mixed —A reference to the property.
offsetSet()
Sets properties when object is accessed as an array.
public
offsetSet(mixed $prop, mixed $value) : void
Parameters
- $prop : mixed
-
The property name.
- $value : mixed
-
The value to set.
offsetUnset()
Unsets properties when object is accessed as an array.
public
offsetUnset(mixed $prop) : void
Parameters
- $prop : mixed
-
The property name.
buildArea()
Build the data array for an area of the menu.
protected
buildArea(array<string|int, mixed> $area) : void
Parameters
- $area : array<string|int, mixed>
-
An array of a area data.
buildExtraParameters()
Build a list of additional parameters that should go in the URL.
protected
buildExtraParameters() : void
buildSection()
Build the data array for a section of the menu.
protected
buildSection(array<string|int, mixed> $section) : void
Parameters
- $section : array<string|int, mixed>
-
An array of a section data.
buildSubsection()
Build the data array for a subsection of the menu.
protected
buildSubsection(array<string|int, mixed> $subsection) : void
Parameters
- $subsection : array<string|int, mixed>
-
An array of a subsection data.
checkBaseUrl()
Goes through all the sections to check if the base menu has an url.
protected
checkBaseUrl() : void
enabledAndAllowed()
Checks whether the given menu item is enabled and whether the current user has permission to access it.
protected
enabledAndAllowed(array<string|int, mixed> $menu_item) : bool
Parameters
- $menu_item : array<string|int, mixed>
-
An array of a menu item.
Return values
boolsetAreaIcon()
Sets the icon for an area.
protected
setAreaIcon(array<string|int, mixed> $area) : void
Parameters
- $area : array<string|int, mixed>
-
An array of a area data.
setCurrentSectionAndArea()
Figures out which section and area the user is currently viewing.
protected
setCurrentSectionAndArea() : void
setSelected()
Figures out which section, area, and subsection are currently selected.
protected
setSelected() : void