PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.10.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.10.0
4.10.0 4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Notices / NoticesHandler.php
wp-staging / Framework / Notices Last commit date
BackupPluginsNotice.php 4 days ago BooleanNotice.php 2 years ago CliIntegrationNotice.php 4 days ago DisabledItemsNotice.php 2 years ago DismissNotice.php 1 month ago NextGenEngineNotice.php 1 month ago Notices.php 1 month ago NoticesHandler.php 4 days ago ObjectCacheNotice.php 1 year ago OutdatedWpStagingNotice.php 1 year ago WarningsNotice.php 2 years ago WpVersionCompatNotice.php 5 months ago
NoticesHandler.php
106 lines
1 <?php
2
3 namespace WPStaging\Framework\Notices;
4
5 use WPStaging\Framework\Facades\Hooks;
6 use WPStaging\Framework\Onboarding\FreeOnboarding;
7 use WPStaging\Framework\Traits\NoticesTrait;
8
9 /**
10 * @package WPStaging\Framework\Notices
11 */
12 class NoticesHandler
13 {
14 use NoticesTrait;
15
16 public function __construct()
17 {
18 $this->defineHooks();
19 }
20
21 /**
22 * @return void
23 */
24 public function removeOtherPluginAdminNotices()
25 {
26 $isWPStagingAdminPage = $this->isWPStagingAdminPage();
27
28 if ($isWPStagingAdminPage) {
29 remove_all_actions('admin_notices');
30 remove_all_actions('user_admin_notices');
31 remove_all_actions('network_admin_notices');
32 remove_all_actions('all_admin_notices');
33 }
34
35 if ($this->isWpstgInstallPage()) {
36 return;
37 }
38
39 if ($isWPStagingAdminPage && $this->isOnboardingFocusMode()) {
40 return;
41 }
42
43 add_action('admin_notices', [$this, 'addWpstgAdminNotices']);
44 add_action('network_admin_notices', [$this, 'addWpstgNetworkAdminNotices']);
45 add_action('all_admin_notices', [$this, 'addWpstgAllAdminNotices']);// phpcs:ignore WPStaging.Security.AuthorizationChecked
46 }
47
48 /**
49 * Whether the redesigned first-run selector owns the screen being rendered.
50 * Only WP STAGING's own notices stand down for it; the call above has already
51 * cleared everyone else's, and WordPress core chrome is untouched.
52 *
53 * Not applied before the consent decision is settled — the consent modal is
54 * itself rendered through this dispatcher, so the notice that has to stand
55 * down there withdraws on its own instead.
56 *
57 * @return bool
58 */
59 private function isOnboardingFocusMode(): bool
60 {
61 $onboarding = FreeOnboarding::resolve();
62
63 return $onboarding !== null && $onboarding->ownsCurrentScreen();
64 }
65
66 /**
67 * @return void
68 */
69 public function addWpstgAdminNotices()
70 {
71 Hooks::doAction(Notices::ACTION_ADMIN_NOTICES);
72 }
73
74 /**
75 * @return void
76 */
77 public function addWpstgNetworkAdminNotices()
78 {
79 Hooks::doAction(Notices::ACTION_NETWORK_ADMIN_NOTICES);
80 }
81
82 /**
83 * @return void
84 */
85 public function addWpstgAllAdminNotices()
86 {
87 Hooks::doAction(Notices::ACTION_ALL_ADMIN_NOTICES);
88 }
89
90 /**
91 * @return void
92 */
93 private function defineHooks()
94 {
95 static $isRegistered = false;
96 if ($isRegistered) {
97 return;
98 }
99
100 add_action('in_admin_header', [$this, 'removeOtherPluginAdminNotices']);
101
102 // loaded
103 $isRegistered = true;
104 }
105 }
106