PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 4.9.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v4.9.2
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 / Traits / NoticesTrait.php
wp-staging / Framework / Traits Last commit date
ApplyFiltersTrait.php 2 months ago ArrayableTrait.php 7 months ago BatchSizeCalculateTrait.php 7 months ago BearerTokenTrait.php 4 months ago BenchmarkTrait.php 2 years ago BooleanTransientTrait.php 5 years ago DatabaseSearchReplaceTrait.php 2 weeks ago DbRowsGeneratorTrait.php 3 years ago DebugLogTrait.php 1 year ago DeveloperTimerTrait.php 9 months ago EndOfLinePlaceholderTrait.php 1 year ago EventLoggerTrait.php 1 month ago FileScanToCacheTrait.php 10 months ago FormatTrait.php 11 months ago HttpRequestTrait.php 9 months ago HydrateTrait.php 1 year ago I18nTrait.php 1 year ago IpResolverTrait.php 10 months ago MaintenanceTrait.php 5 months ago MemoryExhaustTrait.php 2 years ago MySQLRowsGeneratorTrait.php 7 months ago NoticesTrait.php 1 day ago PropertyConstructor.php 5 years ago RenameTmpDirectoryTrait.php 5 months ago ResourceTrait.php 4 months ago RestRequestTrait.php 3 months ago RestoreFileExclusionTrait.php 1 year ago SerializeTrait.php 1 year ago SetTimeLimitTrait.php 1 month ago SlashTrait.php 1 year ago SqlCommentTrait.php 3 months ago TablePrefixValidator.php 3 months ago UrlTrait.php 1 year ago ValueGetterTrait.php 1 year ago WindowsOsTrait.php 1 year ago
NoticesTrait.php
139 lines
1 <?php
2
3 namespace WPStaging\Framework\Traits;
4
5 use WPStaging\Core\WPStaging;
6 use WPStaging\Framework\Analytics\AnalyticsConsent;
7 use WPStaging\Backend\Administrator;
8 use WPStaging\Framework\Facades\Hooks;
9 use WPStaging\Framework\Facades\Sanitize;
10 use WPStaging\Framework\Notices\Notices;
11
12 trait NoticesTrait
13 {
14 /** @var string */
15 protected $noticesViewPath;
16
17 /**
18 * Check whether the page is WP Staging admin page or not
19 * it also checks if it is WP Staging AJAX action
20 * @return bool
21 */
22 public function isWPStagingAdminPage()
23 {
24 return $this->isWPStagingAdminScreen() || $this->isWPStagingAjaxAction();
25 }
26
27 /**
28 * Exact match for page slugs to avoid false positives from third-party plugins
29 * whose slugs happen to start with "wpstg-" or "wpstg_"
30 *
31 * @return bool
32 */
33 protected function isWPStagingAdminScreen(): bool
34 {
35 if (!is_admin()) {
36 return false;
37 }
38
39 $currentPage = isset($_GET["page"]) ? Sanitize::sanitizeString($_GET["page"]) : null;
40 return !empty($currentPage) && in_array($currentPage, Administrator::ADMIN_PAGE_SLUGS, true);
41 }
42
43 /**
44 * Prefix match for AJAX actions is safe because WP Staging controls all its own AJAX handlers
45 *
46 * @return bool
47 */
48 protected function isWPStagingAjaxAction(): bool
49 {
50 if (!wp_doing_ajax()) {
51 return false;
52 }
53
54 $ajaxAction = isset($_POST['action']) ? Sanitize::sanitizeString($_POST['action']) : null;
55 return !empty($ajaxAction) && (strpos($ajaxAction, 'wpstg-') === 0 || strpos($ajaxAction, 'wpstg_') === 0);
56 }
57
58 /** @return string */
59 public function getNoticesViewPath()
60 {
61 return $this->noticesViewPath;
62 }
63
64 /**
65 * @return void
66 */
67 public function showAnalyticsModal()
68 {
69 if (get_option(AnalyticsConsent::OPTION_NAME_ANALYTICS_MODAL_DISMISSED)) {
70 return;
71 }
72
73 if (!$this->isWPStagingAdminPage()) {
74 return;
75 }
76
77 // don't show analytics modal on wpstg-install page
78 if ($this->isWpstgInstallPage()) {
79 return;
80 }
81
82 // don't show analytics modal on wpstg-welcome page
83 if ($this->isWpstgWelcomePage()) {
84 return;
85 }
86
87 if (WPStaging::make(AnalyticsConsent::class)->hasUserConsent()) {
88 return;
89 }
90
91 Hooks::doAction(Notices::ACTION_INJECT_ANALYTICS_CONSENT_ASSETS);
92
93 require_once WPSTG_VIEWS_DIR . "notices/analytics-modal.php";
94 }
95
96 /**
97 * @return bool
98 */
99 public function isWpstgInstallPage(): bool
100 {
101 $currentPage = isset($_GET["page"]) ? Sanitize::sanitizeString($_GET["page"]) : null;
102
103 if ($currentPage === 'wpstg-install') {
104 return true;
105 }
106
107 return false;
108 }
109
110 /**
111 * @return bool
112 */
113 public function isWpstgWelcomePage(): bool
114 {
115 $currentPage = isset($_GET["page"]) ? Sanitize::sanitizeString($_GET["page"]) : null;
116
117 return $currentPage === 'wpstg-welcome';
118 }
119
120 /**
121 * Check whether the page is WP Staging clone page
122 * @return bool
123 */
124 public function isWPStagingClonePage(): bool
125 {
126 // Early bail if it is not an WPStaging admin page
127 if (!$this->isWPStagingAdminPage()) {
128 return false;
129 }
130
131 $currentPage = isset($_GET["page"]) ? Sanitize::sanitizeString($_GET["page"]) : null;
132 if ($currentPage !== 'wpstg_clone') {
133 return false;
134 }
135
136 return $currentPage === 'wpstg_clone';
137 }
138 }
139