/** * Sort the headers by quality property if the header matches the * [Kohana_HTTP_Header::$default_sort_filter] definition. * * #### Default sort values * * - Accept * - Accept-Chars * - Accept-Encoding * - Accept-Lang * * @param array $filter Header fields to parse * @return self */ public function sort_values_by_quality(array $filter = array()) { // If a filter argument is supplied if ($filter) { // Apply filter and store previous $previous_filter = HTTP_Header::$default_sort_filter; HTTP_Header::$default_sort_filter = $filter; } // Get a copy of this ArrayObject $values = $this->getArrayCopy(); foreach ($values as $key => $value) { if (!is_array($value) or !in_array($key, HTTP_Header::$default_sort_filter)) { unset($values[$key]); continue; } // Sort them by comparison uasort($value, array($this, '_sort_by_comparison')); $values[$key] = $value; } // Return filter to previous state if required if ($filter) { HTTP_Header::$default_sort_filter = $previous_filter; } foreach ($values as $key => $value) { $this[$key] = $value; } // Return this return $this; }