PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6
GiveWP – Donation Plugin and Fundraising Platform v4.16.6
4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 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 / vendor / vendor-prefixed / stellarwp / admin-notices / src / Actions / RenderAdminNotice.php
give / vendor / vendor-prefixed / stellarwp / admin-notices / src / Actions Last commit date
DisplayNoticesInAdmin.php 1 year ago EnqueueNoticesScriptsAndStyles.php 1 year ago NoticeShouldRender.php 1 year ago RenderAdminNotice.php 1 year ago
RenderAdminNotice.php
103 lines
1 <?php
2
3 declare(strict_types=1);
4
5
6 namespace Give\Vendors\StellarWP\AdminNotices\Actions;
7
8 use Give\Vendors\StellarWP\AdminNotices\AdminNotice;
9 use Give\Vendors\StellarWP\AdminNotices\DataTransferObjects\NoticeElementProperties;
10 use Give\Vendors\StellarWP\AdminNotices\Traits\HasNamespace;
11 use WP_HTML_Tag_Processor;
12
13 /**
14 * Renders the admin notice based on the configuration of the notice.
15 *
16 * @since 1.1.0 refactored to use namespace and notice is passed to the __invoke method
17 * @since 1.0.0
18 */
19 class RenderAdminNotice
20 {
21 use HasNamespace;
22
23 /**
24 * Renders the admin notice
25 *
26 * @since 2.0.0 custom notices have a completely different render flow
27 * @since 1.1.0 added namespacing and notice is passed to the __invoke method
28 * @since 1.0.0
29 */
30 public function __invoke(AdminNotice $notice): string
31 {
32 $elementProperties = new NoticeElementProperties($notice, $this->namespace);
33 $renderTextOrCallback = $notice->getRenderTextOrCallback();
34
35 if (is_callable($renderTextOrCallback)) {
36 $content = $renderTextOrCallback($notice, $elementProperties);
37 } else {
38 $content = $renderTextOrCallback;
39 }
40
41 if ($notice->isCustom()) {
42 return $this->applyCustomAttributesToContent($content, $notice);
43 }
44
45 return sprintf(
46 "<div class='%s' $elementProperties->idAttribute>%s</div>",
47 esc_attr($this->getStandardWrapperClasses($notice)),
48 $notice->shouldAutoParagraph() ? wpautop($content) : $content
49 );
50 }
51
52 /**
53 * Generates the classes for the standard WordPress notice wrapper.
54 *
55 * @since 2.0.0 notice is assumed to be standard only
56 * @since 1.1.0 notice is passed instead of accessed as a property
57 * @since 1.0.0
58 */
59 private function getStandardWrapperClasses(AdminNotice $notice): string
60 {
61 $classes = [
62 'notice',
63 "notice-{$notice->getUrgency()}",
64 ];
65
66 if ($notice->isDismissible()) {
67 $classes[] = "is-dismissible";
68 }
69
70 if ($notice->getLocation() && $notice->getLocation()->isInline()) {
71 $classes[] = 'inline';
72 }
73
74 if ($notice->usesAlternateStyles()) {
75 $classes[] = 'notice-alt';
76 }
77
78 return implode(' ', $classes);
79 }
80
81 /**
82 * Apply the needed custom attributes to the content.
83 *
84 * @since 2.0.0
85 */
86 private function applyCustomAttributesToContent(
87 string $content,
88 AdminNotice $notice
89 ): string {
90 $tags = new WP_HTML_Tag_Processor($content);
91
92 $tags->next_tag();
93
94 $tags->set_attribute("data-stellarwp-{$this->namespace}-notice-id", $notice->getId());
95
96 if ($notice->getLocation()) {
97 $tags->set_attribute("data-stellarwp-{$this->namespace}-location", (string)$notice->getLocation());
98 }
99
100 return $tags->__toString();
101 }
102 }
103