diff options
Diffstat (limited to 'engine/lib/views.php')
-rw-r--r-- | engine/lib/views.php | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/engine/lib/views.php b/engine/lib/views.php index ef1fe984d..aafec07f3 100644 --- a/engine/lib/views.php +++ b/engine/lib/views.php @@ -722,6 +722,7 @@ function elgg_view_menu($menu_name, array $vars = array()) { * * @param ElggEntity $entity The entity to display * @param boolean $full Passed to entity view to decide how much information to show. + * Beginning with Elgg 1.8, $full can be an array of vars for elgg_view() * @param boolean $bypass If false, will not pass to a custom template handler. * {@see set_template_handler()} * @param boolean $debug Complain if views are missing @@ -732,25 +733,35 @@ function elgg_view_menu($menu_name, array $vars = array()) { * @todo The annotation hook might be better as a generic plugin hook to append content. */ function elgg_view_entity(ElggEntity $entity, $full = false, $bypass = true, $debug = false) { - global $autofeed; - $autofeed = true; // No point continuing if entity is null - if (!$entity) { - return ''; + if (!$entity || !($entity instanceof ElggEntity)) { + return false; } - if (!($entity instanceof ElggEntity)) { - return false; + global $autofeed; + $autofeed = true; + + $defaults = array( + 'full' => false, + ); + + if (is_array($full)) { + $vars = $full; + $vars = array_merge($defaults, $vars); + } else { + $vars = array( + 'full' => $full, + ); } + $vars['entity'] = $entity; + + // if this entity has a view defined, use it $view = $entity->view; if (is_string($view)) { - return elgg_view($view, - array('entity' => $entity, 'full' => $full), - $bypass, - $debug); + return elgg_view($view, $vars, $bypass, $debug); } $entity_type = $entity->getType(); @@ -761,18 +772,13 @@ function elgg_view_entity(ElggEntity $entity, $full = false, $bypass = true, $de } $contents = ''; - if (elgg_view_exists("{$entity_type}/{$subtype}")) { - $contents = elgg_view("{$entity_type}/{$subtype}", array( - 'entity' => $entity, - 'full' => $full - ), $bypass, $debug); + if (elgg_view_exists("$entity_type/$subtype")) { + $contents = elgg_view("$entity_type/$subtype", $vars, $bypass, $debug); } if (empty($contents)) { - $contents = elgg_view("{$entity_type}/default", array( - 'entity' => $entity, - 'full' => $full - ), $bypass, $debug); + $contents = elgg_view("$entity_type/default", $vars, $bypass, $debug); } + // Marcus Povey 20090616 : Speculative and low impact approach for fixing #964 if ($full) { $annotations = elgg_view_entity_annotations($entity, $full); |