* * @uses $vars['context'] The context for this widget layout * @uses $vars['exact_match'] Only use widgets that match the context * @uses $vars['container'] Container to optional limit widgets for. Defaults to page_owner_entity */ if (!elgg_is_xhr()) { return; } $context = elgg_extract('context', $vars); $widget_context = elgg_extract('widget_context', $vars, $context); $show_access = (int) elgg_extract('show_access', $vars); $exact = elgg_extract('exact_match', $vars, false); $owner_guid = (int) elgg_extract('owner_guid', $vars); $context_stack = elgg_extract('context_stack', $vars); if (!empty($context_stack)) { elgg_set_context_stack($context_stack); } elgg_set_page_owner_guid($owner_guid); $owner = elgg_get_page_owner_entity(); $container = elgg_extract('container', $vars, elgg_get_page_owner_entity()); echo elgg_view('input/hidden', ['name' => 'widget_context', 'value' => $widget_context]); echo elgg_view('input/hidden', ['name' => 'show_access', 'value' => $show_access]); $widget_context = str_replace('default_', '', $context); $available_widgets_context = elgg_trigger_plugin_hook('available_widgets_context', 'widget_manager', [], $widget_context); $widgets = elgg_get_widget_types($available_widgets_context, $exact); $widgets = elgg_get_widget_types(['context' => $available_widgets_context, 'exact' => $exact, 'container' => $container]); widget_manager_sort_widgets($widgets); $user_widgets = elgg_extract('user_widgets', $vars); if (!isset($vars['user_widgets'])) { $user_widgets = elgg_get_widgets($owner->guid, $context); }
<?php // capture global state necessary for menus $state = ['contexts' => elgg_get_context_stack(), 'input' => elgg_get_config("input"), 'page_owner_guid' => elgg_get_page_owner_guid()]; // g = guid, pog = page_owner_guid, c = contexts, m = mac $guid = (int) get_input("g", 0, false); $page_owner_guid = (int) get_input("pog", 0, false); $contexts = (array) get_input("c", [], false); $mac = get_input("m", "", false); $input = (array) get_input("i", [], false); // verify MAC $data = serialize([$guid, $page_owner_guid, $contexts, $input]); if (!elgg_build_hmac($data)->matchesToken($mac)) { return; } $user = get_user($guid); if (!$user) { return; } // render view using state as it was in the placeholder view elgg_set_context_stack($contexts); elgg_set_config("input", $input); elgg_set_page_owner_guid($page_owner_guid); $params = ["entity" => $user, "username" => $user->username, "name" => $user->name]; echo elgg_view_menu("user_hover", $params); // revert global state elgg_set_context_stack($state['contexts']); elgg_set_config("input", $state['input']); elgg_set_page_owner_guid($state['page_owner_guid']);
/** * Handle widgets pages. * * @param array $page Array of pages * * @return bool * @access private */ function _elgg_widgets_page_handler($page) { $segment = elgg_extract(0, $page); if ($segment !== 'add_panel') { return; } elgg_ajax_gatekeeper(); $owner_guid = (int) get_input('owner_guid'); elgg_set_page_owner_guid($owner_guid); // restoring context stack $context_stack = get_input('context_stack'); if (!empty($context_stack)) { elgg_set_context_stack($context_stack); } echo elgg_view_resource('widgets/add_panel', ['owner_guid' => $owner_guid, 'context' => get_input('context')]); return true; }