public function tripal_views_query::add_orderby
3.x tripal_views_query.inc | public tripal_views_query::add_orderby($table, $field_name = NULL, $order = 'ASC', $alias = '', $params = array()) |
Overrides add_orderby().
File
- tripal/
tripal_views_query.inc, line 139
Class
Code
public function add_orderby($table, $field_name = NULL, $order = 'ASC', $alias = '', $params = array()) {
if ($field_name) {
// If we already have an orderBy for this field then remove it so
// we can reset it.
foreach ($this->order as $index => $order_details) {
if ($order_details['field'] == $field_name) {
$this->order[$index]['direction'] = $order;
unset($this->order[$index]);
}
}
$this->order[] = array(
'field' => $field_name,
'direction' => strtoupper($order)
);
// If the field_name comes to us with a period in it then it means that
// we need to separate the field name from sub-element names.
$matches = array();
if (preg_match('/^(.+?)\.(.*)$/', $field_name, $matches)) {
$field_name = $matches[1];
$element_name = $matches[2];
$field = field_info_field($field_name);
$instance = field_info_instance('TripalEntity', $field_name, $this->query->entityConditions['bundle']['value']);
$element_name = $instance['settings']['term_vocabulary'] . ':' . $instance['settings']['term_accession'] . ',' . $element_name;
$this->query->fieldOrderBy($field_name, $element_name, $order);
}
else {
$instance = field_info_instance('TripalEntity', $field_name, $this->query->entityConditions['bundle']['value']);
$field_term = $instance['settings']['term_vocabulary'] . ':' . $instance['settings']['term_accession'];
$this->query->fieldOrderBy($field_name, $field_term, $order);
}
}
}