$col_data) { // Add the cell if available. if (!isset($col_data['access']) || $col_data['access'] !== FALSE) { $header[] = $col_data['cell']; } } // Loop through the row data and create rows with the data in the right order. foreach ($element['#rows'] as $data) { $attributes = array(); $row = array(); /* // If the row combines cell data with attributes... if (isset($data['data'])) { // Set the attributes array to be everything in the row array except the // data array. $attributes = $data; unset($attributes['data']); // Filter the data array down to just the cell data. $data = $data['data']; } */ // Loop through each column in the header. foreach ($element['#columns'] as $col_id => $col_data) { // If this row defines cell data for the current column... if ((!isset($col_data['access']) || $col_data['access'] !== FALSE) && isset($data[$col_id])) { $cell = array(); if (isset($data[$col_id]['#cell_attributes']) && is_array($data[$col_id]['#cell_attributes'])) { foreach ($data[$col_id]['#cell_attributes'] as $property => $value) { if ($property == 'colspan' && $value == 'full') { // Extend full-width cells to the number of columns actually // displayed. $value = count($header); } $cell[$property] = $value; } $cell['data'] = drupal_render($data[$col_id]); } else { $cell = drupal_render($data[$col_id]); } // Add it to the row array. $row[] = $cell; } } // Merge the row data into a single row array along with the attributes. $row = array_merge(array('data' => $row), (array)$data['#attributes']); // Add the current row to the table rows array. $rows[] = $row; } // Return the rendered table. return theme('table', $header, $rows, (array)$element['#attributes'], $element['#title']) . (isset($element['#children']) ? $element['#children'] : ''); } /** * Build an ORDER BY clause for a table's SELECT query based on the table's * columns. * * @param $columns * The column array from a TAPIr table array. * @return * The result of a tablesort_sql() call on the header info for this table. */ function tapirsort_sql($columns) { $header = array(); // Loop through the columns array... foreach ($columns as $column) { // And build a header array based on column information. $header[] = $column['cell']; } // Return the result of a tablesort on our header. return tablesort_sql($header); }