$item) { $name = $item->getName(); if (in_array($name, $to_remove)) { unset($return[$index]); } } if ($entity->isBanned()) { $banned = elgg_echo('banned'); $options = array( 'name' => 'banned', 'text' => "$banned", 'href' => false, 'priority' => 0, ); $return = array(ElggMenuItem::factory($options)); } else { $return = array(); $url_params = array(); $menu = array(); if (isset($entity->location)) { $page_owner = elgg_get_page_owner_entity(); if (elgg_instanceof($page_owner, 'group')) { $url_params['group_guid'] = $page_owner->guid; } $user_location = htmlspecialchars($entity->location, ENT_QUOTES, 'UTF-8', false); $locations = explode(",", $user_location); foreach($locations as $location){ $q = strtolower(trim($location)); $url_params['q'] = $q; $url = elgg_http_add_url_query_elements(elgg_get_site_url()."member-locations/", $url_params); $menu[] = elgg_view('output/url', array('href' => $url, 'text' => $location, 'is_safe' => true)); } $menu = implode(", ",$menu); $options = array( 'name' => 'location', 'text' => "$menu", 'href' => false, 'priority' => 150, ); $return[] = ElggMenuItem::factory($options); } } return $return; } function members_extended_search($options = array()){ $db_prefix = elgg_get_config('dbprefix'); $query = sanitise_string($options['query']); $options['joins'] = array( "JOIN {$db_prefix}users_entity ue ON e.guid = ue.guid", "JOIN {$db_prefix}metadata md on e.guid = md.entity_guid", "JOIN {$db_prefix}metastrings msv ON n_table.value_id = msv.id", ); $r_where = ""; $group_guid = $options['group_guid']; if($group_guid){ $group = get_entity($group_guid); if (elgg_instanceof($group, 'group')) { elgg_set_page_owner_guid($group_guid); $options['joins'][] = "JOIN {$db_prefix}entity_relationships r ON e.guid = r.guid_one"; $r_where = "AND (r.relationship = 'member' AND r.guid_two = '$group_guid')"; } } // username and display name $fields = array('username', 'name'); $where = search_get_where_sql('ue', $fields, $options, FALSE); // get the where clauses for the md names // can't use egef_metadata() because the n_table join comes too late. $clauses = _elgg_entities_get_metastrings_options('metadata', array( 'metadata_names' => $options['metadata_names'], )); $options['joins'] = array_merge($clauses['joins'], $options['joins']); // no fulltext index, can't disable fulltext search in this function. // $md_where .= " AND " . search_get_where_sql('msv', array('string'), $options, FALSE); $md_where = "(({$clauses['wheres'][0]}) AND msv.string LIKE '%$query%')"; $options['wheres'] = array("(($where) OR ($md_where) $r_where)"); // override subtype -- All users should be returned regardless of subtype. $options['subtype'] = ELGG_ENTITIES_ANY_VALUE; $options['count'] = true; $count = elgg_get_entities($options); // no need to continue if nothing here. if (!$count) { return array('entities' => array(), 'count' => $count); } $options['count'] = FALSE; $options['order_by'] = search_get_order_by_sql('e', 'ue', $options['sort'], $options['order']); $entities = elgg_get_entities($options); return array( 'entities' => $entities, 'count' => $count, ); }