PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.3
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.3
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 / EntityReader / class-blockswithmetadataentityreader.php
jetpack / vendor / wp-php-toolkit / data-liberation / EntityReader Last commit date
class-blockswithmetadataentityreader.php 6 days ago class-databasecontententityreader.php 6 days ago class-databaserowsentityreader.php 6 days ago class-entityreaderiterator.php 6 days ago class-epubentityreader.php 6 days ago class-filesystementityreader.php 6 days ago class-htmlentityreader.php 6 days ago class-wxrentityreader.php 6 days ago interface-entity-reader.php 6 days ago
class-blockswithmetadataentityreader.php
116 lines
1 <?php
2
3 namespace WordPress\DataLiberation\EntityReader;
4
5 use WordPress\DataLiberation\DataFormatConsumer\BlocksWithMetadata;
6 use WordPress\DataLiberation\ImportEntity;
7 use WordPress\DataLiberation\Importer\ImportUtils;
8
9 /**
10 * Converts a WP_Blocks_With_Metadata object into a stream of WordPress post and post meta entities.
11 *
12 * Outputs a single post and a number of post meta entities.
13 */
14 class BlocksWithMetadataEntityReader implements EntityReader {
15
16 protected $block_markup;
17 protected $metadata;
18 protected $enqueued_entities = null;
19 protected $current_entity;
20 protected $finished = false;
21 protected $post_id;
22
23 public function __construct( BlocksWithMetadata $blocks_with_meta, $post_id ) {
24 $this->block_markup = $blocks_with_meta->get_block_markup();
25 $this->metadata = $blocks_with_meta->get_all_metadata();
26 $this->post_id = $post_id;
27 }
28
29 public function next_entity() {
30 if ( $this->finished ) {
31 return false;
32 }
33
34 $this->current_entity = null;
35
36 if ( null !== $this->enqueued_entities ) {
37 if ( 0 === count( $this->enqueued_entities ) ) {
38 $this->finished = true;
39
40 return false;
41 } else {
42 $this->current_entity = array_shift( $this->enqueued_entities );
43
44 return true;
45 }
46 }
47
48 $all_metadata = $this->metadata;
49 $post_fields = array();
50 $other_metadata = array();
51
52 foreach ( $all_metadata as $key => $values ) {
53 if ( in_array( $key, ImportEntity::POST_FIELDS, true ) ) {
54 $post_fields[ $key ] = $values[0];
55 } else {
56 $other_metadata[ $key ] = $values[0];
57 }
58 }
59
60 $post_fields['post_id'] = $this->post_id;
61 $post_fields['post_content'] = $this->block_markup;
62 $post_fields['parsed_metadata'] = $all_metadata;
63
64 // In Markdown, the frontmatter title can be a worse title candidate than
65 // the first H1 block. In block markup exports, it will be the opposite.
66 //
67 // @TODO: Enable the API consumer to customize the title resolution.
68 if ( ! isset( $post_fields['post_title'] ) ) {
69 $removed_title = ImportUtils::remove_first_h1_block_from_block_markup( $post_fields['post_content'] );
70 if ( false !== $removed_title ) {
71 $post_fields['post_title'] = $removed_title['h1_content'];
72 $post_fields['post_content'] = $removed_title['remaining_html'];
73 }
74 }
75
76 // Yield the post entity.
77 $this->enqueued_entities[] = new ImportEntity( 'post', $post_fields );
78
79 // Yield all the metadata that don't belong to the post entity.
80 foreach ( $other_metadata as $key => $value ) {
81 $this->enqueued_entities[] = new ImportEntity(
82 'post_meta',
83 array(
84 'post_id' => $this->post_id,
85 'meta_key' => $key, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
86 'meta_value' => $value, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
87 )
88 );
89 }
90
91 $this->current_entity = array_shift( $this->enqueued_entities );
92
93 return true;
94 }
95
96 public function get_entity() {
97 if ( $this->is_finished() ) {
98 return false;
99 }
100
101 return $this->current_entity;
102 }
103
104 public function is_finished(): bool {
105 return $this->finished;
106 }
107
108 /**
109 * @TODO: Implement this
110 * @return string
111 */
112 public function get_reentrancy_cursor() {
113 return '';
114 }
115 }
116