PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.9.1
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.9.1
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 3.5.2 All 199 releases
betterdocs / includes / Utils / Enqueue.php

Enqueue.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 3.9.1, at includes/Utils/Enqueue.php

93 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace WPDeveloper\BetterDocs\Utils;
3
4 class Enqueue extends Base {
5 private $plugin_url;
6 private $plugin_path;
7 private $version;
8
9 public function __construct( $plugin_url, $plugin_path, $version ) {
10 $this->plugin_url = $plugin_url;
11 $this->plugin_path = $plugin_path;
12 $this->version = $version;
13 }
14
15 public function enqueue( $handle, $filename, $dependencies = [], $args = null ) {
16 $config = $this->asset_config( $filename, $dependencies, $args );
17 $this->call_wp_func( 'wp_enqueue', $handle, $config );
18 }
19
20 public function register( $handle, $filename, $dependencies = [], $args = null ) {
21 $config = $this->asset_config( $filename, $dependencies, $args );
22 $this->call_wp_func( 'wp_register', $handle, $config );
23 }
24
25 public function localize( $handle, $name, $args ) {
26 wp_localize_script( $handle, $name, $args );
27 }
28
29 private function call_wp_func( $action, $handle, $config ) {
30 call_user_func(
31 $action . '_' . $config['type'],
32 $handle,
33 $config['url'],
34 $config['dependencies'],
35 $config['version'],
36 $config['args']
37 );
38
39 if ( 'script' === $config['type'] && in_array( 'wp-i18n', $config['dependencies'], true ) ) {
40 $url = isset( $config['url'] ) ? $config['url'] : '';
41 preg_match( '~/plugins/([^/]+)~', $url, $matches );
42 $url_portion = isset( $matches[1] ) ? $matches[1] : '';
43 if ( $url_portion == 'betterdocs-pro' ) {
44 wp_set_script_translations( $handle, 'betterdocs-pro' );
45 } elseif ( $url_portion == 'betterdocs' ) {
46 wp_set_script_translations( $handle, 'betterdocs' );
47 }
48 }
49 }
50
51 public function asset_config( $filename, $dependencies = [], $args = null ) {
52 $is_js = preg_match( '/\.js$/', $filename );
53 $basename = preg_replace( '/\.\w+$/', '', $filename );
54 $url = $this->asset_url( $filename );
55 $version = $this->version;
56 $asset_config_path = $this->dist_path( $basename . '.asset.php' );
57
58 if ( file_exists( $asset_config_path ) ) {
59 $asset_config = require $asset_config_path;
60
61 if ( $is_js ) {
62 $dependencies = array_unique( array_merge( $asset_config['dependencies'], $dependencies ) );
63 }
64 $version = $asset_config['version'];
65 }
66
67 return [
68 'url' => $url,
69 'dependencies' => $dependencies,
70 'version' => $version,
71 'type' => $is_js ? 'script' : 'style',
72 'args' => null !== $args ? $args : ( $is_js ? true : 'all' )
73 ];
74 }
75
76 public function asset_url( $filename ) {
77 if ( filter_var( $filename, FILTER_VALIDATE_URL ) ) {
78 return $filename;
79 }
80
81 return esc_url( $this->plugin_url . 'assets/' . $filename );
82 }
83
84 public function dist_path( $file ) {
85 return path_join( $this->plugin_path, 'assets/' . $file );
86 }
87
88 public function icon( $name, $is_admin = false ) {
89 $_path = $is_admin ? 'assets/admin/images/' : 'assets/images/';
90 return esc_url( $this->plugin_url . $_path . $name . '?v=' . $this->version );
91 }
92 }
93