private function buildQuery(array $parameters)
{
// no parameters?
if (empty($parameters)) {
return '';
}
// encode the keys
$keys = self::urlencode_rfc3986(array_keys($parameters));
// encode the values
$values = self::urlencode_rfc3986(array_values($parameters));
// reset the parameters
$parameters = array_combine($keys, $values);
// sort parameters by key
uksort($parameters, 'strcmp');
// loop parameters
foreach ($parameters as $key => $value) {
// sort by value
if (is_array($value)) {
$parameters[$key] = natsort($value);
}
}
// process parameters
foreach ($parameters as $key => $value) {
$chunks[] = $key . '=' . str_replace('%25', '%', $value);
}
// return
return implode('&', $chunks);
}