diff options
author | Gábor Hojtsy <gabor@hojtsy.hu> | 2008-01-03 09:59:00 +0000 |
---|---|---|
committer | Gábor Hojtsy <gabor@hojtsy.hu> | 2008-01-03 09:59:00 +0000 |
commit | 18cabdb8d35215f296295d42e383a24977d2f435 (patch) | |
tree | 490cd093786a439004191591073c3e1bb7aa1edf /includes | |
parent | 03c18bb2042114d3a9a8b5396d77696cdff2a188 (diff) | |
download | brdo-18cabdb8d35215f296295d42e383a24977d2f435.tar.gz brdo-18cabdb8d35215f296295d42e383a24977d2f435.tar.bz2 |
#205843 report by asimmonds, patch by chx: menu_valid_path() was used as an API function, but was located in menu.module, move to menu.inc
Diffstat (limited to 'includes')
-rw-r--r-- | includes/menu.inc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/includes/menu.inc b/includes/menu.inc index c3cb3cb88..d797470c3 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -2288,3 +2288,36 @@ function _menu_site_is_offline() { } return FALSE; } + +/** + * Validates the path of a menu link being created or edited. + * + * @return + * TRUE if it is a valid path AND the current user has access permission, + * FALSE otherwise. + */ +function menu_valid_path($form_item) { + global $menu_admin; + $item = array(); + $path = $form_item['link_path']; + // We indicate that a menu administrator is running the menu access check. + $menu_admin = TRUE; + if ($path == '<front>' || menu_path_is_external($path)) { + $item = array('access' => TRUE); + } + elseif (preg_match('/\/\%/', $path)) { + // Path is dynamic (ie 'user/%'), so check directly against menu_router table. + if ($item = db_fetch_array(db_query("SELECT * FROM {menu_router} where path = '%s' ", $path))) { + $item['link_path'] = $form_item['link_path']; + $item['link_title'] = $form_item['link_title']; + $item['external'] = FALSE; + $item['options'] = ''; + _menu_link_translate($item); + } + } + else { + $item = menu_get_item($path); + } + $menu_admin = FALSE; + return $item && $item['access']; +} |