PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.15.0
GiveWP – Donation Plugin and Fundraising Platform v4.15.0
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 1 year ago Database 3 years ago DesignSystem 1 year ago Exceptions 1 year ago FieldsAPI 9 months ago FormDesigns 2 years ago Http 9 months ago LegacyPaymentGateways 2 years ago ListTable 9 months ago Migrations 5 months ago Models 1 year ago PaymentGateways 9 months ago Permissions 5 months ago QueryBuilder 9 months ago Receipts 5 months ago Routes 1 year ago Support 7 months ago TemplateTags 2 years ago ValidationRules 2 years ago Views 2 years ago WordPressLibraries 2 years ago WordPressShims 4 years ago EnqueueScript.php 1 year ago
EnqueueScript.php
294 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 4.0.0 added registration of style sheets generated by wordpress/scripts
133 * @since 2.19.6
134 * @return $this
135 */
136 public function register()
137 {
138 $scriptUrl = $this->pluginDirUrl . $this->relativeScriptPath;
139 $scriptAsset = $this->getAssetFileData();
140
141 $stylePath = $this->getStylePath();
142 $styleUrl = $this->getStyleUrl();
143
144 if (file_exists($stylePath)) {
145 wp_register_style(
146 $this->scriptId,
147 $styleUrl,
148 [],
149 $scriptAsset['version']
150 );
151 }
152
153 $stylePathIndex = $this->getStylePath('style-');
154 $styleUrlIndex = $this->getStyleUrl('style-');
155
156 if (file_exists($stylePathIndex)) {
157 wp_register_style(
158 'style-' . $this->scriptId,
159 $styleUrlIndex,
160 [],
161 $scriptAsset['version']
162 );
163 }
164
165 wp_register_script(
166 $this->scriptId,
167 $scriptUrl,
168 $scriptAsset['dependencies'],
169 $scriptAsset['version'],
170 $this->loadScriptInFooter
171 );
172
173 if ($this->registerTranslations) {
174 wp_set_script_translations(
175 $this->scriptId,
176 $this->textDomain,
177 $this->pluginDirPath . 'languages'
178 );
179 }
180
181 if ($this->localizeScriptParamData) {
182 wp_localize_script(
183 $this->scriptId,
184 $this->localizeScriptParamName,
185 $this->localizeScriptParamData
186 );
187 }
188
189 return $this;
190 }
191
192 /**
193 * This function should be called after enqueue or register function.
194 *
195 * @since 2.19.6
196 * @return $this
197 */
198 public function registerTranslations()
199 {
200 $this->registerTranslations = true;
201
202 return $this;
203 }
204
205 /**
206 * This function should be called after enqueue or register function.
207 *
208 * @param string $jsVariableName
209 * @param mixed $data
210 *
211 * @return $this
212 */
213 public function registerLocalizeData($jsVariableName, $data)
214 {
215 $this->localizeScriptParamName = $jsVariableName;
216 $this->localizeScriptParamData = $data;
217
218 return $this;
219 }
220
221 /**
222 * @since 2.19.6
223 * @return $this
224 */
225 public function enqueue()
226 {
227 if (!wp_script_is($this->scriptId, 'registered')) {
228 $this->register();
229 }
230
231 wp_enqueue_script($this->scriptId);
232
233 if (wp_style_is($this->scriptId, 'registered')) {
234 wp_enqueue_style($this->scriptId);
235 }
236
237 if (wp_style_is('style-' . $this->scriptId, 'registered')) {
238 wp_enqueue_style('style-' . $this->scriptId);
239 }
240
241 return $this;
242 }
243
244 /**
245 * @since 2.19.6
246 * @return string
247 */
248 public function getScriptId()
249 {
250 return $this->scriptId;
251 }
252
253 /**
254 * @since 2.19.6
255 *
256 * @return array
257 */
258 public function getAssetFileData()
259 {
260 $scriptAssetPath = trailingslashit(dirname($this->absoluteScriptPath))
261 . basename($this->absoluteScriptPath, '.js')
262 . '.asset.php';
263 $scriptAsset = file_exists($scriptAssetPath)
264 ? require($scriptAssetPath)
265 : ['dependencies' => [], 'version' => $this->version ?: filemtime($this->absoluteScriptPath)];
266
267 if ($this->scriptDependencies) {
268 $scriptAsset['dependencies'] = array_merge($this->scriptDependencies, $scriptAsset['dependencies']);
269 }
270
271 return $scriptAsset;
272 }
273
274 /**
275 * @since 4.0.0
276 */
277 public function getStylePath($prefix = ''): string
278 {
279 return trailingslashit(dirname($this->absoluteScriptPath))
280 . trim($prefix . basename($this->relativeScriptPath, '.js')) . '.css';
281 }
282
283 /**
284 * @since 4.0.0
285 */
286 public function getStyleUrl($prefix = ''): string
287 {
288 $cssFileName = trim($prefix . basename($this->relativeScriptPath, '.js')) . '.css';
289
290 return $this->pluginDirUrl . str_replace(basename($this->relativeScriptPath), $cssFileName, $this->relativeScriptPath);
291 }
292 }
293
294