В чем разница между анонимным пользователем() и пользователем, вошедшим в систему()?
В чем разница между этими двумя функциями? Когда следует использовать одно вместо другого?
3
Author: kiamlaluno, 2011-03-03
1 answers
Функции по существу противоположны.
Единственное реальное отличие заключается в том, что функция user_is_anonymous() имеет дополнительную проверку на $GLOBALS['menu_admin'], чтобы администраторы меню могли управлять ссылками меню, которые видны только анонимным пользователям.
Он используется drupal_valid_path(), а также функцией menu_overview_form():
function drupal_valid_path($path, $dynamic_allowed = FALSE) {
global $menu_admin;
// We indicate that a menu administrator is running the menu access check.
$menu_admin = TRUE;
if ($path == '<front>' || url_is_external($path)) {
$item = array('access' => TRUE);
}
elseif ($dynamic_allowed && preg_match('/\/\%/', $path)) {
// Path is dynamic (ie 'user/%'), so check directly against menu_router table.
if ($item = db_query("SELECT * FROM {menu_router} where path = :path", array(':path' => $path))->fetchAssoc()) {
$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'];
}
6
Author: Dave Reid, 2011-03-03 21:28:32