function relation_instance_selectables_query in Subform 5
1 call to relation_instance_selectables_query()
File
- ./
relation_class.module, line 389 - CRUD, and manage relation_classes and relation_class lists
Code
function relation_instance_selectables_query($relation_class, $child_side, $parent_node) {
$relation_class_node = node_load($relation_class);
$child_side_node = $child_side . "_node";
$child_side_node_type = $child_side . "_node_type";
$child_side_node_type = $relation_class_node->{$child_side_node_type};
$child_side_cardinality = $child_side . "_node_cardinality";
$child_side_cardinality = $relation_class_node->{$child_side_cardinality};
$parent_side = $child_side == "left" ? "right" : "left";
$parent_side_node = $parent_side . "_node";
$duplicate_relation_cost = $relation_class_node->unique_instances ? $child_side_cardinality : 1;
$sql = "\nSELECT\n nid, SUM(related) as related_count\nFROM\n(\n SELECT\n nid, IF(relation_class IS NULL, 0, IF({$parent_side_node} <= 0, IF({$parent_side_node} = {$parent_node}, {$duplicate_relation_cost}, 0), IF({$parent_side_node} = {$parent_node}, {$duplicate_relation_cost}, 1))) as related\n FROM\n node\n LEFT JOIN\n relation_instance ON node.nid = relation_instance.{$child_side_node}\n WHERE\n node.type = '{$child_side_node_type}'\n AND\n (\n relation_class IS NULL\n OR\n relation_class = {$relation_class}\n )\n) as possibilities\nGROUP BY\n nid\nHAVING\n related_count < {$child_side_cardinality}\n ";
// drupal_set_message( $sql );
return $sql;
}