public static function render(array $parameters)
{
list($sortColumn, $sortParameter, $title, $queryParameters) = self::parseParameters($parameters);
$title = self::applyFormatting($title);
$icon = Config::get('columnsortable.default_icon_set');
foreach (Config::get('columnsortable.columns') as $value) {
if (in_array($sortColumn, $value['rows'])) {
$icon = $value['class'];
}
}
if (Request::get('sort') == $sortParameter && in_array(Request::get('order'), ['asc', 'desc'])) {
$icon .= Request::get('order') === 'asc' ? Config::get('columnsortable.asc_suffix', '-asc') : Config::get('columnsortable.desc_suffix', '-desc');
$direction = Request::get('order') === 'desc' ? 'asc' : 'desc';
} else {
$icon = Config::get('columnsortable.sortable_icon');
$direction = Config::get('columnsortable.default_direction_unsorted', 'asc');
}
$iconAndTextSeparator = Config::get('columnsortable.icon_text_separator', '');
$clickableIcon = Config::get('columnsortable.clickable_icon', false);
$trailingTag = $iconAndTextSeparator . '<i class="' . $icon . '"></i>' . '</a>';
if ($clickableIcon === false) {
$trailingTag = '</a>' . $iconAndTextSeparator . '<i class="' . $icon . '"></i>';
}
$anchorClass = self::getAnchorClass();
$queryString = http_build_query(array_merge($queryParameters, array_filter(Request::except('sort', 'order', 'page')), ['sort' => $sortParameter, 'order' => $direction]));
return '<a' . $anchorClass . ' href="' . url(Request::path() . '?' . $queryString) . '"' . '>' . htmlentities($title) . $trailingTag;
}