@@ -14,46 +14,47 @@ function components(Client $client, CacheItemPoolInterface $markdownCache): arra
1414 $ component ['contributors ' ] = $ client ->repo ()->contributors ($ username , $ repository );
1515 $ component ['participation ' ] = $ client ->repo ()->participation ($ username , $ repository );
1616
17- $ releases = (new ResultPager ($ client ))
17+ $ apiReleases = (new ResultPager ($ client ))
1818 ->fetchAll (
1919 $ client ->repo ()->releases (),
2020 'all ' ,
2121 [$ username , $ repository , ['per_page ' => 100 ]]
2222 );
2323
24- $ releases = array_map (
25- function (array $ release ) use ($ client , $ markdownCache , $ component ) {
26- $ cacheKey = 'gfm ' . md5 ($ component ['repository ' ] . $ release ['body ' ]);
27-
28- $ cacheItem = $ markdownCache ->getItem ($ cacheKey );
29-
30- if ($ cacheItem ->isHit ()) {
31- $ html = $ cacheItem ->get ();
32- } else {
33- $ html = $ client ->markdown ()->render (
34- $ release ['body ' ],
35- 'gfm ' ,
36- $ component ['repository ' ]
37- );
38-
39- $ cacheItem ->set ($ html );
40- $ markdownCache ->save ($ cacheItem );
41- }
42-
43- return [
44- 'version ' => ltrim ($ release ['tag_name ' ], 'v ' ),
45- 'tag ' => $ release ['tag_name ' ],
46- 'date ' => new \DateTimeImmutable ($ release ['created_at ' ]),
47- 'html ' => $ html ,
48- 'url ' => $ release ['html_url ' ],
49- ];
50- },
51- $ releases
52- );
24+ $ releases = [];
25+
26+ foreach ($ apiReleases as $ release ) {
27+ $ cacheKey = 'gfm ' . md5 ($ component ['repository ' ] . $ release ['body ' ]);
28+
29+ $ cacheItem = $ markdownCache ->getItem ($ cacheKey );
30+
31+ if ($ cacheItem ->isHit ()) {
32+ $ html = $ cacheItem ->get ();
33+ } else {
34+ $ html = $ client ->markdown ()->render (
35+ $ release ['body ' ],
36+ 'gfm ' ,
37+ $ component ['repository ' ]
38+ );
39+
40+ $ cacheItem ->set ($ html );
41+ $ markdownCache ->save ($ cacheItem );
42+ }
43+
44+ $ date = new \DateTimeImmutable ($ release ['created_at ' ]);
5345
54- usort ($ releases , function ($ a , $ b ) {
55- return \version_compare ($ b ['version ' ], $ a ['version ' ]);
56- });
46+ $ releases [(int ) $ date ->format ('U ' )] = [
47+ 'version ' => ltrim ($ release ['tag_name ' ], 'v ' ),
48+ 'tag ' => $ release ['tag_name ' ],
49+ 'date ' => $ date ,
50+ 'html ' => $ html ,
51+ 'url ' => $ release ['html_url ' ],
52+ 'component ' => $ component ['title ' ],
53+ 'repository ' => $ component ['repository ' ],
54+ ];
55+ }
56+
57+ krsort ($ releases , SORT_NATURAL );
5758
5859 $ component ['releases ' ] = array_values ($ releases );
5960
@@ -87,14 +88,11 @@ function releases(array $components): array
8788 foreach ($ component ['releases ' ] as $ release ) {
8889 $ time = (int ) $ release ['date ' ]->format ('U ' );
8990
90- $ releases [(PHP_INT_MAX - $ time ) . '- ' . $ component ['repository ' ]] = [
91- 'component ' => $ component ['title ' ],
92- 'repository ' => $ component ['repository ' ],
93- ] + $ release ;
91+ $ releases [$ time . '- ' . $ component ['repository ' ]] = $ release ;
9492 }
9593 }
9694
97- ksort ($ releases , SORT_NATURAL );
95+ krsort ($ releases , SORT_NATURAL );
9896
9997 return array_values ($ releases );
10098}
0 commit comments