PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.2
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.2
16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / vendor / wp-php-toolkit / data-liberation / Importer / class-retryfrontloadingiterator.php
jetpack / vendor / wp-php-toolkit / data-liberation / Importer Last commit date
class-attachmentdownloader.php 1 week ago class-attachmentdownloaderevent.php 1 week ago class-entityimporter.php 1 week ago class-entityiteratorchain.php 1 week ago class-filevisitorevent.php 1 week ago class-importsession.php 1 week ago class-importutils.php 1 week ago class-retryfrontloadingiterator.php 1 week ago class-streamimporter.php 1 week ago
class-retryfrontloadingiterator.php
113 lines
1 <?php
2 // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
3
4 namespace WordPress\DataLiberation\Importer;
5
6 use Iterator;
7 use WordPress\DataLiberation\ImportEntity;
8
9 class RetryFrontloadingIterator implements Iterator {
10 private $import_post_id;
11 private $last_id_on_page = null;
12 private $placeholders = array();
13 private $current;
14 private $rewound = true;
15
16 public function __construct( $import_post_id ) {
17 $this->import_post_id = $import_post_id;
18 }
19
20 /**
21 * @return mixed
22 */
23 public function current() {
24 if ( ! $this->current ) {
25 return null;
26 }
27
28 return new ImportEntity(
29 'asset_retry',
30 array(
31 'current_url' => $this->current->meta['current_url'],
32 'original_url' => $this->current->meta['original_url'],
33 )
34 );
35 }
36
37 public function next(): void {
38 if ( empty( $this->placeholders ) ) {
39 $this->query_next_page();
40 }
41 $this->current = array_shift( $this->placeholders );
42 $this->rewound = false;
43 }
44
45 /**
46 * @return mixed
47 */
48 public function key() {
49 if ( ! $this->current ) {
50 return null;
51 }
52
53 return $this->current->id;
54 }
55
56 public function valid(): bool {
57 if ( $this->rewound ) {
58 $this->next();
59 }
60
61 return null !== $this->current;
62 }
63
64 public function rewind(): void {
65 $this->placeholders = array();
66 $this->last_id_on_page = null;
67 $this->rewound = true;
68 }
69
70 private function query_next_page() {
71 global $wpdb;
72
73 $where_clauses = array(
74 $wpdb->prepare( 'post_type = %s', 'frontloading_stub' ),
75 $wpdb->prepare( 'post_parent = %d', $this->import_post_id ),
76 $wpdb->prepare( 'post_status = %s', ImportSession::FRONTLOAD_STATUS_ERROR ),
77 "pm.meta_key = 'attempts'",
78 'pm.meta_value < 3',
79 );
80
81 if ( null !== $this->last_id_on_page ) {
82 $where_clauses[] = $wpdb->prepare( 'p.ID > %d', $this->last_id_on_page );
83 }
84
85 $where = implode( ' AND ', $where_clauses );
86 $this->placeholders = $wpdb->get_results(
87 "SELECT p.* FROM {$wpdb->posts} p
88 INNER JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id
89 WHERE {$where}
90 ORDER BY p.ID ASC
91 LIMIT 100"
92 );
93 $last_placeholder = end( $this->placeholders );
94 if ( $last_placeholder ) {
95 $this->last_id_on_page = $last_placeholder->id;
96 }
97
98 update_meta_cache(
99 'post',
100 array_map(
101 function ( $placeholder ) {
102 return $placeholder->id;
103 },
104 $this->placeholders
105 )
106 );
107
108 foreach ( $this->placeholders as $placeholder ) {
109 $placeholder->meta = get_all_post_meta_flat( $placeholder->id );
110 }
111 }
112 }
113