PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 4.8.0
WP STAGING – WordPress Backup, Restore, Migration & Clone v4.8.0
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 / Frontend / LoginAfterRestore.php
wp-staging / Frontend Last commit date
Frontend.php 5 months ago FrontendServiceProvider.php 11 months ago LoginAfterRestore.php 8 months ago LoginForm.php 1 year ago LoginNotice.php 5 years ago
LoginAfterRestore.php
101 lines
1 <?php
2
3 namespace WPStaging\Frontend;
4
5 use WPStaging\Core\WPStaging;
6 use WPStaging\Framework\Facades\Sanitize;
7 use WPStaging\Framework\Security\AccessToken;
8 use WPStaging\Framework\SiteInfo;
9
10 class LoginAfterRestore
11 {
12 /**
13 * @return void
14 * @see \WPStaging\Frontend\FrontendServiceProvider::registerLoginAfterRestore
15 */
16 public function showMessage()
17 {
18 // Early bail: Not after Restore
19 if (!isset($_GET['wpstgAfterRestore']) || !Sanitize::sanitizeBool($_GET['wpstgAfterRestore'])) {
20 return;
21 }
22
23 // Early bail: No access token
24 if (!isset($_GET['accessToken'])) {
25 return;
26 }
27
28 // Late instantiation, since this runs on the FE on every request
29 /** @var AccessToken $auth */
30 $auth = WPStaging::make(AccessToken::class);
31
32 // Early bail: Invalid access token
33 if (!$auth->isValidToken($_GET['accessToken'])) {
34 return;
35 }
36
37 // Used by loginAfterRestore
38 $adminEmails = $this->getListOfAdminEmails();
39
40 $isRestoredFromWpCom = $this->getIsRestoredFromWpCom();
41 $resetPasswordArticleLink = 'https://wp-staging.com/reset-your-wordpress-admin-password-manually/';
42
43 include WPSTG_VIEWS_DIR . 'frontend/loginAfterRestore.php';
44 }
45
46 /**
47 * @return bool
48 */
49 protected function getIsRestoredFromWpCom(): bool
50 {
51 /** @var SiteInfo */
52 $siteInfo = WPStaging::make(SiteInfo::class);
53 // Should not be shown when restoring wp.com backup on wp.com site
54 if ($siteInfo->isHostedOnWordPressCom()) {
55 return false;
56 }
57
58 if (isset($_GET['wpstgIsBackupCreatedOnWordPressCom']) && Sanitize::sanitizeBool($_GET['wpstgIsBackupCreatedOnWordPressCom'])) {
59 return true;
60 }
61
62 return false;
63 }
64
65 /**
66 * @return string[] List of admin emails
67 */
68 private function getListOfAdminEmails()
69 {
70 $adminEmails = get_users([
71 'role' => 'administrator',
72 'fields' => [
73 'user_email',
74 ],
75 'number' => 10,
76 ]);
77
78 // Early bail: Nothing to show
79 if (!is_array($adminEmails) || empty($adminEmails)) {
80 return [];
81 }
82
83 $adminEmails = array_map(function ($stdClass) {
84 if (is_object($stdClass) && property_exists($stdClass, 'user_email')) {
85 return $stdClass->user_email;
86 }
87
88 return null;
89 }, $adminEmails);
90
91 $adminEmails = array_filter($adminEmails, 'is_email');
92
93 // Early bail: Nothing to show
94 if (empty($adminEmails)) {
95 return [];
96 }
97
98 return $adminEmails;
99 }
100 }
101