Moodle APIs 3.9
Moodle 3.9.13+ (Build: 20220325)
|
Public Member Functions | |
__construct (moodle_page $page) | |
Constructs a new global navigation. More... | |
__wakeup () | |
Resets the page specific information on this node if it is being unserialised. | |
action () | |
Get the action url for this navigation node. More... | |
add ($text, $action=null, $type=self::TYPE_CUSTOM, $shorttext=null, $key=null, pix_icon $icon=null) | |
Adds a navigation node as a child of this node. More... | |
add_class ($class) | |
Adds a CSS class to this node. More... | |
add_course (stdClass $course, $forcegeneric=false, $coursetype=self::COURSE_OTHER) | |
Adds the given course to the navigation structure. More... | |
add_course_essentials ($coursenode, stdClass $course) | |
Adds essential course nodes to the navigation for the given course. More... | |
add_front_page_course_essentials (navigation_node $coursenode, stdClass $course) | |
This generates the structure of the course that won't be generated when the modules and sections are added. More... | |
add_node (navigation_node $childnode, $beforekey=null) | |
Adds a navigation node as a child of this one, given a $node object created using the create function. More... | |
build_flat_navigation_list (flat_navigation $nodes, $showdivider=false, $label='') | |
Walk the tree building up a list of all the flat navigation nodes. More... | |
check_if_active ($strength=URL_MATCH_EXACT) | |
Checks if this node is the active node. More... | |
clear_cache () | |
Clears the navigation cache. | |
contains_active_node () | |
Checks if this node or any of its children contain the active node. More... | |
extend_for_user ($user) | |
Extends the navigation for the given user. More... | |
find ($key, $type) | |
Searches this nodes children and their children to find a navigation node with the matching key and type. More... | |
find_active_node () | |
Finds the active node. More... | |
find_all_of_type ($type) | |
Finds all nodes of a given type (recursive) More... | |
find_expandable (array &$expandable) | |
Finds all nodes that are expandable by AJAX. More... | |
force_open () | |
Forces this node to be open and at the same time forces open all parents until the root node. More... | |
get ($key, $type=null) | |
Attempts to get the navigation with the given key from this nodes children. More... | |
get_children_key_list () | |
Return a list of all the keys of all the child nodes. More... | |
get_content ($shorttext=false) | |
Gets the content for this node. More... | |
get_css_type () | |
Gets the CSS class to add to this node to describe its type. More... | |
get_extending_users () | |
Returns all of the users the navigation is being extended for. More... | |
get_siblings () | |
Get a list of sibling navigation nodes at the same level as this one. More... | |
get_tabs_array (array $inactive=array(), $return=false) | |
Creates a tab representation of this nodes children that can be used with print_tabs to produce the tabs on a page. More... | |
get_title () | |
Gets the title to use for this node. More... | |
has_action () | |
Used to easily determine if this link in the breadcrumbs has a valid action/url. More... | |
has_children () | |
Checks if this node has or could have any children. More... | |
has_siblings () | |
True if this nav node has siblings in the tree. More... | |
hide (array $typestohide=null) | |
Hides the node and any children it has. More... | |
initialise () | |
Initialises the navigation object. More... | |
is_hidden () | |
Used to easily determine if this link in the breadcrumbs is hidden. More... | |
is_short_branch () | |
To better balance the admin tree, we want to group all the short top branches together. More... | |
load_generic_course_sections (stdClass $course, navigation_node $coursenode) | |
Generically loads the course sections into the course's navigation. More... | |
make_active () | |
Marks this node as active and forces it open. More... | |
make_inactive () | |
Marks a node as inactive and recusised back to the base of the tree doing the same to all parents. | |
remove () | |
Removes this node. More... | |
remove_class ($class) | |
Removes a CSS class from this node. More... | |
search_for_active_node () | |
Searches all children for the best matching active node. More... | |
set_expansion_limit ($type) | |
Sets an expansion limit for the navigation. More... | |
set_parent (navigation_node $parent) | |
Sets the parent for this node and if this node is active ensures that the tree is properly adjusted as well. More... | |
set_userid_for_parent_checks ($userid) | |
Mutator to set userid to allow parent to see child's profile page navigation. More... | |
title ($title) | |
Sets the title for this node and forces Moodle to utilise it. More... | |
trim_if_empty () | |
Removes this node if it is empty. | |
Static Public Member Functions | |
static | create ($text, $action=null, $type=self::TYPE_CUSTOM, $shorttext=null, $key=null, pix_icon $icon=null) |
Creates a navigation node, ready to add it as a child using add_node function. More... | |
static | module_extends_navigation ($modname) |
This method simply checks to see if a given module can extend the navigation. More... | |
static | override_active_url (moodle_url $url, $loadadmintree=false) |
This sets the URL that the URL of new nodes get compared to when locating the active node. More... | |
static | require_admin_tree () |
Use when page is linked from the admin tree, if not used navigation could not find the page using current URL because the tree is not fully loaded. | |
Public Attributes | |
moodle_url action_link null | $action = null |
An action for the node (link) | |
navigation_node_collection | $children = array() |
An array of child nodes. | |
array | $classes = array() |
An array of CSS classes for the node. | |
bool | $collapse = false |
If set to true the node will be collapsed by default. | |
bool | $display = true |
If set to false the node will not be displayed. | |
bool | $forceopen = false |
If set to true the node will be expanded by default. | |
bool | $forcetitle = false |
If set to true a title will be added to the action no matter what. | |
string | $helpbutton = null |
A string that can be used to build a help button. | |
bool | $hidden = false |
If set to true the node will be dimmed. | |
bool | $hideicon = false |
Override to not display the icon even if one is provided. | |
pix_icon | $icon = null |
The path to an icon to use for this node. | |
int | $id = null |
Parameter to aid the coder in tracking [optional]. | |
mixed | $includesectionnum = false |
If set to an int, that section will be included even if it has no activities. | |
bool | $isactive = false |
If set to true the node will be recognised as active. | |
bool | $isexpandable = false |
Set to true if we KNOW that this node can be expanded. More... | |
string int | $key = null |
The identifier for the node, used to retrieve the node. | |
bool | $mainnavonly = false |
If set to true the the navigation bar should ignore this node. | |
int | $nodetype = self::NODETYPE_LEAF |
See NODETYPE_* constants defined for this class. | |
navigation_node | $parent = null |
A reference to the node parent, you should never set this directly you should always call set_parent. | |
bool | $preceedwithhr = false |
If set to true then an HR will be printed before the node. | |
bool | $requiresajaxloading = false |
does the node need to be loaded via ajax | |
string | $shorttext = null |
Short text to use if requested [optional]. | |
bool | $showinflatnavigation = false |
If set to true this node will be added to the "flat" navigation. | |
string | $text = null |
The text to use for the node. | |
string | $title = null |
The title attribute for an action if one is defined. | |
int | $type = self::TYPE_UNKNOWN |
See TYPE_* constants defined for this class. | |
const | COURSE_CURRENT = 2 |
var int Course the current user is currently viewing | |
const | COURSE_INDEX_PAGE = 'courseindexpage' |
var string The course index page navigation node | |
const | COURSE_MY = 1 |
var int Course the current user is enrolled in but not viewing | |
const | COURSE_OTHER = 0 |
var int Course the current user is not enrolled in | |
const | LOAD_ALL_CATEGORIES = -1 |
Used when loading categories to load all categories. | |
const | LOAD_ROOT_CATEGORIES = 0 |
Used when loading categories to load all top level categories [parent = 0]. | |
int const | NODETYPE_BRANCH = 1 |
Used to identify this node a branch, happens with children 1. | |
int const | NODETYPE_LEAF = 0 |
Used to identify this node a leaf (default) 0. | |
int const | TYPE_ACTIVITY = 40 |
Activity node type, e.g. More... | |
int const | TYPE_CATEGORY = 10 |
Category node type 10. | |
int const | TYPE_CONTAINER = 90 |
Setting node type, used for containers of no importance 90. | |
int const | TYPE_COURSE = 20 |
Course node type 20. | |
int const | TYPE_CUSTOM = 60 |
A custom node type, default when adding without specifing type 60. | |
const | TYPE_MY_CATEGORY = 11 |
var int Category displayed in MyHome navigation node | |
int const | TYPE_RESOURCE = 50 |
Resource node type, e.g. More... | |
int const | TYPE_ROOTNODE = 0 |
System node type 0. | |
int const | TYPE_SECTION = 30 |
Course Structure node type 30. | |
int const | TYPE_SETTING = 70 |
Setting node type, used only within settings nav 70. | |
int const | TYPE_SITE_ADMIN = 71 |
site admin branch node type, used only within settings nav 71 | |
int const | TYPE_SYSTEM = 1 |
System node type 1. | |
null const | TYPE_UNKNOWN = null |
Unknown node type null. | |
int const | TYPE_USER = 80 |
Setting node type, used only within settings nav 80. | |
Static Public Attributes | |
static bool | $autofindactive = true |
toogles auto matching of active node | |
Protected Member Functions | |
add_category (stdClass $category, navigation_node $parent, $nodetype=self::TYPE_CATEGORY) | |
Adds a structured category to the navigation in the correct order/place. More... | |
add_context_locking_node (\navigation_node $node, context $context) | |
Add the menu item to handle locking and unlocking of a conext. More... | |
can_add_more_courses_to_category ($category) | |
Returns true if more courses can be added to the provided category. More... | |
can_expand_course ($course) | |
Checks if a user can expand a course in the navigation. More... | |
current_user_is_parent_role () | |
Returns true if the current user is a parent of the user being currently viewed. More... | |
generate_sections_and_activities (stdClass $course) | |
Generates an array of sections and an array of activities for the given course. More... | |
get_expand_course_cache () | |
Returns a cache instance to use for the expand course cache. More... | |
is_category_fully_loaded ($categoryid) | |
Returns true if the category has already been loaded as have any child categories. More... | |
load_activity ($cm, stdClass $course, navigation_node $activity) | |
Loads the navigation structure for the given activity into the activities node. More... | |
load_all_categories ($categoryid=self::LOAD_ROOT_CATEGORIES, $showbasecategories=false) | |
Loads all categories (top level or if an id is specified for that category) More... | |
moodle_database | load_all_courses ($categoryids=null) |
Loads the courses in Moodle into the navigation. More... | |
load_course (stdClass $course) | |
Loads the given course into the navigation. More... | |
load_course_sections (stdClass $course, navigation_node $coursenode, $sectionnum=null, $cm=null) | |
Loads all of the courses section into the navigation. More... | |
load_courses_enrolled () | |
They've expanded the 'my courses' branch. | |
load_for_user ($user=null, $forceforcontext=false) | |
Loads user specific information into the navigation in the appropriate place. More... | |
load_local_plugin_navigation () | |
This function gives local plugins an opportunity to modify navigation. | |
load_section_activities (navigation_node $sectionnode, $sectionnumber, array $activities, $course=null) | |
Loads all of the activities for a section into the navigation structure. More... | |
load_stealth_activity (navigation_node $coursenode, $modinfo) | |
Loads a stealth module from unavailable section. More... | |
show_categories ($ismycourse=false) | |
Returns true if courses should be shown within categories on the navigation. More... | |
show_my_categories () | |
Returns true if we should show categories in the My Courses branch. More... | |
Protected Attributes | |
array | $addedcategories = array() |
An array of category ids that are included in the navigation. | |
array | $addedcourses = array() |
An array of course ids that are present in the navigation. | |
bool | $allcategoriesloaded = false |
navigation_cache | $cache |
cache_session | $cacheexpandcourse = null |
A cache that stores information on expanded courses. | |
int | $expansionlimit = 0 |
expansion limit | |
array | $extendforuser = array() |
An array of stdClasses for users that the navigation is extended for. | |
bool | $initialised = false |
switch to let us know if the navigation object is initialised | |
array | $mycourses = array() |
An array of course information. | |
array | $namedtypes |
moodle_page | $page |
The Moodle page this navigation object belongs to. | |
navigation_node[] | $rootnodes = array() |
An array for containing root navigation nodes. | |
bool | $showcategories = null |
A switch for whether courses should be shown within categories on the navigation. | |
bool | $showemptysections = true |
A switch for whether to show empty sections in the navigation. | |
null var | $showmycategories = null |
bool A switch for whether or not to show categories in the my courses branch. | |
int | $useridtouseforparentchecks = 0 |
userid to allow parent to see child's profile page navigation | |
Static Protected Attributes | |
static moodle_url | $fullmeurl = null |
static bool | $loadadmintree = false |
should we load full admin tree or rely on AJAX for performance reasons | |
global_navigation::__construct | ( | moodle_page | $page | ) |
Constructs a new global navigation.
moodle_page | $page | The page this navigation object belongs to |
|
inherited |
Get the action url for this navigation node.
Called from templates.
|
inherited |
Adds a navigation node as a child of this node.
string | $text | |
moodle_url | action_link | $action | |
int | $type | |
string | $shorttext | |
string | int | $key | |
pix_icon | $icon |
navigation_node |
Reimplemented in navbar, and settings_navigation.
|
protected |
Adds a structured category to the navigation in the correct order/place.
stdClass | $category | category to be added in navigation. |
navigation_node | $parent | parent navigation node |
int | $nodetype | type of node, if category is under MyHome then it's TYPE_MY_CATEGORY |
void. |
|
inherited |
Adds a CSS class to this node.
string | $class |
bool |
|
protectedinherited |
Add the menu item to handle locking and unlocking of a conext.
navigation_node | $node | Node to add |
context | $context | The context to be locked |
global_navigation::add_course | ( | stdClass | $course, |
$forcegeneric = false , |
|||
$coursetype = self::COURSE_OTHER |
|||
) |
Adds the given course to the navigation structure.
stdClass | $course | |
bool | $forcegeneric | |
bool | $ismycourse |
navigation_node |
global_navigation::add_course_essentials | ( | $coursenode, | |
stdClass | $course | ||
) |
Adds essential course nodes to the navigation for the given course.
This method adds nodes such as reports, blogs and participants
navigation_node | $coursenode | |
stdClass | $course |
bool | returns true on successful addition of a node. |
global_navigation::add_front_page_course_essentials | ( | navigation_node | $coursenode, |
stdClass | $course | ||
) |
This generates the structure of the course that won't be generated when the modules and sections are added.
Things such as the reports branch, the participants branch, blogs... get added to the course node by this method.
navigation_node | $coursenode | |
stdClass | $course |
bool | True for successfull generation |
|
inherited |
Adds a navigation node as a child of this one, given a $node object created using the create function.
navigation_node | $childnode | Node to add |
string | $beforekey |
navigation_node | The added node |
|
inherited |
Walk the tree building up a list of all the flat navigation nodes.
flat_navigation | $nodes | List of the found flat navigation nodes. |
boolean | $showdivider | Show a divider before the first node. |
string | $label | A label for the collection of navigation links. |
|
protected |
Returns true if more courses can be added to the provided category.
int | navigation_node | stdClass | $category |
bool |
|
protected |
Checks if a user can expand a course in the navigation.
We use a cache here because in order to be accurate we need to call can_access_course which is a costly function. Because this functionality is basic + non-essential and because we lack good event triggering this cache permits stale data. In the situation the user is granted access to a course after we've initialised this session cache the cache will be stale. It is brought up to date in only one of two ways.
Really all this controls is whether the node is shown as expandable or not. It is uber un-important.
stdClass | $course |
bool |
|
inherited |
Checks if this node is the active node.
This is determined by comparing the action for the node against the defined URL for the page. A match will see this node marked as active.
int | $strength | One of URL_MATCH_EXACT, URL_MATCH_PARAMS, or URL_MATCH_BASE |
bool |
|
inherited |
Checks if this node or any of its children contain the active node.
Recursive.
bool |
|
staticinherited |
Creates a navigation node, ready to add it as a child using add_node function.
(The created node needs to be added before you can use it.)
string | $text | |
moodle_url | action_link | $action | |
int | $type | |
string | $shorttext | |
string | int | $key | |
pix_icon | $icon |
navigation_node |
|
protected |
Returns true if the current user is a parent of the user being currently viewed.
If the current user is not viewing another user, or if the current user does not hold any parent roles over the other user being viewed this function returns false. In order to set the user for whom we are checking against you must call set_userid_for_parent_checks()
bool |
global_navigation::extend_for_user | ( | $user | ) |
Extends the navigation for the given user.
stdClass | $user | A user from the database |
global_navigation::find | ( | $key, | |
$type | |||
) |
Searches this nodes children and their children to find a navigation node with the matching key and type.
This method is recursive and searches children so until either a node is found or there are no more nodes to search.
If you know that the node being searched for is a child of this node then use the global_navigation::get() method instead.
Note: If you are trying to set the active node navigation_node::override_active_url() may be of more use to you.
string | int | $key | The key of the node you wish to receive. |
int | $type | One of navigation_node::TYPE_* |
navigation_node|false |
Reimplemented from navigation_node.
|
inherited |
Finds the active node.
Searches this nodes children plus all of the children for the active node and returns it if found.
Recursive.
navigation_node|false |
|
inherited |
Finds all nodes of a given type (recursive)
int | $type | One of navigation_node::TYPE_* |
array |
|
inherited |
Finds all nodes that are expandable by AJAX.
array | $expandable | An array by reference to populate with expandable nodes. |
|
inherited |
Forces this node to be open and at the same time forces open all parents until the root node.
Recursive.
|
protected |
Generates an array of sections and an array of activities for the given course.
This method uses the cache to improve performance and avoid the get_fast_modinfo call
stdClass | $course |
array | Array($sections, $activities) |
global_navigation::get | ( | $key, | |
$type = null |
|||
) |
Attempts to get the navigation with the given key from this nodes children.
This function only looks at this nodes children, it does NOT look recursivily. If the node can't be found then false is returned.
If you need to search recursivily then use the global_navigation::find() method.
Note: If you are trying to set the active node navigation_node::override_active_url() may be of more use to you.
string | int | $key | The key of the node you wish to receive. |
int | $type | One of navigation_node::TYPE_* |
navigation_node|false |
Reimplemented from navigation_node.
|
inherited |
Return a list of all the keys of all the child nodes.
array | the keys. |
|
inherited |
Gets the content for this node.
bool | $shorttext | If true shorttext is used rather than the normal text |
string |
|
inherited |
Gets the CSS class to add to this node to describe its type.
string |
|
protected |
Returns a cache instance to use for the expand course cache.
cache_session |
global_navigation::get_extending_users | ( | ) |
Returns all of the users the navigation is being extended for.
array | An array of extending users. |
|
inherited |
Get a list of sibling navigation nodes at the same level as this one.
bool|array | of navigation_node |
|
inherited |
Creates a tab representation of this nodes children that can be used with print_tabs to produce the tabs on a page.
call_user_func_array('print_tabs', $node->get_tabs_array());
array | $inactive | |
bool | $return |
array | Array (tabs, selected, inactive, activated, return) |
|
inherited |
Gets the title to use for this node.
string |
|
inherited |
Used to easily determine if this link in the breadcrumbs has a valid action/url.
boolean |
|
inherited |
Checks if this node has or could have any children.
bool | Returns true if it has children or could have (by AJAX expansion) |
|
inherited |
True if this nav node has siblings in the tree.
bool |
|
inherited |
Hides the node and any children it has.
array | $typestohide | Optional. An array of node types that should be hidden. If null all nodes will be hidden. If an array is given then nodes will only be hidden if their type mtatches an element in the array. e.g. array(navigation_node::TYPE_COURSE) would hide only course nodes. |
global_navigation::initialise | ( | ) |
Initialises the navigation object.
This causes the navigation object to look at the current state of the page that it is associated with and then load the appropriate content.
This should only occur the first time that the navigation structure is utilised which will normally be either when the navbar is called to be displayed or when a block makes use of it.
bool |
Reimplemented in global_navigation_for_ajax.
|
protected |
Returns true if the category has already been loaded as have any child categories.
int | $categoryid |
bool |
|
inherited |
Used to easily determine if this link in the breadcrumbs is hidden.
boolean |
|
inherited |
To better balance the admin tree, we want to group all the short top branches together.
This means < 8 nodes and no subtrees.
bool |
|
protected |
Loads the navigation structure for the given activity into the activities node.
This method utilises a callback within the modules lib.php file to load the content specific to activity given.
The callback is a method: {modulename}_extend_navigation() Examples:
cm_info | stdClass | $cm | |
stdClass | $course | |
navigation_node | $activity |
bool |
|
protected |
Loads all categories (top level or if an id is specified for that category)
int | $categoryid | The category id to load or null/0 to load all base level categories |
bool | $showbasecategories | If set to true all base level categories will be loaded as well as the requested category and any parent categories. |
navigation_node|void | returns a navigation node if a category has been loaded. |
|
protected |
Loads the courses in Moodle into the navigation.
$DB
string | array | $categoryids | An array containing categories to load courses for, OR null to load courses for all categories. |
array | An array of navigation_nodes one for each course |
|
protected |
Loads the given course into the navigation.
stdClass | $course |
navigation_node |
|
protected |
Loads all of the courses section into the navigation.
This function calls method from current course format, see format_base::extend_course_navigation() If course module ($cm) is specified but course format failed to create the node, the activity node is created anyway.
By default course formats call the method global_navigation::load_generic_course_sections()
stdClass | $course | Database record for the course |
navigation_node | $coursenode | The course node within the navigation |
null | int | $sectionnum | If specified load the contents of section with this relative number |
null | cm_info | $cm | If specified make sure that activity node is created (either in containg section or by calling load_stealth_activity() ) |
|
protected |
Loads user specific information into the navigation in the appropriate place.
If no user is provided the current user is assumed.
stdClass | $user | |
bool | $forceforcontext | probably force something to be loaded somewhere (ask SamH if not sure what this means) |
bool |
global_navigation::load_generic_course_sections | ( | stdClass | $course, |
navigation_node | $coursenode | ||
) |
Generically loads the course sections into the course's navigation.
stdClass | $course | |
navigation_node | $coursenode |
array | An array of course section nodes |
|
protected |
Loads all of the activities for a section into the navigation structure.
navigation_node | $sectionnode | |
int | $sectionnumber | |
array | $activities | An array of activites as returned by global_navigation::generate_sections_and_activities() |
stdClass | $course | The course object the section and activities relate to. |
array | Array of activity nodes |
|
protected |
Loads a stealth module from unavailable section.
navigation_node | $coursenode | |
stdClass | $modinfo |
navigation_node | or null if not accessible |
|
inherited |
Marks this node as active and forces it open.
Important: If you are here because you need to mark a node active to get the navigation to do what you want have you looked at navigation_node::override_active_url()? You can use it to specify a different URL to match the active navigation node on rather than having to locate and manually mark a node active.
|
static |
|
staticinherited |
This sets the URL that the URL of new nodes get compared to when locating the active node.
The active node is the node that matches the URL set here. By default this is either $PAGE->url or if that hasn't been set $FULLME.
moodle_url | $url | The url to use for the fullmeurl. |
bool | $loadadmintree | use true if the URL point to administration tree |
|
inherited |
Removes this node.
bool |
|
inherited |
Removes a CSS class from this node.
string | $class |
bool | True if the class was successfully removed. |
|
inherited |
Searches all children for the best matching active node.
navigation_node|false |
global_navigation::set_expansion_limit | ( | $type | ) |
Sets an expansion limit for the navigation.
The expansion limit is used to prevent the display of content that has a type greater than the provided $type.
Can be used to ensure things such as activities or activity content don't get shown on the navigation. They are still generated in order to ensure the navbar still makes sense.
int | $type | One of navigation_node::TYPE_* |
bool | true when complete. |
|
inherited |
Sets the parent for this node and if this node is active ensures that the tree is properly adjusted as well.
navigation_node | $parent |
global_navigation::set_userid_for_parent_checks | ( | $userid | ) |
Mutator to set userid to allow parent to see child's profile page navigation.
See MDL-25805 for initial issue. Linked to it is an issue explaining why this is a REALLY UGLY HACK thats not for you to use!
int | $userid | userid of profile page that parent wants to navigate around. |
|
protected |
Returns true if courses should be shown within categories on the navigation.
bool | $ismycourse | Set to true if you are calculating this for a course. |
bool |
|
protected |
Returns true if we should show categories in the My Courses branch.
bool |
|
inherited |
Sets the title for this node and forces Moodle to utilise it.
string | $title |
|
inherited |
Set to true if we KNOW that this node can be expanded.
|
protectedinherited |
|
inherited |
Activity node type, e.g.
Forum, Quiz 40
|
inherited |
Resource node type, e.g.
Link to a file, or label 50