/** * Page handler for parcing autocomplete results * * @param type $page */ function elgg_tokeninput_page_handler($page) { elgg_load_library('elgg.tokeninput'); $user = elgg_get_logged_in_user_entity(); $callback = urldecode(get_input('callback')); if ($callback) { $hmac = get_input('hmac'); $ts = get_input('ts'); if (hash_hmac('sha256', $ts . $callback, elgg_tokeninput_get_secret()) !== $hmac) { header('HTTP/1.1 403 Forbidden'); exit; } } else { $callback = 'elgg_tokeninput_search_all'; } $q = urldecode(get_input('term', get_input('q', ''))); $strict = (bool) get_input('strict', true); if (!is_callable($callback)) { header('HTTP/1.1 400 Bad Request'); exit; } $results = array(); $options = get_input('options', array()); $entities = call_user_func($callback, $q, $options); if (is_array($entities) && count($entities)) { foreach ($entities as $entity) { if (elgg_instanceof($entity)) { $results[] = elgg_tokeninput_export_entity($entity); } else { if ($entity instanceof ElggMetadata) { $results[] = elgg_tokeninput_export_metadata($entity); } else { $results[] = (array) $entity; } } } } if (!count($results) && $strict === false) { $suggest = array('label' => $q, 'value' => $q, 'html_result' => '<span>' . elgg_echo('tokeninput:suggest', array($q)) . '</span>'); $results[] = $suggest; } header("Content-Type: application/json"); echo json_encode($results); exit; }
if (is_string($value)) { $delimiter = elgg_extract('data-token-delimiter', $vars, ','); $value = explode($delimiter, $value); } } else { $value = array(); } foreach ($value as $selected) { if (!empty($vars['is_elgg_autocomplete'])) { // Elgg autocomplete uses usernames $user = get_user_by_username($selected); if ($user) { $selected = $user; } } $values[] = elgg_tokeninput_export_entity($selected); } $vars['data-pre-populate'] = json_encode($values); // Limit number of possible values if (isset($vars['limit'])) { $limit = elgg_extract('limit', $vars, null); unset($vars['limit']); } $vars['data-token-limit'] = !$vars['multiple'] ? 1 : $limit; // Prepare query if (isset($vars['query'])) { $query = elgg_extract('query', $vars); unset($vars['query']); } if ($query && !is_array($query)) { $query = array($query);