You are here

function _redirect_uasort in Redirect 7.2

Same name and namespace in other branches
  1. 7 redirect.module \_redirect_uasort()

uasort callback; Compare redirects based on language neutrality and rids.

1 string reference to '_redirect_uasort'
redirect_load_by_source in ./redirect.module
Load multiple URL redirects from the database by {redirect}.source.

File

./redirect.module, line 1594

Code

function _redirect_uasort($a, $b) {
  $a_weight = isset($a->weight) ? $a->weight : 0;
  $b_weight = isset($b->weight) ? $b->weight : 0;

  // First sort by weight (case sensitivity).
  if ($a_weight != $b_weight) {
    return $a_weight > $b_weight ? -1 : 1;
  }

  // Then sort by language specific over language neutral.
  if ($a->language != $b->language) {
    return $a->language != LANGUAGE_NONE ? -1 : 1;
  }

  // Prioritize redirects that have more query parameters over those with less.
  $a_query_count = isset($a->source_options['query']) ? count($a->source_options['query']) : 0;
  $b_query_count = isset($b->source_options['query']) ? count($b->source_options['query']) : 0;
  if ($a_query_count != $b_query_count) {
    return $a_query_count > $b_query_count ? -1 : 1;
  }

  // Lastly sort by the highest redirect ID.
  return $a->rid > $b->rid ? -1 : 1;
}