From 9ec0a61156192484ca90a8dc88b7c23b26129755 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 2 Sep 2017 15:10:44 +0200 Subject: Performances: reorder links when they're written instead of read relates to #891 --- tests/utils/ReferenceLinkDB.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/utils') diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php index f09eebc1..e887aa78 100644 --- a/tests/utils/ReferenceLinkDB.php +++ b/tests/utils/ReferenceLinkDB.php @@ -141,12 +141,34 @@ class ReferenceLinkDB */ public function write($filename) { + $this->reorder(); file_put_contents( $filename, '_links))).' */ ?>' ); } + /** + * Reorder links by creation date (newest first). + * + * Also update the urls and ids mapping arrays. + * + * @param string $order ASC|DESC + */ + public function reorder($order = 'DESC') + { + // backward compatibility: ignore reorder if the the `created` field doesn't exist + if (! isset(array_values($this->_links)[0]['created'])) { + return; + } + + $order = $order === 'ASC' ? -1 : 1; + // Reorder array by dates. + usort($this->_links, function($a, $b) use ($order) { + return $a['created'] < $b['created'] ? 1 * $order : -1 * $order; + }); + } + /** * Returns the number of links in the reference data */ @@ -187,6 +209,7 @@ class ReferenceLinkDB public function getLinks() { + $this->reorder(); return $this->_links; } -- cgit v1.2.3