/** * @param RokSprocket_Item $a * @param RokSprocket_Item $b * * @return int */ protected static function cmpForManualOrderWithAdditionalBefore($a, $b) { if ($a->getOrder() === null && $b->getOrder() === null) { if ($a->getDbOrder() === $b->getDbOrder()) { return 0; } return $a->getDbOrder() < $b->getDbOrder() ? -1 : 1; } elseif ($a->getOrder() !== null && $b->getOrder() === null) { return 1; // a comes before b } elseif ($a->getOrder() === null && $b->getOrder() !== null) { return -1; // a comes after b } elseif ($a->getOrder() === $b->getOrder()) { return 0; } else { return $a->getOrder() < $b->getOrder() ? -1 : 1; } }