Issue #1057242 by drunken monkey: Change notice for entity_uri() should not use ->uri (was ->uri doesn't match the contract for uri callbacks).
parent
777322657a
commit
aed4de70c7
|
@ -7572,44 +7572,30 @@ function entity_prepare_view($entity_type, $entities, $langcode = NULL) {
|
|||
* uri of its own.
|
||||
*/
|
||||
function entity_uri($entity_type, $entity) {
|
||||
// This check enables the URI of an entity to be easily overridden from what
|
||||
// the callback for the entity type or bundle would return, and it helps
|
||||
// minimize performance overhead when entity_uri() is called multiple times
|
||||
// for the same entity.
|
||||
if (!isset($entity->uri)) {
|
||||
$info = entity_get_info($entity_type);
|
||||
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
|
||||
$info = entity_get_info($entity_type);
|
||||
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
|
||||
|
||||
// A bundle-specific callback takes precedence over the generic one for the
|
||||
// entity type.
|
||||
if (isset($info['bundles'][$bundle]['uri callback'])) {
|
||||
$uri_callback = $info['bundles'][$bundle]['uri callback'];
|
||||
}
|
||||
elseif (isset($info['uri callback'])) {
|
||||
$uri_callback = $info['uri callback'];
|
||||
}
|
||||
else {
|
||||
$uri_callback = NULL;
|
||||
}
|
||||
|
||||
// Invoke the callback to get the URI. If there is no callback, set the
|
||||
// entity's 'uri' property to FALSE to indicate that it is known to not have
|
||||
// a URI.
|
||||
if (isset($uri_callback) && function_exists($uri_callback)) {
|
||||
$entity->uri = $uri_callback($entity);
|
||||
if (!isset($entity->uri['options'])) {
|
||||
$entity->uri['options'] = array();
|
||||
}
|
||||
// Pass the entity data to url() so that alter functions do not need to
|
||||
// lookup this entity again.
|
||||
$entity->uri['options']['entity_type'] = $entity_type;
|
||||
$entity->uri['options']['entity'] = $entity;
|
||||
}
|
||||
else {
|
||||
$entity->uri = FALSE;
|
||||
}
|
||||
// A bundle-specific callback takes precedence over the generic one for the
|
||||
// entity type.
|
||||
if (isset($info['bundles'][$bundle]['uri callback'])) {
|
||||
$uri_callback = $info['bundles'][$bundle]['uri callback'];
|
||||
}
|
||||
elseif (isset($info['uri callback'])) {
|
||||
$uri_callback = $info['uri callback'];
|
||||
}
|
||||
else {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Invoke the callback to get the URI. If there is no callback, return NULL.
|
||||
if (isset($uri_callback) && function_exists($uri_callback)) {
|
||||
$uri = $uri_callback($entity);
|
||||
// Pass the entity data to url() so that alter functions do not need to
|
||||
// lookup this entity again.
|
||||
$uri['options']['entity_type'] = $entity_type;
|
||||
$uri['options']['entity'] = $entity;
|
||||
return $uri;
|
||||
}
|
||||
return $entity->uri ? $entity->uri : NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue