public static function sort(&$books, \Sb\Lists\Sorting $sorting) { $className = get_class(); $sortingField = $sorting->getField(); $sortingDirection = $sorting->getDirection(); switch ($sortingField) { case self::SORTING_FIELD_RATING: switch ($sortingDirection) { case EntityHelper::ASC: \Sb\Trace\Trace::addItem($className . "::compareByRatingAsc"); usort($books, $className . "::compareByRatingAsc"); break; case EntityHelper::DESC: \Sb\Trace\Trace::addItem($className . "::compareByRatingDesc"); usort($books, $className . "::compareByRatingDesc"); break; } break; case self::SORTING_FIELD_TITLE: switch ($sortingDirection) { case EntityHelper::ASC: \Sb\Trace\Trace::addItem($className . "::compareByTitleAsc"); usort($books, $className . "::compareByTitleAsc"); break; case EntityHelper::DESC: \Sb\Trace\Trace::addItem($className . "::compareByTitleDesc"); usort($books, $className . "::compareByTitleDesc"); break; } break; case self::SORTING_FIELD_AUTHOR: switch ($sortingDirection) { case EntityHelper::ASC: \Sb\Trace\Trace::addItem($className . "::compareByAuthorAsc"); usort($books, $className . "::compareByAuthorAsc"); break; case EntityHelper::DESC: \Sb\Trace\Trace::addItem($className . "::compareByAuthorDesc"); usort($books, $className . "::compareByAuthorDesc"); break; } break; case self::SORTING_FIELD_STATE: switch ($sortingDirection) { case EntityHelper::ASC: \Sb\Trace\Trace::addItem($className . "::compareByStateAsc"); usort($books, $className . "::compareByStateAsc"); break; case EntityHelper::DESC: \Sb\Trace\Trace::addItem($className . "::compareByStateDesc"); usort($books, $className . "::compareByStateDesc"); break; } break; case self::SORTING_FIELD_PUBLISHING_DATE: switch ($sortingDirection) { case EntityHelper::ASC: \Sb\Trace\Trace::addItem($className . "::compareByPublishingDateAsc"); usort($books, $className . "::compareByPublishingDateAsc"); break; case EntityHelper::DESC: \Sb\Trace\Trace::addItem($className . "::compareByPublishingDateDesc"); usort($books, $className . "::compareByPublishingDateDesc"); break; } break; } }