| @@ -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 | } |