From 24e3ff747614364d0d44fc1a7644f164146c66e1 Mon Sep 17 00:00:00 2001 From: brettp Date: Sat, 7 Nov 2009 20:57:32 +0000 Subject: Moved default search hooks into search mod. Using MySQL's MATCH ... AGAINST instead of likes for most searches. Changed 'tag' to 'q' while maintaining backward compatibility. git-svn-id: http://code.elgg.org/elgg/trunk@3633 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/group.php | 52 ------------------------------------------- engine/lib/objects.php | 49 ----------------------------------------- engine/lib/tags.php | 60 +------------------------------------------------- engine/lib/users.php | 50 ----------------------------------------- 4 files changed, 1 insertion(+), 210 deletions(-) (limited to 'engine/lib') diff --git a/engine/lib/group.php b/engine/lib/group.php index f7acd9fba..e85724ece 100644 --- a/engine/lib/group.php +++ b/engine/lib/group.php @@ -945,58 +945,6 @@ function list_group_search($tag, $limit = 10) { function group_init() { // Register an entity type register_entity_type('group',''); - - // Register a search hook - register_plugin_hook('search', 'group', 'groups_search_hook'); -} - - -/** - * Return default results for searches on groups. - * - * @param unknown_type $hook - * @param unknown_type $type - * @param unknown_type $value - * @param unknown_type $params - * @return unknown_type - */ -function groups_search_hook($hook, $type, $value, $params) { - global $CONFIG; - - $query = $params['query']; - - $join = "JOIN {$CONFIG->dbprefix}groups_entity ge ON e.guid = ge.guid"; - $params['joins'] = array($join); - - $where = "(ge.guid = e.guid - AND (ge.name LIKE '%$query%' - OR ge.description LIKE '%$query%' - ) - )"; - $params['wheres'] = array($where); - - $entities = elgg_get_entities($params); - $params['count'] = TRUE; - $count = elgg_get_entities($params); - - // no need to continue if nothing here. - if (!$count) { - return array('entities' => array(), 'count' => $count); - } - - // add the volatile data for why these entities have been returned. - foreach ($entities as $entity) { - $description = search_get_relevant_substring($entity->description, $query, '', ''); - $entity->setVolatileData('search_matched_title', $description); - - $name = search_get_relevant_substring($entity->name, $query, '', ''); - $entity->setVolatileData('search_matched_description', $name); - } - - return array( - 'entities' => $entities, - 'count' => $count, - ); } register_elgg_event_handler('init','system','group_init'); diff --git a/engine/lib/objects.php b/engine/lib/objects.php index b928af2fe..e4c3128b9 100644 --- a/engine/lib/objects.php +++ b/engine/lib/objects.php @@ -376,54 +376,5 @@ function search_list_objects_by_name($hook, $user, $returnvalue, $tag) { } } -/** - * Return default results for searches on objects. - * - * @param unknown_type $hook - * @param unknown_type $type - * @param unknown_type $value - * @param unknown_type $params - * @return unknown_type - */ -function objects_search_hook($hook, $type, $value, $params) { - global $CONFIG; - - $query = $params['query']; - - $join = "JOIN {$CONFIG->dbprefix}objects_entity oe ON e.guid = oe.guid"; - $params['joins'] = array($join); - - $where = "(oe.guid = e.guid - AND (oe.title LIKE '%$query%' - OR oe.description LIKE '%$query%' - ) - )"; - $params['wheres'] = array($where); - - $entities = elgg_get_entities($params); - $params['count'] = TRUE; - $count = elgg_get_entities($params); - - // no need to continue if nothing here. - if (!$count) { - return array('entities' => array(), 'count' => $count); - } - - // add the volatile data for why these entities have been returned. - foreach ($entities as $entity) { - $title = search_get_relevant_substring($entity->title, $query, '', ''); - $entity->setVolatileData('search_matched_title', $title); - - $desc = search_get_relevant_substring($entity->description, $query, '', ''); - $entity->setVolatileData('search_matched_description', $desc); - } - - return array( - 'entities' => $entities, - 'count' => $count, - ); -} - register_elgg_event_handler('init', 'system', 'objects_init', 0); -register_plugin_hook('search', 'object', 'objects_search_hook'); register_plugin_hook('unit_test', 'system', 'objects_test'); \ No newline at end of file diff --git a/engine/lib/tags.php b/engine/lib/tags.php index cdcf213c0..3c65c2a7a 100644 --- a/engine/lib/tags.php +++ b/engine/lib/tags.php @@ -174,62 +174,4 @@ function get_tags($threshold = 1, $limit = 10, $metadata_name = "", $entity_type function display_tagcloud($threshold = 1, $limit = 10, $metadata_name = "", $entity_type = "object", $entity_subtype = "", $owner_guid = "", $site_guid = -1) { return elgg_view("output/tagcloud",array('value' => get_tags($threshold, $limit, $metadata_name, $entity_type, $entity_subtype, $owner_guid, $site_guid),'object' => $entity_type, 'subtype' => $entity_subtype)); -} - - - -/** - * Return default results for searches on groups. - * - * @param unknown_type $hook - * @param unknown_type $type - * @param unknown_type $value - * @param unknown_type $params - * @return unknown_type - */ -function tags_search_hook($hook, $type, $value, $params) { - global $CONFIG; - - $query = $params['query']; - - $params['metadata_name_value_pair'] = array ('name' => 'tags', 'value' => $query, 'case_sensitive' => FALSE); - - $entities = elgg_get_entities_from_metadata($params); - $params['count'] = TRUE; - $count = elgg_get_entities_from_metadata($params); - - // no need to continue if nothing here. - if (!$count) { - return array('entities' => array(), 'count' => $count); - } - - // add the volatile data for why these entities have been returned. - foreach ($entities as $entity) { - $tags = implode(',', $entity->tags); - $tags_str = search_get_relevant_substring($tags, $query, '', ''); - $entity->setVolatileData('search_matched_tags', $tags_str); - } - - return array( - 'entities' => $entities, - 'count' => $count, - ); -} - -/** - * Register tags as a custom search type. - * - * @param unknown_type $hook - * @param unknown_type $type - * @param unknown_type $value - * @param unknown_type $params - * @return unknown_type - */ -function tags_search_custom_types_hook($hook, $type, $value, $params) { - $value[] = 'tags'; - return $value; -} - - -register_plugin_hook('search', 'tags', 'tags_search_hook'); -register_plugin_hook('search_types', 'get_types', 'tags_search_custom_types_hook'); \ No newline at end of file +} \ No newline at end of file diff --git a/engine/lib/users.php b/engine/lib/users.php index b49fc30fe..f1194b7e4 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -1490,7 +1490,6 @@ function users_init() { register_entity_type('user',''); register_plugin_hook('usersettings:save','user','users_settings_save'); - register_plugin_hook('search', 'user', 'users_search_hook'); // Handle a special case for newly created users when the user is not logged in // TODO: handle this better! @@ -1540,55 +1539,6 @@ function users_test($hook, $type, $value, $params) { return $value; } -/** - * Return default results for searches on users. - * - * @param unknown_type $hook - * @param unknown_type $type - * @param unknown_type $value - * @param unknown_type $params - * @return unknown_type - */ -function users_search_hook($hook, $type, $value, $params) { - global $CONFIG; - - $query = $params['query']; - - $join = "JOIN {$CONFIG->dbprefix}users_entity ue ON e.guid = ue.guid"; - $params['joins'] = array($join); - - $where = "(ue.guid = e.guid - AND (ue.username LIKE '%$query%' - OR ue.name LIKE '%$query%' - ) - )"; - $params['wheres'] = array($where); - - $entities = elgg_get_entities($params); - $params['count'] = TRUE; - $count = elgg_get_entities($params); - - // no need to continue if nothing here. - if (!$count) { - return array('entities' => array(), 'count' => $count); - } - - // add the volatile data for why these entities have been returned. - foreach ($entities as $entity) { - $username = search_get_relevant_substring($entity->username, $query, '', ''); - $entity->setVolatileData('search_matched_title', $username); - - $name = search_get_relevant_substring($entity->name, $query, '', ''); - $entity->setVolatileData('search_matched_description', $name); - } - - return array( - 'entities' => $entities, - 'count' => $count, - ); -} - - //register actions ************************************************************* register_elgg_event_handler('init','system','users_init',0); register_elgg_event_handler('pagesetup','system','users_pagesetup',0); -- cgit v1.2.3