PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.9.2
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.9.2
4.9.2 4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 All 200 releases
← All changes | includes/Modules/StyleHandler.php +21 -7 4.5.44.9.2 View file →
@@ -1,8 +1,20 @@
1 1 <?php
2 +namespace WPDeveloper\BetterDocs\Modules;
2 3
3 -namespace WPDeveloper\BetterDocs\Modules;
4 +if ( ! defined( 'ABSPATH' ) ) {
5 + exit;
6 +}
4 7
8 +
9 +
10 +// Doc/category-listing primitives (meta_query/tax_query, post__not_in/exclude)
11 +// are intrinsic to BetterDocs' KB / category / FAQ filters and intentional.
12 +// phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key
13 +// phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query
14 +// phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_tax_query
15 +// phpcs:disable WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_exclude
16 +// phpcs:disable WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in
5 17 use WPDeveloper\BetterDocs\Utils\CSSParser;
6 18
7 19 final class StyleHandler {
8 20 private static $instance;
@@ -172,8 +184,9 @@
172 184 global $post;
173 185 $deps = apply_filters( 'betterdocs_generated_css_frontend_deps', array( ) );
174 186
175 187 // generatepress elements
188 + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WP core 'active_plugins' filter, applied to detect GeneratePress Premium presence on multisite.
176 189 if ( in_array( 'gp-premium/gp-premium.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
177 190 $gp_elements = get_posts( array( 'post_type' => 'gp_elements' ) );
178 191 if ( is_array( $gp_elements ) && ! empty( $gp_elements ) ) {
179 192 foreach ( $gp_elements as $element ) {
@@ -322,9 +335,9 @@
322 335 return;
323 336 }
324 337 if ( ! empty( $css = CSSParser::build_css( $block_styles ) ) ) {
325 338 if ( ! file_exists( $this->style_dir ) ) {
326 - mkdir( $this->style_dir );
339 + wp_mkdir_p( $this->style_dir );
327 340 }
328 341 file_put_contents( $this->style_dir . $this->prefix . '-edit-site-' . abs( $post->ID ) . '.min.css', $css );
329 342 }
330 343 } // Write CSS for Page/Posts
@@ -329,9 +342,9 @@
329 342 }
330 343 } // Write CSS for Page/Posts
331 344 elseif ( ! empty( $css = CSSParser::build_css( $block_styles ) ) ) {
332 345 if ( ! file_exists( $this->style_dir ) ) {
333 - mkdir( $this->style_dir );
346 + wp_mkdir_p( $this->style_dir );
334 347 }
335 348 file_put_contents( $this->style_dir . $this->prefix . '-' . abs( $post->ID ) . '.min.css', $css );
336 349 }
337 350 }
@@ -345,9 +358,9 @@
345 358 if ( isset( $block_styles ) && is_array( $block_styles ) ) {
346 359 if ( ! empty( $css = CSSParser::build_css( $block_styles ) ) ) {
347 360 $upload_dir = $this->style_dir . 'reusable-blocks/';
348 361 if ( ! file_exists( $upload_dir ) ) {
349 - mkdir( $upload_dir, 0777, true );
362 + wp_mkdir_p( $upload_dir );
350 363 }
351 364 file_put_contents( $upload_dir . '/' . 'betterdocs-reusable-' . abs( $id ) . '.min.css', $css );
352 365 }
353 366 }
@@ -384,9 +397,9 @@
384 397 self::$_block_styles = array_merge( self::$_block_styles, $block_styles );
385 398
386 399 if ( ! empty( $css = CSSParser::build_css( self::$_block_styles ) ) ) {
387 400 if ( ! file_exists( $upload_dir ) ) {
388 - mkdir( $upload_dir );
401 + wp_mkdir_p( $upload_dir );
389 402 }
390 403
391 404 file_put_contents( $editSiteCssPath, $css );
392 405 }
@@ -391,9 +404,9 @@
391 404 file_put_contents( $editSiteCssPath, $css );
392 405 }
393 406 } elseif ( ! empty( $css = CSSParser::build_css( $block_styles ) ) ) {
394 407 if ( ! file_exists( $this->style_dir ) ) {
395 - mkdir( $this->style_dir );
408 + wp_mkdir_p( $this->style_dir );
396 409 }
397 410
398 411 file_put_contents( $editSiteCssPath, $css );
399 412 }
@@ -405,7 +418,8 @@
405 418 public static function betterdocs_get_post_content_by_post_name( $post_name ) {
406 419 global $wpdb;
407 420 $sql = $wpdb->prepare( "SELECT ID FROM {$wpdb->prefix}posts WHERE post_name = %s", $post_name );
408 421
409 - return $wpdb->get_results( $sql, ARRAY_A ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
422 + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- one-off lookup of FSE template posts by post_name during CSS generation; no caching layer applies.
423 + return $wpdb->get_results( $sql, ARRAY_A );
410 424 }
411 425 }