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-importutils.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-importutils.php
124 lines
1 <?php
2
3 namespace WordPress\DataLiberation\Importer;
4
5 use WordPress\DataLiberation\BlockMarkup\BlockMarkupProcessor;
6 use WordPress\DataLiberation\DataLiberationHTMLProcessor;
7
8 /**
9 * A collection of utility functions for importing data into WordPress.
10 *
11 * This is a stopgap solution until we have an expressive enough API
12 * to co-locate these tactical functions with their domain-specific code.
13 */
14 class ImportUtils {
15
16 /**
17 * Generates a block opener comment with given attributes.
18 *
19 * @param string $block_name The name of the block.
20 * @param array $attrs The attributes of the block.
21 *
22 * @return string The block opener.
23 */
24 public static function block_opener( $block_name, $attrs = array() ) {
25 $template = "<!-- wp:{$block_name} -->";
26 $processor = new BlockMarkupProcessor( $template );
27 $processor->next_token();
28 $processor->set_block_attributes( $attrs );
29
30 return $processor->get_updated_html();
31 }
32
33 /**
34 * Generates a block closer comment.
35 *
36 * @param string $block_name The name of the block.
37 *
38 * @return string The block closer.
39 */
40 public static function block_closer( $block_name ) {
41 return "<!-- /wp:{$block_name} -->";
42 }
43
44 /**
45 * Convert an array of WP_Block_Object objects to HTML markup.
46 *
47 * @param array $blocks The blocks to convert to markup.
48 *
49 * @return string The HTML markup.
50 */
51 public static function convert_blocks_to_markup( $blocks ) {
52 $block_markup = '';
53
54 foreach ( $blocks as $block ) {
55 // Allow mixing of inner blocks and content strings.
56 if ( is_string( $block ) ) {
57 $block_markup .= $block;
58 continue;
59 }
60 // Start of block comment.
61 $block_markup .= self::block_opener( $block->block_name, $block->attrs );
62 $block_markup .= $block->attrs['content'] ?? '';
63 $block_markup .= self::convert_blocks_to_markup( $block->inner_blocks );
64 $block_markup .= self::block_closer( $block->block_name );
65 }
66
67 return $block_markup;
68 }
69
70 public static function slug_to_title( $filename ) {
71 $name = pathinfo( $filename, PATHINFO_FILENAME );
72 $name = preg_replace( '/^\d+/', '', $name );
73 $name = str_replace(
74 array( '-', '_' ),
75 ' ',
76 $name
77 );
78 $name = ucwords( $name );
79
80 return $name;
81 }
82
83 public static function remove_first_h1_block_from_block_markup( $html ) {
84 $p = DataLiberationHTMLProcessor::create_fragment( $html );
85 if ( false === $p->next_tag() ) {
86 return false;
87 }
88 if ( 'H1' !== $p->get_tag() ) {
89 return false;
90 }
91 $depth = $p->get_current_depth();
92 $title = '';
93 do {
94 if ( false === $p->next_token() ) {
95 break;
96 }
97 if ( '#text' === $p->get_token_type() ) {
98 $title .= $p->get_modifiable_text() . ' ';
99 }
100 } while ( $p->get_current_depth() > $depth );
101
102 if ( ! $title ) {
103 return false;
104 }
105
106 // Move past the closing comment.
107 $p->next_token();
108 if ( '#text' === $p->get_token_type() ) {
109 $p->next_token();
110 }
111 if ( '#comment' !== $p->get_token_type() ) {
112 return false;
113 }
114
115 return array(
116 'h1_content' => trim( $title ),
117 'remaining_html' => substr(
118 $html,
119 $p->get_string_index_after_current_token()
120 ),
121 );
122 }
123 }
124