function advanced_link_url_load in Advanced Link 7
Same name and namespace in other branches
- 6 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 93 - Defines simple advanced_link widget.
Code
function advanced_link_url_load($field_name, $bundle, $string = NULL) {
// Getting urls_filter settings from table 'field_config_instances'
$instance = field_read_instances(array(
'field_name' => $field_name,
'bundle' => $bundle,
), array());
$search_type = $instance[0]['widget']['settings']['urls_search'];
$urls_filter = isset($instance[0]['widget']['settings']['urls_filter']) ? trim($instance[0]['widget']['settings']['urls_filter']) : NULL;
if ($search_type == ADVANCED_LINK_SEARCH_CONTAINS) {
// Search for urls that contain our string.
$condition_menu = db_like($string) . '[^\\%]*$';
$condition_alias = '%' . db_like($string) . '%';
}
else {
// Search for urls that start string.
$condition_menu = '^' . db_like($string) . '[^\\%]*$';
$condition_alias = db_like($string) . '%';
}
if ($string) {
$urls_list = array();
$urls_list_menu = array();
// If database connection type is pgsql we should use '~'
// instead 'REGEXP' in query condition.
if (db_driver() == 'pgsql') {
$operator = '~';
}
else {
$operator = 'REGEXP';
}
// $operator use for exclude urls with '%' character.
$query = db_select('menu_router', 'mr')
->fields('mr', array(
'path',
))
->condition('mr.path', $condition_menu, $operator)
->range(0, 20)
->orderBy('mr.path', 'ASC');
$query = advanced_link_autocomplete_url_filter_conditions($urls_filter, $query, 'mr.path');
$result = $query
->execute()
->fetchAll();
foreach ($result as $record) {
$urls_list[$record->path] = $record->path;
}
$query = db_select('url_alias', 'ua')
->fields('ua', array(
'alias',
))
->condition('ua.alias', $condition_alias, 'LIKE')
->range(0, 20 - count($urls_list))
->orderBy('ua.alias', 'ASC');
$query = advanced_link_autocomplete_url_filter_conditions($urls_filter, $query, 'ua.alias');
$result = $query
->execute()
->fetchAll();
foreach ($result as $record) {
$urls_list_menu[$record->alias] = $record->alias;
}
return $urls_list + $urls_list_menu;
}
else {
return FALSE;
}
}