/** * Sort according to current request * * @param $query * @return mixed */ public function scopeSort($query) { if (ch_sort_field() && ch_sort_order()) { $query->orderBy(ch_sort_field(), ch_sort_order()); } return $query; }
/** * Create head links (for sorting) * * @return array */ protected function headLinks() { $links = []; $explicit = count($this->sort) > 0; $icons = self::iconRenderer(); foreach ($this->columns as $field => $caption) { //Translate caption $caption = trans($caption); //If has a caption AND is marked to be sorted if (strlen(trim($caption)) && ($explicit && in_array($field, $this->sort) || !$explicit && !in_array($field, $this->sortExcept))) { //New cell $link = new Cell($field, $caption); //Determine sorting order $order = ch_sort_field($field) && ch_sort_asc() ? config('chameleon.descending', self::$DESC) : config('chameleon.ascending', self::$ASC); //Set appropriate icon $icon = CustomizeCell::$icons(ch_sort_field($field) ? ch_sort_asc() ? config('chameleon.ascending-icon', self::$ASCICON) : config('chameleon.descending-icon', self::$DESCICON) : config('chameleon.sorting-icon', self::$SORTICON), new Cell('', '')); //QueryString params $params = self::buildParameters([config('chameleon.sort-field', self::$FIELD) => $field, config('chameleon.sort-order', self::$ORDER) => $order]); //Create link $links[$field] = $icon . ' ' . CustomizeCell::currentUrl($params, $link); } else { //No sorting link $links[$field] = $caption; } } return $links; }
/** * Get sorting params * * @param string $field * @param string $sort * @return array */ function ch_sort($field = '', $sort = '') { return [ch_sort_field($field), ch_sort_order($sort)]; }