menu_unserialize

Versions
6 – 7
menu_unserialize($data, $map)

The menu system uses serialized arrays stored in the database for arguments. However, often these need to change according to the current path. This function unserializes such an array and does the necessary change.

Integer values are mapped according to the $map parameter. For example, if unserialize($data) is array('view', 1) and $map is array('node', '12345') then 'view' will not be changed because it is not an integer, but 1 will as it is an integer. As $map[1] is '12345', 1 will be replaced with '12345'. So the result will be array('node_load', '12345').

Parameters

@data A serialized array.

@map An array of potential replacements.

Return value

The $data array unserialized and mapped.

Related topics

▾ 3 functions call menu_unserialize()

menu_get_item in includes/menu.inc
Get a router item.
_menu_check_access in includes/menu.inc
Check access to a menu item using the access callback
_menu_item_localize in includes/menu.inc
Localize the router item title using t() or another callback.

Code

includes/menu.inc, line 255

<?php
function menu_unserialize($data, $map) {
  if ($data = unserialize($data)) {
    foreach ($data as $k => $v) {
      if (is_int($v)) {
        $data[$k] = isset($map[$v]) ? $map[$v] : '';
      }
    }
    return $data;
  }
  else {
    return array();
  }
}
?>
Login or register to post comments
 
 

All source code and documentation on this site is released under the terms of the GNU General Public License, version 2 and later. Drupal is a registered trademark of Dries Buytaert.