PluginProbe
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel / 1.8.0
FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel v1.8.0
1.8.0 1.7.1 1.7.0 1.6.0 1.5.2 trunk 0.1 0.2.0 0.2.1 0.3 0.3.1 0.3.2 0.3.3 0.3.4 0.4 0.4.1 0.4.2 0.4.3 1.0 1.1 1.2 1.3.1 1.4.0 1.4.1 1.5.0 All 27 releases
flywp / includes / StaticSite / Engine / Discovery / DateArchiveSource.php

DateArchiveSource.php in FlyWP Helper – Page Cache, Page Optimization, Emails for FlyWP Server Control Panel 1.8.0, at includes/StaticSite/Engine/Discovery/DateArchiveSource.php

58 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FlyWP\StaticSite\Engine\Discovery;
4
5 /**
6 * Year and month archives of posts. Day archives are not included, because there can be many.
7 *
8 * DISTINCT month queries in batches.
9 *
10 * @since 1.8.0
11 */
12 class DateArchiveSource implements UrlSource {
13
14 /**
15 * @var WordPressGateway
16 */
17 private $wp;
18
19 /**
20 * @var int
21 */
22 private $batch_size;
23
24 /**
25 * @param WordPressGateway $wp Gateway.
26 * @param int $batch_size Months in one query.
27 */
28 public function __construct( WordPressGateway $wp, $batch_size = 500 ) {
29 $this->wp = $wp;
30 $this->batch_size = max( 1, (int) $batch_size );
31 }
32
33 /**
34 * {@inheritdoc}
35 */
36 public function urls() {
37 $before_key = 0;
38 $last_year = null;
39
40 do {
41 $rows = $this->wp->month_rows( $before_key, $this->batch_size );
42 $full_batch = count( $rows ) === $this->batch_size;
43
44 foreach ( $rows as $row ) {
45 $before_key = $row['year'] * 100 + $row['month'];
46
47 if ( $last_year !== $row['year'] ) {
48 $last_year = $row['year'];
49
50 yield new DiscoveredUrl( $this->wp->year_link( $row['year'] ), 'archive' );
51 }
52
53 yield new DiscoveredUrl( $this->wp->month_link( $row['year'], $row['month'] ), 'archive' );
54 }
55 } while ( $full_batch );
56 }
57 }
58