function _rooms_availability_reference_potential_references in Rooms - Drupal Booking for Hotels, B&Bs and Vacation Rentals 7
Helper function for node_reference_potential_references().
List of referenceable nodes defined by content types.
1 call to _rooms_availability_reference_potential_references()
- rooms_availability_reference_potential_references in modules/
rooms_availability_reference/ rooms_availability_reference.module - Retrieves an array of candidate referenceable booking units.
File
- modules/
rooms_availability_reference/ rooms_availability_reference.module, line 275 - Defines a field type for referencing availability information
Code
function _rooms_availability_reference_potential_references($field, $options) {
// Avoid useless work.
if (!isset($field['settings']['referenceable_unit_types'])) {
return array();
}
if (!count($field['settings']['referenceable_unit_types'])) {
return array();
}
$query = db_select('rooms_units', 'u');
$unit_unit_id_alias = $query
->addField('u', 'unit_id');
$unit_name_alias = $query
->addField('u', 'name', 'name');
$unit_type_alias = $query
->addField('u', 'type', 'type');
if (is_array($field['settings']['referenceable_unit_types'])) {
$query
->condition('u.type', $field['settings']['referenceable_unit_types'], 'IN');
}
if ($options['string'] !== '') {
switch ($options['match']) {
case 'contains':
$query
->condition('u.name', '%' . $options['string'] . '%', 'LIKE');
break;
case 'starts_with':
$query
->condition('u.name', $options['string'] . '%', 'LIKE');
break;
case 'equals':
default:
// No match type or incorrect match type: use "=".
$query
->condition('u.name', $options['string']);
break;
}
}
if ($options['ids']) {
$query
->condition('u.unit_id', $options['ids'], 'IN');
}
if ($options['limit']) {
$query
->range(0, $options['limit']);
}
$query
->orderBy($unit_name_alias)
->orderBy($unit_type_alias);
$result = $query
->execute()
->fetchAll();
$references = array();
foreach ($result as $unit) {
$references[$unit->unit_id] = array(
'title' => $unit->name,
'rendered' => check_plain($unit->name),
);
}
return $references;
}