¿Cuál es la diferencia entre user_is_anonymous () y user_is_logged_in ()?

drupal.stackexchange https://drupal.stackexchange.com/questions/291

  •  16-10-2019
  •  | 
  •  

Pregunta

¿Cuál es la diferencia entre las dos funciones? ¿Cuándo se debe usarse en lugar de la otra?

¿Fue útil?

Solución

Las funciones son esencialmente opuestos.

La única diferencia real es la función user_is_anonymous () tiene una comprobación adicional de $ GLOBALS [ 'menu_admin'] para permitir que los administradores de menú para poder administrar los enlaces del menú que son visibles para los usuarios anónimos solamente.

Es usado por drupal_valid_path () así como la menu_overview_form () función :

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'];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top