function advanced_link_url_load in Advanced Link 6
Same name and namespace in other branches
- 7 advanced_link.module \advanced_link_url_load()
Loads list of matching URLs.
1 call to advanced_link_url_load()
- advanced_link_autocomplete in ./
advanced_link.module - Menu callback for autocomplete.
File
- ./
advanced_link.module, line 85 - Defines simple advanced_link widget.
Code
function advanced_link_url_load($field_name, $type_name, $string = NULL) {
module_load_include('inc', 'content', 'includes/content.crud');
$instance = content_field_instance_read(array(
'field_name' => $field_name,
'type_name' => $type_name,
));
$search_type = $instance[0]['widget']['urls_search'];
$urls_filter = isset($instance[0]['widget']['urls_filter']) ? trim($instance[0]['widget']['urls_filter']) : NULL;
if ($search_type == ADVANCED_LINK_SEARCH_CONTAINS) {
// Search for urls that contain our string.
$condition_menu = '%s[^\\%]*$';
$condition_alias = '%%%s%%';
}
else {
// Search for urls that start string.
$condition_menu = '^%s[^\\%]*$';
$condition_alias = '%s%%';
}
if ($string) {
$urls_list = array();
$urls_list_menu = array();
// If database connection type is pgsql we should use '~'
// instead 'REGEXP' in query condition.
global $db_type;
if ($db_type == 'pgsql') {
$operator = '~';
}
else {
$operator = 'REGEXP';
}
// $operator use for exclude urls with '%' character.
$query_text = "SELECT path FROM {menu_router} WHERE path " . $operator . " lower('" . $condition_menu . "')";
$query_text = advanced_link_autocomplete_url_filter_conditions($urls_filter, $query_text, 'path');
$query_text .= " ORDER BY path ASC";
$query = db_query_range($query_text, $string, 0, 20);
while ($result = db_fetch_object($query)) {
$urls_list_menu[$result->path] = $result->path;
}
$query_text = "SELECT dst FROM {url_alias} WHERE dst LIKE lower('" . $condition_alias . "')";
$query_text = advanced_link_autocomplete_url_filter_conditions($urls_filter, $query_text, 'dst');
$query_text .= " ORDER BY dst ASC";
$query = db_query_range($query_text, $string, 0, 20 - count($urls_list_menu));
while ($result = db_fetch_object($query)) {
$urls_list[$result->dst] = $result->dst;
}
return $urls_list + $urls_list_menu;
}
else {
return FALSE;
}
}