/** * Helper for usort, compares priority values * @param NavigationNode $item1 * @param NavigationNode $item2 * @param int $sortingMethod * @return int; */ public static function comparePriority(NavigationNode $item1, NavigationNode $item2, $sortingMethod = self::SORT_PRIORITY) { switch ($sortingMethod) { case self::SORT_PRIORITY: $sortable = array($item1->getPriority(), $item2->getPriority()); break; case self::SORT_PRIORITY_INTEGER: $sortable = array((double) $item1->getPriority(), (double) $item2->getPriority()); break; case self::SORT_PRIORITY_STRING: $sortable = array(String::lower((string) $item1->getPriority()), String::lower((string) $item2->getPriority())); break; default: throw new InvalidStateException("No match for sorting method"); } if ($sortable[0] == $sortable[1]) { return 0; } $sorted = $sortable; sort($sorted); return $sorted[0] == $sortable[0] ? -1 : 1; }