/** * Helper for usort, compares labels alphabetically * Compares translations of labels if a translator is set * @param NavigationNode $item1 * @param NavigationNode $item2 * @return int */ public static function compareLabel(NavigationNode $item1, NavigationNode $item2) { $navigation = $item1->lookup('Navigation', TRUE); $translator = $navigation->getTranslator(); if ($translator instanceof ITranslator) { $label1 = $translator->translate($item1->label); $label2 = $translator->translate($item2->label); } else { $label1 = $item1->label; $label2 = $item2->label; } $sortable = array(String::lower((string) $label1), String::lower((string) $label2)); if ($sortable[0] == $sortable[1]) { return 0; } $sorted = $sortable; sort($sorted); return $sorted[0] == $sortable[0] ? -1 : 1; }