PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.2.2
GiveWP – Donation Plugin and Fundraising Platform v3.2.2
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / EnqueueScript.php
give / src / Framework Last commit date
Blocks 2 years ago Database 3 years ago DesignSystem 3 years ago Exceptions 4 years ago FieldsAPI 2 years ago FormDesigns 2 years ago Http 2 years ago LegacyPaymentGateways 2 years ago ListTable 3 years ago Migrations 4 years ago Models 2 years ago PaymentGateways 2 years ago QueryBuilder 3 years ago Receipts 2 years ago Routes 2 years ago Support 2 years ago TemplateTags 2 years ago ValidationRules 2 years ago Views 2 years ago WordPressLibraries 2 years ago WordPressShims 4 years ago EnqueueScript.php 4 years ago
EnqueueScript.php
241 lines
1 <?php
2
3 namespace Give\Framework;
4
5 use function wp_set_script_translations;
6
7 /**
8 * This class use to register script.
9 * This class internally uses asset information to set script dependencies and version generated by @wordpress/dependency-extraction-webpack-plugin package.
10 * It also handles script translation registration.
11 *
12 * @since 2.19.6
13 */
14 class EnqueueScript
15 {
16 /**
17 * @var string
18 */
19 private $scriptId;
20
21 /**
22 * @var string
23 */
24 private $relativeScriptPath;
25
26 /**
27 * @var string
28 */
29 private $absoluteScriptPath;
30
31 /**
32 * @var array
33 */
34 private $scriptDependencies = [];
35
36 /**
37 * @var string
38 */
39 private $version = '';
40
41 /**
42 * @var bool
43 */
44 private $loadScriptInFooter = false;
45
46 /**
47 * @var bool
48 */
49 private $registerTranslations = false;
50
51 /**
52 * @var string
53 */
54 private $localizeScriptParamName;
55
56 /**
57 * @var mixed
58 */
59 private $localizeScriptParamData;
60
61 /**
62 * @var string
63 */
64 private $pluginDirPath;
65
66 /**
67 * @var string
68 */
69 private $pluginDirUrl;
70
71 /**
72 * @var string
73 */
74 private $textDomain;
75
76 /**
77 * @since 2.19.6
78 *
79 * @param string $scriptId
80 * @param string $scriptPath
81 * @param string $pluginDirPath
82 * @param string $pluginDirUrl
83 * @param string $textDomain
84 */
85 public function __construct($scriptId, $scriptPath, $pluginDirPath, $pluginDirUrl, $textDomain)
86 {
87 $this->pluginDirPath = trailingslashit($pluginDirPath);
88 $this->pluginDirUrl = trailingslashit($pluginDirUrl);
89 $this->textDomain = $textDomain;
90 $this->scriptId = $scriptId;
91 $this->relativeScriptPath = $scriptPath;
92 $this->absoluteScriptPath = $this->pluginDirPath . $this->relativeScriptPath;
93 }
94
95 /**
96 * @since 2.19.6
97 *
98 * @param string $version
99 *
100 * @return $this
101 */
102 public function version($version)
103 {
104 $this->version = $version;
105 return $this;
106 }
107
108 /**
109 * @since 2.19.6
110 * @return $this
111 */
112 public function loadInFooter()
113 {
114 $this->loadScriptInFooter = true;
115 return $this;
116 }
117
118 /**
119 * @since 2.19.6
120 *
121 * @param array $scriptDependencies
122 *
123 * @return $this
124 */
125 public function dependencies(array $scriptDependencies)
126 {
127 $this->scriptDependencies = $scriptDependencies;
128 return $this;
129 }
130
131 /**
132 * @since 2.19.6
133 * @return $this
134 */
135 public function register()
136 {
137 $scriptUrl = $this->pluginDirUrl . $this->relativeScriptPath;
138 $scriptAsset = $this->getAssetFileData();
139
140 wp_register_script(
141 $this->scriptId,
142 $scriptUrl,
143 $scriptAsset['dependencies'],
144 $scriptAsset['version'],
145 $this->loadScriptInFooter
146 );
147
148 if ($this->registerTranslations) {
149 wp_set_script_translations(
150 $this->scriptId,
151 $this->textDomain,
152 $this->pluginDirPath . 'languages'
153 );
154 }
155
156 if ($this->localizeScriptParamData) {
157 wp_localize_script(
158 $this->scriptId,
159 $this->localizeScriptParamName,
160 $this->localizeScriptParamData
161 );
162 }
163
164 return $this;
165 }
166
167 /**
168 * This function should be called after enqueue or register function.
169 *
170 * @since 2.19.6
171 * @return $this
172 */
173 public function registerTranslations()
174 {
175 $this->registerTranslations = true;
176
177 return $this;
178 }
179
180 /**
181 * This function should be called after enqueue or register function.
182 *
183 * @param string $jsVariableName
184 * @param mixed $data
185 *
186 * @return $this
187 */
188 public function registerLocalizeData($jsVariableName, $data)
189 {
190 $this->localizeScriptParamName = $jsVariableName;
191 $this->localizeScriptParamData = $data;
192
193 return $this;
194 }
195
196 /**
197 * @since 2.19.6
198 * @return $this
199 */
200 public function enqueue()
201 {
202 if (!wp_script_is($this->scriptId, 'registered')) {
203 $this->register();
204 }
205 wp_enqueue_script($this->scriptId);
206
207 return $this;
208 }
209
210 /**
211 * @since 2.19.6
212 * @return string
213 */
214 public function getScriptId()
215 {
216 return $this->scriptId;
217 }
218
219 /**
220 * @since 2.19.6
221 *
222 * @return array
223 */
224 public function getAssetFileData()
225 {
226 $scriptAssetPath = trailingslashit(dirname($this->absoluteScriptPath))
227 . basename($this->absoluteScriptPath, '.js')
228 . '.asset.php';
229 $scriptAsset = file_exists($scriptAssetPath)
230 ? require($scriptAssetPath)
231 : ['dependencies' => [], 'version' => $this->version ?: filemtime($this->absoluteScriptPath)];
232
233 if ($this->scriptDependencies) {
234 $scriptAsset['dependencies'] = array_merge($this->scriptDependencies, $scriptAsset['dependencies']);
235 }
236
237 return $scriptAsset;
238 }
239 }
240
241