public function getViews($viewtype = 'default')
{
global $CONFIG;
$view_data = $this->getViewsData();
// maps view name to array of ViewComponent[] with priority as keys
$views = array();
// add plugins and handle overrides
foreach ($view_data['locations'][$viewtype] as $view => $location) {
$component = new ViewComponent();
$component->view = $view;
$component->file = $location;
$views[$view] = [500 => $component];
}
// now extensions
foreach ($view_data['extensions'] as $view => $extensions) {
$view_list = array();
foreach ($extensions as $priority => $ext_view) {
if (isset($views[$ext_view])) {
$view_list[$priority] = $views[$ext_view][500];
}
}
if (count($view_list) > 0) {
$views[$view] = $view_list;
}
}
ksort($views);
// now overrides
foreach ($views as $view => $view_list) {
if (!empty($view_data['overrides'][$viewtype][$view])) {
$overrides_list = array();
foreach ($view_data['overrides'][$viewtype][$view] as $i => $location) {
$component = new ViewComponent();
$component->overridden = true;
$component->view = $view;
$component->file = $location;
$overrides_list["o:{$i}"] = $component;
}
$views[$view] = $overrides_list + $view_list;
}
}
// view handlers
$handlers = _elgg_services()->hooks->getAllHandlers();
$input_filtered_views = array();
if (!empty($handlers['view_vars'])) {
$input_filtered_views = array_keys($handlers['view_vars']);
}
$filtered_views = array();
if (!empty($handlers['view'])) {
$filtered_views = array_keys($handlers['view']);
}
$global_hooks = array();
if (!empty($handlers['view_vars']['all'])) {
$global_hooks[] = 'view_vars, all';
}
if (!empty($handlers['view']['all'])) {
$global_hooks[] = 'view, all';
}
return array('views' => $views, 'global_hooks' => $global_hooks, 'input_filtered_views' => $input_filtered_views, 'filtered_views' => $filtered_views);
}