public function arrayToTable($rows, $idName = '', $settings = array()) {
if (is_array($rows) && count($rows)) {
$maxCellCounter = 0;
foreach ($rows as $row) {
$cellCounter = 0;
foreach ($row as $col => $val) {
$cellCounter++;
if ($cellCounter >= $maxCellCounter) {
$maxCellCounter++;
}
}
}
$content .= '<table' . ($idName ? ' id="' . $idName . '"' : '') . ' class="table table-striped table-bordered tablesorter">';
$content .= '<thead><tr>';
if ($settings['keyNameAsHeadingTitle']) {
$cellCounter = 0;
foreach ($rows[0] as $colName => $colVal) {
$colspan = '';
if (count($rows[0]) == ($cellCounter + 1) && count($rows[0]) < ($maxCellCounter)) {
$colspan = ' colspan="' . ($maxCellCounter - ($cellCounter + 1)) . '"';
}
$content .= '<th' . $colspan . '>' . $colName . '</th>';
$cellCounter++;
}
} else {
$cellCounter = 0;
foreach ($rows[0] as $colName => $colVal) {
$colspan = '';
if (count($rows[0]) == ($cellCounter + 1) && count($rows[0]) < ($maxCellCounter)) {
$colspan = ' colspan="' . ($maxCellCounter - ($cellCounter + 1)) . '"';
}
$content .= '<th' . $colspan . '>' . $colVal . '</th>';
$cellCounter++;
}
}
$content .= '</tr></thead><tbody>';
$rowCounter = 0;
if ($settings['keyNameAsHeadingTitle']) {
$rowCounter = 1;
}
foreach ($rows as $row) {
if ($rowCounter) {
$trClass = array();
if (is_array($settings['trClassClass']) && $settings['trClassClass'][($rowCounter + 1)]) {
$trClass = array();
$trClass[] = $settings['trClassClass'][($rowCounter + 1)];
}
$content .= '<tr' . (count($trClass) ? ' class="' . implode(' ', $trClass) . '"' : '') . '>';
$cellCounter = 0;
foreach ($row as $col => $val) {
$classes = array();
if (is_array($settings['cellClasses']) && isset($settings['cellClasses'][$cellCounter])) {
$classes[] = $settings['cellClasses'][$cellCounter];
}
$classes[] = 'cell' . ($cellCounter + 1);
$colspan = '';
if (count($row) == ($cellCounter + 1) && count($row) < ($maxCellCounter)) {
$colspan = ' colspan="' . ($maxCellCounter - ($cellCounter + 1)) . '"';
}
$content .= '<td' . (count($classes) ? ' class="' . implode(' ', $classes) . '"' : '') . $colspan . '>' . $val . '</td>';
$cellCounter++;
}
$content .= '</tr>';
}
$rowCounter++;
}
$content .= '</tbody>';
if ($settings['sumTr']) {
$GLOBALS['TSFE']->additionalHeaderData['tablesorter_js_' . $idName] = '<script data-ignore="true">
jQuery(document).ready(function($) {
$('#' . $idName . '').tablesorter();
$('#' . $idName . '').sumtr({
readValue : function(e) {
return Math.round(e.html().toString().replace(/[^d.-]/g, '') * 100) / 100; return !isNaN(r) ? r : 0;
},
formatValue : function(val) { return Math.round(val*100)/100; }
});
});
</script>
';
$content .= '
<tfoot>
<tr class="summary">
<td class="text-right">Total:</td>
';
$rowCounter = 0;
foreach ($rows[0] as $colName => $colVal) {
if ($rowCounter) {
$content .= '<td class="text-right grandTotal"></td>';
}
$rowCounter++;
}
$content .= '
<tr>
</tfoot>
';
}
$content .= '</table>';
return $content;
}
}